关于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
展开
 我来答
非鱼共享
2014-11-12 · 专注互联网技术,快速了解互联网研发
非鱼共享
采纳数:204 获赞数:695

向TA提问 私信TA
展开全部
原因在这句异常:
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;
}
百度网友0adf2dfc62
2014-11-12 · TA获得超过578个赞
知道小有建树答主
回答量:553
采纳率:50%
帮助的人:215万
展开全部
你是不是用了selectOne方法
更多追问追答
追问
不是我用了,框架自己调用的,我现在想的是怎么避免mybatis去调用这个操作,而是按照我自己的需求,去把总记录数、总页数、当前页、查询出的结果集封装到一个对象中,并返回。就是我想这步操作由我自己去做,而不是mybatis去做
追答
你把分页的那段调用代码贴出来看一下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式