• 工作笔记—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;
        }
    复制代码

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

  • 相关阅读:
    C#零相位数字滤波器,改写自Matlab函数filtfilt
    [收藏]C语言格式化字符串
    C#调用PMAC运动控制卡的pcomm32动态链接库的数据类型转换
    [收藏]常见逻辑电平标准
    主要软件作品展示
    新一年希望做的事情
    单元测试的思维导图
    SQLite简单教程
    关于动态执行SQL Statement on ISeries
    突然发现一个 IBM.Data.DB2.ISeries的一个小问题,也是很头痛的问题
  • 原文地址:https://www.cnblogs.com/sharpest/p/11078614.html
Copyright © 2020-2023  润新知