# mybatis-extend
**Repository Path**: jearton/mybatis-extend
## Basic Information
- **Project Name**: mybatis-extend
- **Description**: mybatis的扩展:通用Mapper,分布式ID,代码生成,零插件分页,支持Optional
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 2
- **Created**: 2017-02-17
- **Last Updated**: 2021-11-03
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
#Mybatis Extend
## 前提
- Java8+(强制)
- SpringBoot(推荐)
##特性列表
- 通用Mapper
- 分页(Java8默认方法实现)
- 条件构造器(流式构造)
- 全局分布式ID
- 支持返回Optional类型
- 更贴近国内习惯的代码生成
##代码生成
**原则1:自动生成的Java代码在gensrc目录,并且保证幂等,即可以反复执行生成。切勿手动修改!**
**原则2:XML中标记了@mbg.generated的内容切勿修改!可扩展,重复生成不丢失自己写的内容。**
**原则3:Mapper接口文件只生成一次,可自行修改。**
- 引入Maven插件
```
org.codehaus.mojo
build-helper-maven-plugin
generate-sources
add-source
gensrc/main/java
org.mybatis.generator
mybatis-generator-maven-plugin
true
true
```
- 基础配置:src/main/resources/generatorConfig.properties
```properties
# 数据库连接设置
db.url=jdbc:mysql://127.0.0.1:3306/pay_audit?useSSL=false
db.username=root
db.password=
# 基础包路径
package.base=com.xxx.audit
```
- 配置生成规则:[src/main/resources/generatorConfig.xml](#generatorConfig)
- 在项目下新建目录:gensrc/main/java
- 执行生成命令,自动生成实体类、XML文件、Mapper接口 `mvn mybtais-generator:generate`
## SpringBoot方式配置MyBatis(零XML,零注解)
```
# 实体包路径
mybatis.type-aliases-package=com.xxx.audit.model.pojos
# 转换器包路径(比如枚举转换器)
mybatis.type-handlers-package=com.xxx.audit.model.types
# Mapper接口扫描的基础包路径
mybatis.mapper-scan.base-packages=com.xxx.audit.model.mapper
# 全局唯一ID生成方式(snowflake黑科技)
mybatis.mapper.unique-id-type=id_generator
```
## 通用分页[排序]处理(零XML,零插件)
- 该分页不使用插件实现,复用已有count查询,非动态生成count语句,无性能损耗,就和单独select+count一样
- Mapper接口,继承SingleMapper,自动获得分页功能
E-实体,Condition-查询条件,Pageable-分页条件,Page-返回结果(包含list、total)
`注:分页和排序对象已从spring-data项目中抽出,无过度定制`
```
// 有count查询
Page selectByPage(Condition condition, Pageable page);
// 无count查询
List selectByPage(Condition condition, int page, int size);
// 无count查询
List selectByOffset(Condition condition, int offset, int size);
```
## 通用INSERT(零XML)
- Mapper接口,继承SingleMapper,自动获得insert功能
- 若生成代码时配置了``,则可以回写主键
- 若生成代码时配置了`autoUniqueId=true`,则可以自动写入全局唯一ID,目前提供两种算法:uuid,snowflake
## 通用UPDATE(零XML)
- Mapper接口,继承SingleMapper,自动获得update功能
## 通用SELECT(零XML)
- Mapper接口,继承SingleMapper,自动获得select功能
## 通用DELETE(零XML)
- Mapper接口,继承SingleMapper,自动获得delete功能
## generatorConfig.xml示例
需要自行修改的地方有:ColumnOverridePlugin-配置列重写规则,table标签-配置关系表
```
```