NutzCN Logo
问答 结合QueryResult,Record 自定义分页查询,不构建pojo 整合的。- -,哪里还能在优化下
发布于 3293天前 作者 qq_c6efc20e 2611 次浏览 复制 上一个帖子 下一个帖子
标签: dao
	public QueryResult getHistoryIncome(int d, int curPage)
			throws Exception {
			/**sql**/
		Sql sql = Sqls.create("select a,b,c from A where d=@d ")
				.setParam("d", d);
		  /**查询个数**/		
		Sql sqlcount = Sqls.create("SELECT count(*)as number FROM mytask t WHERE d = @d")
				.setParam("d", d);
		sqlcount.setCallback(Sqls.callback.entity());
		sqlcount.setEntity(dao.getEntity(Record.class));
		dao.execute(sqlcount);
		Record countRecord=(Record) sqlcount.getResult();
		long count=(long) countRecord.get("number");
		
		if(curPage==0){
			curPage=1;
		}
		Pager pager=dao.createPager(curPage, 10);
		pager.setRecordCount((int) count);
		sql.setPager(pager);
		/**列表**/
	    sql.setCallback(Sqls.callback.entities());
	    Entity<Record> entity = dao.getEntity(Record.class);
	    sql.setEntity(entity);
	    dao.execute(sql);
	    return  new QueryResult(sql.getList(Record.class), pager);
	}

取出列表信息:
QueryResult对象.getList(Record.class);
取出分页信息
QueryResult对象.getPager();

3 回复
        if(curPage<=0){
            curPage=1;
        }
        Sql sqlCount = Sqls.fetchInt("select count(*) from xxx ").setParam("abc", 123);
        Pager pager=dao.createPager(curPage, 10);
        pager.setRecordCount(dao.execute(sqlCount).getInt());
        
        /**sql**/
        Sql sql = Sqls.queryRecord("select a,b,c from A where d=@d ").setParam("d", d);
        sql.setPager(pager);
        /**列表**/
        dao.execute(sql);
        return  new QueryResult(sql.getList(Record.class), pager);

Sqls有大量帮助方法。

@wendal /**
dao.execute(sqlCount).getInt()
* 无结果的话,会抛NPE
*
* @return 将结果对象作为 int 返回
*/
int getInt();这个要是没有结果的话会抛出异常,是try cath 处理掉好,还是有更好的解决方案。

count的话总有结果吧? 或者getNumber(), 判断后赋值

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