MyBatis反向生成Example类的使用方式 目录 MyBatis反向生成Example类使用 一.逆向工程 二.Example类的生成 三.Example类的使用 四.使用方法 MyBatis逆向工程生成Example类的方法总结 一.mapper接口中的方法解析 二.Example类解析 三.小结一下 MyBatis反向生成Example类
目录
- MyBatis反向生成Example类使用
- 一、逆向工程
- 二、Example类的生成
- 三、Example类的使用
- 四、使用方法
- MyBatis逆向工程生成Example类的方法总结
- 一、mapper接口中的方法解析
- 二、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条件,这个条件没有构造方法,直接通过传递字符串值指定。start
和length
:是分页时用来指定查询第几条数据到第几条数据的。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代码来实现。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
本文标题为:MyBatis反向生成Example类的使用方式
基础教程推荐
- springboot自定义starter方法及注解实例 2023-03-31
- Java实现线程插队的示例代码 2022-09-03
- Java并发编程进阶之线程控制篇 2023-03-07
- Java数据结构之对象比较详解 2023-03-07
- ConditionalOnProperty配置swagger不生效问题及解决 2023-01-02
- JDK数组阻塞队列源码深入分析总结 2023-04-18
- Java实现查找文件和替换文件内容 2023-04-06
- java实现多人聊天系统 2023-05-19
- java基础知识之FileInputStream流的使用 2023-08-11
- Java文件管理操作的知识点整理 2023-05-19