MyBatis使用or关键字进行数据查询

背景:今天做的一个数据查询sql里,需要一个这样的语句 select * from activity where ((startDate BETWEEN '2015-05-25' and '2015-06-02') or (endDate between '2015-05-25' and '2015-06-02')) and providerId= 1; 由于项目用的是MyBatis,经过网上的一番查找,下面贴下解决方案 ActivityCriteria activityCriteria = new ActivityCriteria(); ActivityCriteria.Criteria criteria= activityCriteria.createCriteria(); criteria.andStartDateBetween(startTime, endTime); criteria.andProviderIdEqualTo(providerId);

ActivityCriteria.Criteria criteria2 = activityCriteria.createCriteria(); criteria2.andEndDateBetween(startTime, endTime); criteria2.andProviderIdEqualTo(providerId); activityCriteria.or(criteria2); List<Activity> result = activityMapper.selectByExample(activityCriteria); 关键是要通过or将两个条件连接起来,其中需要注意的是,对于公共的条件(例子中的providerId=1),需要在两个条件的Criteria都拼接上去,不然查询语句是有问题的 看MyBatis刷出来的查询日志是酱紫的 select 'true' as QUERYID, Id, title, subject, content, address, display, Url, order, probability, providerId, isMain, startDate, endDate, serve_id, branch_id from activity WHERE ( startDate between ? and ? and providerId = ? ) or( endDate between ? and ? and providerId = ? )

转载于:https://my.oschina.net/dreyer/blog/520559

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值