关于mybatis物理分页的问题,求大神帮忙看看 100
这个是我的Dao定义的分页方法,返回的不是List数据这个是对应的sql返回的是一个Paging对象,里面包含了这些信息。我现在想做一个通用的mybatis物理分页实现,...
这个是我的Dao定义的分页方法,返回的不是List数据
这个是对应的sql
返回的是一个Paging对象,里面包含了这些信息。
我现在想做一个通用的mybatis物理分页实现,就是在mapper映射文件里面不写数据库分页语句,写拦截器,去拦截需要进行分页操作的sql,重组成分页的sql,再把结果返回。
这个是求出总记录数的sql:SELECT COUNT(1) AS totalCount FROM (select t.user_id as userId, t.real_name as realName, t.id_card as idCard from sys_user as t where 1 = 1) totalQuery
这个是分页的sql:select t.user_id as userId, t.real_name as realName, t.id_card as idCard from sys_user as t where 1 = 1 limit 10, 10
我就是在返回数据的时候,遇到错了这个错:
org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 10 展开
这个是对应的sql
返回的是一个Paging对象,里面包含了这些信息。
我现在想做一个通用的mybatis物理分页实现,就是在mapper映射文件里面不写数据库分页语句,写拦截器,去拦截需要进行分页操作的sql,重组成分页的sql,再把结果返回。
这个是求出总记录数的sql:SELECT COUNT(1) AS totalCount FROM (select t.user_id as userId, t.real_name as realName, t.id_card as idCard from sys_user as t where 1 = 1) totalQuery
这个是分页的sql:select t.user_id as userId, t.real_name as realName, t.id_card as idCard from sys_user as t where 1 = 1 limit 10, 10
我就是在返回数据的时候,遇到错了这个错:
org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 10 展开
2个回答
展开全部
原因在这句异常:
org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 10
你使用了selectOne方法,这个方法返回一条数据,但是你的find中查询出了10条数据,这块改一下就好了
org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 10
你使用了selectOne方法,这个方法返回一条数据,但是你的find中查询出了10条数据,这块改一下就好了
更多追问追答
追问
这个我知道,因为我的Dao接口返回的不是List集合,就是一个Paging对象,这个对象里面包含了结果集List resultList;我是想把这个查询的结果放到里面去,像总记录数、总页数这些信息都在里面,返回的时候就返回一个Paging对象
追答
结果集就应该返回集合类型,你如果想拼装Page对象,应该在Dao里面写,这个Count方法应该提出来,比如
public long findCount(final String ql, final Object... values) throws Exception {
Long result = null;
if (values != null) {
for (int i = 0; i < values.length; i++) {
result = (Long) getSqlSession().selectOne(sqlMapNamespace + "." + ql, values[i]);
}
} else {
result = (Long) getSqlSession().selectOne(sqlMapNamespace + "." + ql);
}
return result.longValue();
}
public Page<T> find(final Page<T> page, final T entity) throws Exception {
RowBounds rowBounds = new RowBounds((page.getPageNo() - 1) * page.getPageSize(), page.getPageSize());
page.setResult(getSqlSession().selectList(sqlMapNamespace + "." + POSTFIX_SELECTPAGE, entity, rowBounds));
page.setTotalCount(findCount(POSTFIX_SELECTPAGE_COUNT, entity));
return page;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询