前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mybatis :Criteria 查询、条件过滤用法

mybatis :Criteria 查询、条件过滤用法

作者头像
微风-- 轻许--
发布2022-04-13 16:13:07
1.4K0
发布2022-04-13 16:13:07
举报
文章被收录于专栏:java 微风java 微风

PS:hibernate 中也有 Criteria 的用法,见另一文章:jpa : criteria 作排除过滤、查询

1. 包:

代码语言:javascript
复制
import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.entity.Example.Criteria;

2. 使用:

代码语言:javascript
复制
    public void getQueryExampleByCondition(Example example, OrderQuery query) {

        Criteria criteria1 = example.createCriteria();

        // 设置 criteria2 与 criteria1 为 or 方式关联
        Criteria criteria2 = example.or(); 
       
        if (query != null) {
            
            if (query.getLoadSrc() != null && query.getLoadSrc() != -1) {
                criteria1.andEqualTo("loadSrc", query.getLoadSrc());
            }
                    
            if (!StringUtil.isEmpty(query.getOrderNo())) {
                criteria1.andLike("orderNo", "%" + query.getOrderNo() + "%");
            }

            // 以下 3 个会用 OR 方式加上 criteria2 中的条件
            if (query.getStatus() != null && query.getStatus() != -1) {
                criteria1.andEqualTo("status", query.getStatus());
                criteria2.andEqualTo("status", query.getStatus());
            }

            if (!StringUtil.isEmpty(query.getRepayDateEnd())) {
                criteria1.andLessThanOrEqualTo("repayDate", query.getRepayDateEnd());
                criteria2.andLessThanOrEqualTo("repayDate", query.getRepayDateEnd());
            }

            if (!StringUtil.isEmpty(query.getLoanDay())) {
                criteria1.andEqualTo("loanDay", query.getLoanDay());
                criteria1.andEqualTo("loanDay", query.getLoanDay());
            }

        }
    }

其中 criteria1 和 criteria2 是 or 的关系。

根据传入参数不同,执行 sql 效果类似:

代码语言:javascript
复制
SELECT * FROM xxxx WHERE (load_type = 5 AND loan_day = 7) OR (order_No = 5) 

where 后面第一个圆括号中的条件组合 load_type = 5 AND loan_day = 7 是 criteria1中的条件,

第二个圆括号中的条件 order_No = 5 是 criteria2 中的条件设置。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-12-05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档