https://github.com/t-miracle/mybatis-generator
MyBatis从手写到逆向!MyBatis Generator【MBG】的使用。
https://github.com/t-miracle/mybatis-generator
Last synced: 3 months ago
JSON representation
MyBatis从手写到逆向!MyBatis Generator【MBG】的使用。
- Host: GitHub
- URL: https://github.com/t-miracle/mybatis-generator
- Owner: T-miracle
- Created: 2021-05-08T02:29:37.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2021-05-08T02:45:26.000Z (about 4 years ago)
- Last Synced: 2025-01-18T17:57:01.999Z (5 months ago)
- Homepage:
- Size: 69.3 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# MyBatis从手写到逆向!MyBatis Generator【MBG】的使用
## 什么是MyBatis Generator【以下简称MBG】?
MBG是一款MyBatis自动代码生成工具,可以通过配置,快速生成Entity实体类、mapper接口类和数据库xml映射文件,帮助我们从枯燥的增删改查编写中解脱出来~
并且生成的每个Entity实体类下,还提供了对应的Example实例对象,别小看它,它可是十分强大的一个实例工具,之后我会详细讲解它~## MBG配置步骤:
### 配置pom.xml
在项目的pom文件中添加插件配置
```xml
org.mybatis.generator
mybatis-generator-maven-plugin
1.3.7
src/main/resources/generator.xml
true
true
Generate MyBatis Artifacts
generate
mysql
mysql-connector-java
5.1.29
```
### 配置generator.xml
在resource目录下创建generator.xml文件(也不一定这个名,只要和pom.xml文件下configurationFile中的名字对应上就可以了)

配置文件大致如下:
```xml
```
以上的配置中数据库使用的是SQL serve,如需了解更多请点击 [《MBG配置详解》](./SettingDoc.md)
### MBG启动
连接上数据库后,在Maven Projects侧找到mybatis-generator,双击

即可生成逆向代码~
## Mapper接口
生成代码后,Mapper接口里有如下方法:
> Xxx:实例对象
> example:实例对象字段条件
> record:实例对象数据| 方法 | 功能 |
|:------------------------------------------------------------------------------------------------:|:------------------------------------------------:|
| int countByExample(XxxExample example); | 按条件统计符合条件的数据条数 |
| int deleteByExample(XxxExample example); | 按条件删除数据 |
| int deleteByPrimaryKey(Integer id); | 按主键删除数据 |
| int insert(Xxx record); | 插入数据(实体类所有字段不得为null,否则抛出异常) |
| int insertSelective(Xxx record); | 插入数据(插入实体类不为null的字段) |
| List selectByExample(XxxExample example); | 按条件查询符合条件的数据列表 |
| Xxx selectByPrimaryKey(Integer id); | 按主键查询数据 |
| int updateByExample(@Param("record") Xxx record, @Param("example") XxxExample example); | 按条件更新数据(实体类所有字段不得为null,否则抛出异常) |
| int updateByExampleSelective(@Param("record") Xxx record, @Param("example") XxxExample example); | 按条件更新数据(插入实体类不为null的字段) |
| int updateByPrimaryKeySelective(Xxx record); | 按主键更新数据(实体类所有字段不得为null,否则抛出异常) |
| int updateByPrimaryKey(Xxx record); | 按主键更新数据(插入实体类不为null的字段) |## example实例解析
逆向生成代码后,每个实体类都会生成一个XxxExample实例,它的作用等同于数据库语法中的*WHERE*及其后面的语法。
使用方式为:
```java
xxxExample example = new xxxExample(); //初始化一个example实例
```| 方法 | 功能 |
|:--------------------------------------:|:--------------------------------------------------------------------------:|
| example.setOrderByClause(“字段名 ASC”); | 按字段名升序排列,DESC为降序(注意:字段名必须为数据表的字段名,而不是实体类的字段名) |
| example.setDistinct(false); | 去除重复,true为选择不重复的记录 |```java
Criteria criteria = new Example().createCriteria(); //实现条件方法
```> Xxx:字段名
| 方法 | 功能 |
|:-------------------------------------------:|:--------------------------:|
| criteria.andXxxIsNull; | 字段为null |
| criteria.andXxxIsNotNull; | 字段不为null |
| criteria.andXxxEqualTo(value); | 字段等于value |
| criteria.andXxxNotEqualTo(value); | 字段不等于value |
| criteria.andXxxGreaterThan(value); | 字段大于value |
| criteria.andXxxGreaterThanOrEqualTo(value); | 字段大于等于value |
| criteria.andXxxLessThan(value); | 字段小于value |
| criteria.andXxxLessThanOrEqualTo(value); | 字段小于等于value |
| criteria.andXxxIn(List<?>); | 字段值在List<?>条件中 |
| criteria.andXxxNotIn(List<?>); | 字段值不在List<?>条件中 |
| criteria.andXxxLike(“%”+value+”%”); | 字段值为value的模糊查询 |
| criteria.andXxxNotLike(“%”+value+”%”); | 字段值不为value的模糊查询 |
| criteria.andXxxBetween(value1,value2); | 字段值在value1和value2之间 |
| criteria.andXxxNotBetween(value1,value2); | 字段值不在value1和value2之间 |## 方法应用举例:
```java
XxxExample xxxExample = new xxxExample();
XxxExample.setOrderByClause(“uid DESC”);
Criteria criteria = new Example().createCriteria();
criteria.andNameEqualTo('Tmiracle');
List list = XxxMapper.selectByExample(xxxExample);
```**list得到的值相当于:**
```sql
SELECT * FROM Xxx
WHERE name = 'Tmiracle'
ORDER BY uid DESC
```