mybatis createcriteria和or的区别说明

 更新时间:2021年07月22日 08:38:15   作者:QQ_851228082  
这篇文章主要介绍了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 = ? )

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 树莓派.GPRS.短信接收器

    树莓派.GPRS.短信接收器

    这篇文章主要介绍了树莓派.GPRS.短信接收器的相关知识,需要的朋友可以参考下
    2017-10-10
  • 解决RedisTemplate存储至缓存数据出现乱码的情况

    解决RedisTemplate存储至缓存数据出现乱码的情况

    这篇文章主要介绍了解决RedisTemplate存储至缓存数据出现乱码的情况,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Mybatis拦截器注解@Intercepts与@Signature注解使用

    Mybatis拦截器注解@Intercepts与@Signature注解使用

    本文主要介绍了Mybatis拦截器注解@Intercepts与@Signature注解使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-07-07
  • Java中Socket下载一个文本文件

    Java中Socket下载一个文本文件

    这篇文章主要介绍了Socket下载一个文本文件的实例代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-06-06
  • SpringBoot 多线程事务回滚的实现

    SpringBoot 多线程事务回滚的实现

    本文是基于springboot的@Async注解开启多线程,并通过自定义注解和AOP实现的多线程事务,避免繁琐的手动提交/回滚事务,感兴趣的可以了解一下
    2024-02-02
  • JavaWeb组件Servlet使用实例解析

    JavaWeb组件Servlet使用实例解析

    这篇文章主要介绍了JavaWeb组件Servlet使用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • java实现Object和Map之间的转换3种方式

    java实现Object和Map之间的转换3种方式

    本篇文章主要介绍了java实现Object和Map之间的转换3种方式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • springboot 接收LocalDateTime方式

    springboot 接收LocalDateTime方式

    这篇文章主要介绍了springboot 接收LocalDateTime方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • java实现创建缩略图、伸缩图片比例生成的方法

    java实现创建缩略图、伸缩图片比例生成的方法

    这篇文章主要介绍了java实现创建缩略图、伸缩图片比例生成的方法,可实现针对图片大小的缩放功能,是Java针对图片操作的典型应用,需要的朋友可以参考下
    2014-11-11
  • Java8新特性stream和parallelStream区别

    Java8新特性stream和parallelStream区别

    这篇文章主要介绍了Java8新特性stream和parallelStream区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11

最新评论