private int _count(Entity<?> en, String tableName, Condition cnd) { // 如果有条件的话 if (null != cnd) { Pojo pojo = pojoMaker.makeFunc(tableName, "COUNT", "*"); pojo.setEntity(en); // 高级条件接口,直接得到 WHERE 子句 if (cnd instanceof Criteria) { pojo.append(((Criteria) cnd).where()); } // 否则暴力获取 WHERE 子句 else { String str = Pojos.formatCondition(en, cnd); if (!Strings.isBlank(str)) { String[] ss = str.toUpperCase().split("ORDER BY"); pojo.append(Pojos.Items.wrap(str.substring(0, ss[0].length()))); } } // 设置回调,并执行 SQL pojo.setAfter(_pojo_fetchInt); _exec(pojo); return pojo.getInt(); } // 没有条件,直接生成表达式 return func(tableName, "COUNT", "*"); }
public void formatQuery(Pojo pojo) { Pager pager = pojo.getContext().getPager(); // 需要进行分页 if (null != pager && pager.getPageNumber() > 0) { // 之前插入 pojo.insertFirst( Pojos.Items.wrap( "SELECT * FROM (" + "SELECT ROW_NUMBER() OVER() AS ROWNUM, " + "T.* FROM (")); // 之后插入 pojo.append( Pojos.Items.wrapf( ") T) AS A WHERE ROWNUM BETWEEN %d AND %d", pager.getOffset() + 1, pager.getOffset() + pager.getPageSize())); } }
public void formatQuery(Pojo pojo) { Pager pager = pojo.getContext().getPager(); // 需要进行分页 if (null != pager && pager.getPageNumber() > 0) pojo.append(Pojos.Items.wrapf(" LIMIT %d OFFSET %d", pager.getPageSize(), pager.getOffset())); }