zoukankan      html  css  js  c++  java
  • 工作笔记—hibernate之QueryCriteria

    转自:https://www.cnblogs.com/jack4738/p/9178394.html

    本人用的是sg-uap虚拟环境

    复制代码
    //查询方法
    //参数 RequestCondition 配合 controller 的 @QueryRequestParam注解可以将前台传入整个对象进行接收
    //参数 UserSession 当前登录的用户信息 
    //obj 实体类
        public QueryResultObject query(RequestCondition queryCondition,UserSession userSession){
            
            QueryCriteria qc = new QueryCriteria;
            //查询集合
            List<obj> result = null;
            //查询记录总数
            int count = 0;
            //查询条件
            qc.addWhere("","数据库字段名","=","值");
            //查询表
            qc.addFrom(obj.class)
            //其他的判断条件
            if(queryCondition != null){
                //添加其他查询条件
                qc = wrapQuery(queryCondition,qc);
                //获取总记录数
                count = getRecordCount(qc);
                //添加分页信息
                qc = wrapPage(queryCondition,qc);
                result = hibernateDao.findAllByCriteria(qc);
            }else{
                result = hibernateDao.findAllByCriteria(qc);
                count = getRecordCount(qc);
            }
            return 封装对象返回
        }
        public QueryCriteria wrapQuery(QueryCriteria qc,RequestCondition queryCondition ){
    
            List<QueryFilter> wheres = queryCondition.getQueryFilter(obj.class);
            if(wheres != null && wheres.size() > 0){
                //模糊查询
                for(int i = 0;i<wheres.size();i++){
                    QueryFilter q = wheres.get(i);
                    if("对象属性".equals(q.getFieldName)){
                        //设置此属性的模糊查询
                        q.setOperator("^");
                    }
                    //排序
                    qc.addOrder("排序字段","排序规则");
                    //构造查询where语句
                    CrudUtils.addQCWhere(qc,Wheres,Obj.class.getName());
                }
                String orders = queryCondition.getSorter();
                //替换分隔符构建排序语句
                if(orders != null){
                    qc.addOrder(Order.replaceAll("&",","))
                }
                    return qc;
        }
    
        public QueryCriteria wrapPage(QueryCriteria qc,RequestCondition queryCondition ){
            int pageIndex = 1,pageSize = 1;
            if(queryCondition.getPageIndex() != null&&queryCondition.getPageSize() != null){
                pageIndex=queryCondition.getPageIndex();
                pageSize=queryCondition.getPageSize();
                qc.addPage(pageIndex,pageSize);
            }
            return qc;
        }
    复制代码

    一个简单的模糊+分页查询

  • 相关阅读:
    海龟交易
    暑假攻略:怎样让孩子过一个充实又省钱的假期
    值得追随
    在哪里能找的你想要的答案?
    顺势加仓策略
    交易中 你的加仓策略是怎样的?背后的逻辑是什么?
    驻守深寒:寻找那些有效地关键K线
    统计相关
    求助Ubuntu16.10如何设置默认启动为字符界面
    【Linux系列】Ubuntu ping通,xshell无法连接
  • 原文地址:https://www.cnblogs.com/sharpest/p/11078614.html
Copyright © 2011-2022 走看看