NutzCN Logo
精华 无pojo情况下,自定义SQL的分页查询,返回QueryResult对象。
发布于 3241天前 作者 qq_45f00940 2489 次浏览 复制 上一个帖子 下一个帖子
标签: dao

今天正好遇到这个问题,向wendal请教后写了出来,也分享给同样遇到此问题的人。

public QueryResult findPaginationBySqls(String sqls, int page, int size){
        //定义分页
        Pager pager = dao.createPager(page, size);

        //回调查询
		Sql sql = Sqls.create(sqls);
		sql.setCallback(Sqls.callback.records());
		sql.setEntity(dao.getEntity(Record.class));
		sql.setPager(pager);
		dao.execute(sql);
        List<Record> list = sql.getList(Record.class);

        //封装QueryResult对象
        Long counts = Daos.queryCount(dao,sqls);
        pager.setRecordCount(Integer.parseInt(counts.toString()));
        return new QueryResult(list,pager);
    }
15 回复

Long可以转int的

pager.setRecordCount(counts.intValue());

Long counts = Daos.queryCount(dao,"select m.* from T_MATERIEL m join BASE_ORG o on m.orgPk=o.orgPk where m.orgPk=@orgPk");
这里的orgPk怎么传入啊

Daos.queryCount的参数只有String sql,木有参数.

用Sqls.fetchInt不是更好吗?

@wendal 这里能传参数么Sqls.fetchInt(string sql)啊

  • Sql s=Sqls.fetchInt("select m.* from T_MATERIEL m join BASE_ORG o on m.orgPk=o.orgPk where m.orgPk=@orgPk");
  • pager.setRecordCount(s.getInt());
    这样写么

@qq_39c32e91 看自定义sql的文档

@wendal 这个getint我获取到的好像是第一例主键的数值啊?
我怎么得到查询出来的多少条数据勒?

  1. @wendal // 设置分页信息
    Pager pager = dao.createPager(pageCurrent, pageSize);
    sql.setPager(pager);
    Number i=dao.execute(sqlCount).getNumber();
    pager.setRecordCount(i.intValue());

select count(1) from xxx

总记录数需要再查一次,用带count的sql

@wendal 具体那个接口呢 大神

Sql sql = Sql.queryRecord("select m.* from xxxxxxxx where id=@Id");
sql.params().set("id", 1234);
dao.execute(sql);
List<Record> list = sql.getList(Record.class);

Sql countSql = Sql.fetchInt("select count(1) from where id=@id"); // 带count的sql
countSql.params().putAll(sql.params());  // 重用参数
dao.execute(countSql);
int count = countSql.getInt();
Sql countSql = Sql.fetchInt("select count(1) from where id=@id"); // 带count的sql
这里的where后面不用接东西么

where后面,喜欢啥就写啥, 我只是列出2条sql表达意思

添加回复
请先登陆
回到顶部