发现一个怪现象,同样的代码,就是切换一个数据源,第一页(首页)都是正常的,但是第二页开始分页效果达不到预期,第二页往后只显示一条数据。
场景是按每页20行数据获取数据
首先,这个在mysql数据库是正常的,生成的sql是第一页
select * from tablename limit 0,20
第二页
select * from tablename limit 20,20
debug跟了返回结果和显示是正常的。
debug跟的:
第一页:
dao.execute(sql)前pager是:size:20, total: 0, page: 1/0 (pageCount=0, pageNumber=1, pageSize=20, recordCount=0)
dao.execute(sql)后pager是:size:20, total: 0, page: 1/0 (pageCount=0, pageNumber=1, pageSize=20, recordCount=0)
第二页:
dao.execute(sql)前pager是:size:20, total: 0, page: 2/0 (pageCount=0, pageNumber=2, pageSize=20, recordCount=0)
dao.execute(sql)后pager是:size:20, total: 0, page: 2/0 (pageCount=0, pageNumber=2, pageSize=20, recordCount=0)
但是切换到hive2,数据表结构一模一样,就是数据源切换了一下,
生成的sql第一页
select * from tablename limit 0,20
第二页
select * from tablename limit 20,20
第一页显示正常,第二页开始往后只第一条,然后单独拿这个sql去手工查询数据库,返回的是20条记录。
debug跟的:
第一页:
dao.execute(sql)前pager是:size:20, total: 0, page: 1/0 (pageCount=0, pageNumber=1, pageSize=20, recordCount=0)
dao.execute(sql)后pager是:size:20, total: 20, page: 1/1 (pageCount=1(红色字体), pageNumber=1, pageSize=20, recordCount=20(红色字体))
第二页:
dao.execute(sql)前pager是:size:20, total: 0, page: 2/0 (pageCount=0, pageNumber=2, pageSize=20, recordCount=0)
dao.execute(sql)后pager是:size:20, total: 20, page: 2/1 (pageCount=1(红色字体), pageNumber=2, pageSize=20, recordCount=20(红色字体))
唯一找到的规律是,mysql的sql执行前后pager对象不变,hive2的sql执行后pager对象属性变了。
因为hive2的基本语法和mysql一样,所以默认用的是mysql的JdbcExpert。
不知道这个怎么修改呢?jdbc驱动包的问题吗?