mybatis createcriteria和or的区别说明
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 = ? )
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Spring中@ControllerAdvice注解的用法解析
这篇文章主要介绍了Spring中@ControllerAdvice注解的用法解析,顾名思义,@ControllerAdvice就是@Controller 的增强版,@ControllerAdvice主要用来处理全局数据,一般搭配@ExceptionHandler、@ModelAttribute以及@InitBinder使用,需要的朋友可以参考下2023-10-10如何使用Spring integration在Springboot中集成Mqtt详解
MQTT是多个客户端通过一个中央服务器传递信息的多对多协议,能高效地将信息分发给一个或多个订阅者,下面这篇文章主要给大家介绍了关于如何使用Spring integration在Springboot中集成Mqtt的相关资料,需要的朋友可以参考下2023-02-02SpringBoot实现前后端、json数据交互以及Controller接收参数的几种常用方式
这篇文章主要给大家介绍了关于SpringBoot实现前后端、json数据交互以及Controller接收参数的几种常用方式,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2022-03-03Spring-cloud Config Server的3种配置方式
这篇文章主要介绍了Spring-cloud Config Server的3种配置方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-09-09浅谈Java中@Autowired和@Inject注解的区别和使用场景
本文主要介绍了浅谈Java中@Autowired和@Inject注解的区别和使用场景,@Autowired注解在依赖查找方式和注入方式上更加灵活,适用于Spring框架中的依赖注入,而@Inject注解在依赖查找方式上更加严格,适用于Java的依赖注入标准,感兴趣的可以了解一下2023-11-11Spring实战之使用@POSTConstruct和@PreDestroy定制生命周期行为操作示例
这篇文章主要介绍了Spring实战之使用@POSTConstruct和@PreDestroy定制生命周期行为操作,结合实例形式详细分析了Spring使用@POSTConstruct和@PreDestroy定制生命周期相关接口定义、配置与功能实现技巧,需要的朋友可以参考下2019-12-12
最新评论