beeltsql 分页问题
由于sql文件关联得太多,就写在了sql文件中,我贴代码,
public void index() {
String sxxc = getPara("selectOneSxcx", " ");
keepPara();
Map<String, String> paramMap = new HashMap<String, String>();
paramMap.put("selectOneSxcx", sxxc);
SQLResult sqlret = SqlModel.getSQLResult("sxcx.selectOneSxcx", paramMap);
setAttr("page", ScSlswsxlx.dao.find(sqlret.jdbcSql));
//PageQuery query = new PageQuery();
//SQLManager sql = sql.pageQuery("sxcx.selectOneSxcx", DmSxlx.class,query);
//SQLManager sql=sql.pageQuery("user.queryNewUser", User.class,query);
setAttr("info", "");
}
这里需要分页,但是如果用普通paginate是不好带值,看文档,但是关键地方没找到那个值是怎么来的,
sql文件代码如下:
selectOneSxcx
===
select (t1.sxzs - t2.yjfs) as qszlzs,
round((t1.sxzs - (t1.sxzs - t2.yjfs))/t1.sxzs)*100||'%' as zz ,t1.*,t2.*
from (
select x.gljg_mc,x.glry_mc,x.id,count(l.sxmc)
sxzs,x.sljg_dm from SC_SLSWSX x
right join SYS_ORG org on x.sljg_dm=org.id
right join SC_SLSWSXLX l
on x.ywls=l.ywls
group by x.gljg_mc,x.glry_mc,x.id,x.sljg_dm
) t1
left join (select sc.gljg_mc,sc.glry_mc,count(res.zlmc) yjfs
from SC_SLSWSX sc left join SC_SLSWSX_PC pc on sc.ywls=pc.ywls
left join SC_SLSWSX_RES res on pc.pcls=res.pcls
group by sc.gljg_mc,sc.glry_mc) t2 on t1.glry_mc=t2.glry_mc
在贴一下文档的问题,我看得不懂:
3.3. 翻页查询API
• public <T> void pageQuery(String sqlId,Class<T> clazz,PageQuery query)
BeetlSQL 提供一个PageQUery对象,用于web应用的翻页查询,BeetlSql假定有sqlId 和sqlId
$count,俩个sqlId,并用这来个来翻页和查询结果总数.如:
9
BeetlSQL User Guide
queryNewUser
===
select * from user order by id desc ;
queryNewUser$count
===
select count(1) from user
大部分情况下,都不需要2个sql来完成,一个sql也可以,要求使用page函数或者pageTag标签,这
样才能同时获得查询结果集总数和当前查询的结果
queryNewUser
===
select
@pageTag(){
a.*,b.name role_name
@}
from user a left join b ...
如上sql,会在查询的时候转为俩条sql语句
select count(1) from user a left join b...
select a.*,b.name role_name from user a left join b...
如果字段较多,为了输出方便,也可以使用pageTag,字段较少,用page函数也可以. ,具体参考
pageTag和page函数说明.翻页代码如下
//从第一页开始查询,无参数
PageQuery query = new PageQuery();
sql.pageQuery("user.queryNewUser", User.class,query);//这里的sql.不知道是从哪里冒出来的,求解决
System.out.println(query.getTotalPage());
System.out.println(query.getTotalRow());
System.out.println(query.getPageNumber());
List<User> list = query.getList();
PageQuery 对象也提供了 orderBy属性,用于数据库排序,如 "id desc"
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
user.queryNewUser 是定义在sql文件里的,默认会查找user.queryNewUser 作为数据查询,
user.queryNewUser$count, 作为总数查询,也可以只提供一个sql语句,使用page函数或者标签,也行