博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mybatis example处理and、or关系的方法
阅读量:6567 次
发布时间:2019-06-24

本文共 1527 字,大约阅读时间需要 5 分钟。

hot3.png

1.( xx and xx) or ( xx and xx) 

实例代码:

BaUserExample baUserExample = new BaUserExample();

 
Criteria criteria1 = baUserExample.createCriteria();
criteria1.andOrgIdEqualTo("1");
criteria1.andDeptIdEqualTo("1");
            
Criteria criteria2 = baUserExample.createCriteria();
criteria2.andUserNameEqualTo("name");
criteria2.andEmailLike("%test@%");
            
baUserExample.or(criteria2);
 
userMapper.countByExample(baUserExample);

执行的sql语句:

==>  Preparing: select count(*) from ba_user WHERE ( org_id = ? and dept_id = ? ) or( user_name = ? and email like ? )

2.xx and ( xx or xx)

暂时没找到直接的sql语句构造方法,但是经过转换还是可以实现的

根据逻辑表达式可以知道 a and ( b or c ) = ( a and b) or ( a and c )

所以就转变成第一种方法

举个例子,假如想要实现 select count(*) from ba_user WHERE userName like ? and ( dept_id is null or dept_id <>? )

可以转化为select count(*) from ba_user WHERE (userName like ? and  dept_id is null ) or ( userName like ? and  dept_id <>? )

实例代码:

BaUserExample baUserExample = new BaUserExample();

 
Criteria criteria1 = baUserExample.createCriteria();
criteria1.andUserNameLike("%name%");
criteria1.andDeptIdIsNull();
            
Criteria criteria2 = baUserExample.createCriteria();
criteria2.andUserNameLike("%name%");
criteria2.andDeptIdNotEqualTo("1");
            
baUserExample.or(criteria2);
 
userMapper.countByExample(baUserExample);

执行的sql语句:

==>  Preparing: select count(*) from ba_user WHERE ( user_name like ? and dept_id is null ) or( user_name like ? and dept_id <> ? ) 

这算是一种取巧的方法吧,对于这样的问题可以自己编写mapper.xml文件,或者在代码里面过滤,还有一种思路就是修改Criteria的代码实现and和or功能调换(还没尝试过)。

 

转载于:https://my.oschina.net/xiaominmin/blog/2885314

你可能感兴趣的文章
php采集 纠正一下
查看>>
phalcon遇到的那些坑
查看>>
华为领跑高端市场背后:聚焦与创新连接未来
查看>>
Java类的连接与初始化 (及2013阿里初始化笔试题解析)
查看>>
unity优化笔记
查看>>
haproxy+keepalived应用实战
查看>>
linux
查看>>
Lync2013 恢复-整残之后如何重新安装
查看>>
SSO 单点登录会话管理
查看>>
jpa查询记录重复
查看>>
mysql-事物实现原理
查看>>
上下滚动播报特效
查看>>
iOS 隐藏导航栏整个视图上移闪屏问题
查看>>
12cR2 RAC+RAC+ADG ORA-16854
查看>>
数组名和数组名取地址的区别
查看>>
某企业WSUS服务实例介绍
查看>>
准IT工作者如何择师、如何学习
查看>>
redis主从复制故障转移
查看>>
2011,我的IT我的梦
查看>>
KVM虚拟化实践(一)
查看>>