MyBatis反向生成Example类的使用方式

 更新时间:2021年12月14日 15:19:07   作者:weixin_39477597  
今天小编就为大家分享一篇MyBatis反向生成Example类的使用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

MyBatis反向生成Example类使用

一、逆向工程

MyBatis的逆向工程不仅仅可以生成和表相对应的实体类还可以根据数据库种的表自动生成Example类,我们可以用Example类

实现条件增删改查而不用自己再去写sql语句。

二、Example类的生成

只要在generatorConfig.xml 文件中用表名生成对应的实体类时将生成Example的信息都变为true即可。

        <table tableName="user"
            enableCountByExample="true"
           enableUpdateByExample="true"
           enableDeleteByExample="true"
           enableSelectByExample="true"
            selectByExampleQueryId="false"
        </table>

三、Example类的使用

打开一个Exapmle类我们会看到以下几个成员

protected String orderByClause; 
protected Integer start; 
protected Integer length; 
protected boolean distinct; 
protected List<Criteria> oredCriteria; 
  • orderByClause:用于指定ORDER BY条件,这个条件没有构造方法,直接通过传递字符串值指定。
  • startlength:是分页时用来指定查询第几条数据到第几条数据的。
  • distinct:是用来指定是否要去重查询的,true为去重,false不去重。
  • oredCriteriia:是用来指定查询条件的。

逆向工程生成的文件XxxExample.java中包含一个static 的内部类 Criteria ,在Criteria中有很多方法,主要是定义SQL 语 句where后的查询条件。

四、使用方法

在service种可以这么写

//指定要进行去重查询
  userBankCardExample.setDistinct(true);
  //指定查询条件
  userBankCardExample.createCriteria().andUserIdEqualTo(iptUserBankCard.getUserId());
  //调用查询方法
  List<UserBankCard> userBankCadList = userBankCardDao.selectByExample(userBankCardExample);

注意:在调用upateExample()是更新所有字段,包括字段为null的也更新,建议使用 updateByExampleSelective()更新想更新的字段

MyBatis逆向工程生成Example类的方法总结

很早之前就在项目开发中多次使用MyBatis逆向工程生成的Example类,但一直没有对其下的方法做一个简单的总结,现总结如下:

一、mapper接口中的方法解析

mapper接口中的部分常用方法及功能如下:

方法 功能说明
int countByExample(UserExample example) thorws SQLException 按条件计数
int deleteByPrimaryKey(Integer id) thorws SQLException 按主键删除
int deleteByExample(UserExample example) thorws SQLException 按条件删除
String/Integer insert(User record) thorws SQLException 插入数据(返回值为ID)
User selectByPrimaryKey(Integer id) thorws SQLException 按主键查询
ListselectByExample(UserExample example) thorws SQLException 按条件查询
ListselectByExampleWithBLOGs(UserExample example) thorws SQLException 按条件查询(包括BLOB字段)。只有当数据表中的字段类型有为二进制的才会产生
int updateByPrimaryKey(User record) thorws SQLException 按主键更新
int updateByPrimaryKeySelective(User record) thorws SQLException 按主键更新值不为null的字段
int updateByExample(User record, UserExample example) thorws SQLException 按条件更新
int updateByExampleSelective(User record, UserExample example) thorws SQLException 按条件更新值不为null的字段

二、Example类解析

mybatis的逆向工程中会生成实体类及实体类对应的example类,example类用于添加条件,相当where后面的部分。

xxxExample example = new xxxExample(); 
Criteria criteria = new Example().createCriteria();

example类中的部分常用方法及功能如下:

方法 功能说明
example.setOrderByClause(“字段名 ASC”); 添加升序排列条件,DESC为降序
example.setDistinct(false) 去除重复,boolean型,true为选择不重复的记录
criteria.andXxxIsNull 添加字段xxx为null的条件
criteria.andXxxIsNotNull 添加字段xxx不为null的条件
criteria.andXxxEqualTo(value) 添加xxx字段等于value条件
criteria.andXxxNotEqualTo(value) 添加xxx字段不等于value条件
criteria.andXxxGreaterThan(value) 添加xxx字段大于value条件
criteria.andXxxGreaterThanOrEqualTo(value) 添加xxx字段大于等于value条件
criteria.andXxxLessThan(value) 添加xxx字段小于value条件
criteria.andXxxLessThanOrEqualTo(value) 添加xxx字段小于等于value条件
criteria.andXxxIn(List<?>) 添加xxx字段值在List<?>条件
criteria.andXxxNotIn(List<?>) 添加xxx字段值不在List<?>条件
criteria.andXxxLike(“%”+value+”%”) 添加xxx字段值为value的模糊查询条件
criteria.andXxxNotLike(“%”+value+”%”) 添加xxx字段值不为value的模糊查询条件
criteria.andXxxBetween(value1,value2) 添加xxx字段值在value1和value2之间条件
criteria.andXxxNotBetween(value1,value2) 添加xxx字段值不在value1和value2之间条件

注:在mybatis逆向工程生成的文件XxxExample.java中包含一个static的内部类Criteria,Criteria中的方法是定义SQL 语句where后的查询条件。

三、小结一下

XxxExample.java只能实现简单条件增删改查,复杂的功能还需要自己编写sql代码来实现。

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

相关文章

  • SpringBoot单元测试框架Mockito介绍及使用

    SpringBoot单元测试框架Mockito介绍及使用

    与集成测试将系统作为一个整体测试不同,单元测试更应该专注于某个类。所以当被测试类与外部类有依赖的时候,尤其是与数据库相关的这种费时且有状态的类,很难做单元测试。但好在可以通过“Mockito”这种仿真框架来模拟这些比较费时的类,从而专注于测试某个类内部的逻辑
    2023-01-01
  • mybatis-plus使用generator实现逆向工程

    mybatis-plus使用generator实现逆向工程

    mybatis-plus-generator在3.5.0以及以后的版本使用新的方式逆向生成代码,本文主要介绍了mybatis-plus使用generator实现逆向工程,具有一定的参考价值,感兴趣的可以了解一下
    2022-05-05
  • 对Java接口进行幂等性控制的三种方法

    对Java接口进行幂等性控制的三种方法

    在做分布式系统、支付系统、电商秒杀等实际项目中,我们经常会遇到接口被重复调用的问题,像用户支付时多次点击“支付”按钮,消息队列消费失败后自动重试等,这些行为如果没有控制好幂等性,会产生重复数据,所以本文给大家介绍了对Java接口进行幂等性控制的三种方法
    2025-06-06
  • SpringBoot集成tensorflow实现图片检测功能

    SpringBoot集成tensorflow实现图片检测功能

    TensorFlow名字的由来就是张量(Tensor)在计算图(Computational Graph)里的流动(Flow),它的基础就是前面介绍的基于计算图的自动微分,本文将给大家介绍Spring Boot集成tensorflow实现图片检测功能,需要的朋友可以参考下
    2024-06-06
  • Springboot 实现跨域访问无需使用jsonp的实现代码

    Springboot 实现跨域访问无需使用jsonp的实现代码

    这篇文章主要介绍了Springboot 实现跨域访问 无需使用jsonp的实现代码,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-09-09
  • springcloud ribbon 饥饿加载原理解析

    springcloud ribbon 饥饿加载原理解析

    这篇文章主要介绍了springcloud ribbon 饥饿加载原理解析,饥饿加载特别适用于对启动性能要求较高的场景,如系统启动初期就有高并发请求的情况,感兴趣的朋友跟随小编一起学习吧
    2024-04-04
  • 浅谈JavaAPI 中 <E> 与 <T> 的含义

    浅谈JavaAPI 中 <E> 与 <T> 的含义

    下面小编就为大家带来一篇浅谈JavaAPI 中 <E> 与 <T> 的含义。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • MyBatis中SqlSession生命周期的使用

    MyBatis中SqlSession生命周期的使用

    SqlSession是MyBatis的核心接口之一,本文主要介绍了MyBatis中SqlSession生命周期的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-09-09
  • java接口防重提交的处理方法

    java接口防重提交的处理方法

    本文主要介绍了java接口防重提交的处理方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • Java方法重写的超详细讲解

    Java方法重写的超详细讲解

    在 Java 编程的精彩世界里,方法重写是一项极为重要且实用的特性,它犹如一把神奇的钥匙,为我们开启了面向对象编程中多态性的大门,今天,就让我们一同深入探索 Java 方法重写的奥秘,感兴趣的小伙伴跟着小编一起来看看吧
    2025-03-03

最新评论