# 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标签-配置关系表 ```
```