mybatis createcriteria和or的区别说明
作者:QQ_851228082 时间:2021-09-27 09:20:40
createcriteria和or的区别
mybatis generator插件生成的example中,有createcriteria和or方法,他们有什么区别呢?
通过源码,能很清楚的看出差别
createcriteria,当没有规则时,则加入到现有规则,但有规则时,不再加入到现有规则,只是返回创建的规则
public Criteria createCriteria() {
Criteria criteria = createCriteriaInternal();
if (oredCriteria.size() == 0) {
oredCriteria.add(criteria);
}
return criteria;
}
or,创建的规则,加入到规则集中,并且是or的关系
public Criteria or() {
Criteria criteria = createCriteriaInternal();
oredCriteria.add(criteria);
return criteria;
}
mybatis中Example的and和or
能用Example代码解决的,我都不会去写个SQL放在项目里。我希望让代码尽量优雅、易读,所以这里记录一下关于MyBatis中Example的and和or的使用,主要是如下两种场景:
where (条件1 and 条件2) or (条件3 and 条件4)
where (条件1 and 条件2) and (条件3 or 条件4)
where (条件1 and 条件2) or (条件3 and 条件4)
//条件1 and 条件2
example.createCriteria()
.andEqualTo("isDeleted",IsDeleted.NOT_DELETED)
.andEqualTo("name", projectCatalogEntity.getName());
//or (条件3 and 条件4)
example.or(example.createCriteria()
.andEqualTo("isDeleted",IsDeleted.NOT_DELETED)
.andEqualTo("code", projectCatalogEntity.getCode()));
WHERE ( is_deleted = ? and name = ? ) or ( is_deleted = ? and code = ? )
where (条件1 and 条件2) and (条件3 or 条件4)
//条件1 and 条件2
example.createCriteria()
.andEqualTo("isDeleted",IsDeleted.NOT_DELETED))
.andEqualTo("parentId", projectCatalogEntity.getParentId());
//and (条件3 or 条件4)
example.and(example.createCriteria()
.andEqualTo("name", projectCatalogEntity.getName())
.orEqualTo("code", projectCatalogEntity.getCode()));
WHERE ( is_deleted = ? and parent_id = ? ) and ( name = ? or code = ? )
来源:https://blog.csdn.net/wangjun5159/article/details/53325540
标签:mybatis,createcriteria,or
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
JAVA读取属性文件的几种方法总结
2023-10-21 04:36:40
Java使用Thread和Runnable的线程实现方法比较
2021-11-17 07:52:54
C++中求余运算符(%)示例详解
2023-11-02 14:20:39
C#中添加窗口的步骤详解
2021-12-19 16:30:29
![](https://img.aspxhome.com/file/2023/6/91256_0s.jpg)
maven <repositories>标签和<pluginRepositories>标签的使用
2022-09-26 01:06:33
最常用的1000个Java类(附代码示例)
2023-03-25 20:29:07
Java通过匿名类来实现回调函数实例总结
2023-06-26 12:30:42
java线程间通信的通俗解释及代码示例
2023-12-06 18:04:43
C#中方法的详细介绍
2023-08-06 12:31:21
Apache SkyWalking 修复TTL timer 失效bug详解
2023-08-18 08:09:53
![](https://img.aspxhome.com/file/2023/5/58155_0s.png)
详解C#中三个关键字params,Ref,out
2021-09-25 18:54:02
![](https://img.aspxhome.com/file/2023/1/104261_0s.png)
c# 基于wpf,开发OFD电子文档阅读器
2023-09-08 00:10:02
![](https://img.aspxhome.com/file/2023/9/88419_0s.png)
Spring JPA之find拓展方法示例详解
2021-12-11 03:50:49
JavaEE7+Websockets+GlassFish4打造聊天室
2023-11-29 01:01:39
![](https://img.aspxhome.com/file/2023/6/60396_0s.jpg)
Java序列化和反序列化示例介绍
2023-11-25 04:24:26
Java应用程序开发学习之static关键字应用
2021-12-20 13:23:41
![](https://img.aspxhome.com/file/2023/8/75708_0s.png)
SpringBoot处理接口幂等性的两种方法详解
2021-12-23 10:32:32
Mybatis Interceptor 拦截器的实现
2022-11-02 05:05:44
JAVA JDK8 List分组的实现和用法
2023-11-26 09:56:11
Android编程之DatePicker和TimePicke简单时间监听用法分析
2022-07-04 00:42:24
![](https://img.aspxhome.com/file/2023/0/106040_0s.jpg)