这是我参与11月更文挑战的第14天,活动详情查看:2021最后一次更文挑战
MyBatis-Plus 官方文档:mp.baomidou.com/guide/gener…
这是官网上的文档,从官方文档中给快速生成代码中,可以看出代码生成器的配置结构为:
1 | java复制代码 |
我们只需要通过填空的方式去配置数据源(DataSource),全局配置(GlobalConfig),包配置(PackageConfig),策略配置(StrategyConfig)和模板引擎配置(TemplateEngine)即可。
官方文档上也给出了对于每一个配置我们可以进行什么操作。
配置
数据源配置(DataSource)
属性 | 说明 | 示例 |
---|---|---|
url | jdbc路径 | jdbc:mysql://127.0.0.1:3306/mybatis-plus |
username | 数据库账号 | root |
password | 数据库密码 | 123456 |
dbQuery(IDbQuery) | 数据库查询 | new MySqlQuery() |
schema(String) | 数据库schema(部分数据库适用) | mybatis-plus |
typeConvert(ITypeConvert) | 数据库类型转换器 | new MySqlTypeConvert() |
keyWordsHandler(IKeyWordsHandler) | 数据库关键字处理器 | new MySqlKeyWordsHandler() |
全局配置(GlobalConfig)
方法 | 说明 | 示例 |
---|---|---|
fileOverride | 覆盖已生成文件 | 默认值:false |
disableOpenDir | 禁止打开输出目录 | 默认值:true |
outputDir(String) | 指定输出目录 | /opt/baomidou/ 默认值: windows:D:// linux or mac : /tmp |
author(String) | 作者名 | baomidou 默认值:作者 |
enableKotlin | 开启 kotlin 模式 | 默认值:false |
enableSwagger | 开启 swagger 模式 | 默认值:false |
dateType(DateType) | 时间策略 | DateType.ONLY_DATE=Date 默认值: DateType.TIME_PACK=LocalDateTime |
commentDate(String) | 注释日期 | 默认值: yyyy-MM-dd |
包配置(PackageConfig)
方法 | 说明 | 示例 |
---|---|---|
parent(String) | 父包名 | 默认值:com.baomidou |
moduleName(String) | 父包模块名 | 默认值:无 |
entity(String) | Entity 包名 | 默认值:entity |
service(String) | Service 包名 | 默认值:service |
serviceImpl(String) | Service Impl 包名 | 默认值:service.impl |
mapper(String) | Mapper 包名 | 默认值:mapper |
mapperXml(String) | Mapper XML 包名 | 默认值:mapper.xml |
controller(String) | Controller 包名 | 默认值:controller |
other(String) | 自定义文件包名 | 输出自定义文件时所用到的包名 |
pathInfo(Map<OutputFile, String>) | 路径配置信息 | Collections.singletonMap(OutputFile.mapperXml, “D://“) |
策略配置(StrategyConfig)
方法 | 说明 | 示例 |
---|---|---|
enableCapitalMode | 开启大写命名 | 默认值:false |
enableSkipView | 开启跳过视图 | 默认值:false |
disableSqlFilter | 禁用 sql 过滤 | 默认值:true,语法不能支持使用 sql 过滤表的话,可以考虑关闭此开关 |
enableSchema | 启用 schema | 默认值:false,多 schema 场景的时候打开 |
likeTable(LikeTable) | 模糊表匹配(sql 过滤) | likeTable 与 notLikeTable 只能配置一项 |
notLikeTable(LikeTable) | 模糊表排除(sql 过滤) | likeTable 与 notLikeTable 只能配置一项 |
addInclude(String…) | 增加表匹配(内存过滤) | include 与 exclude 只能配置一项 |
addExclude(String…) | 增加表排除匹配(内存过滤) | include 与 exclude 只能配置一项 |
addTablePrefix(String…) | 增加过滤表前缀 | |
addTableSuffix(String…) | 增加过滤表后缀 | |
addFieldPrefix(String…) | 增加过滤字段前缀 | |
addFieldSuffix(String…) | 增加过滤字段后缀 | |
entityBuilder | 实体策略配置 | |
controllerBuilder | controller 策略配置 | |
mapperBuilder | mapper 策略配置 | |
serviceBuilder | service 策略配置 |
模板引擎配置(TemplateEngine)
默认 Velocity ;可选模板引擎 Beetl 或 Freemarker。
模板引擎 | 代码 | |
---|---|---|
Velocity | 默认 | .templateEngine(new VelocityTemplateEngine()) |
Freemarker | 可选 | .templateEngine(new FreemarkerTemplateEngine()) |
Beetl | 可选 | .templateEngine(new BeetlTemplateEngine()) |
代码生成器测试样例
那么知道配置之后我们可以自己写一个操作一下。
步骤:
1、创建测试数据库 mp
1 | sql复制代码CREATE DATABASE mp; |
Field | Type | Comment |
---|---|---|
id | int | 用户id |
username | varchar(50) | 用户名 |
password | varchar(50) | 密码 |
create_time | date | 创建时间 |
modify_time | date | 最后一次修改时间 |
Field | Type | Comment |
---|---|---|
id | int | 学号 |
name | varchar(50) | 名字 |
score | double | 成绩 |
2、创建一个 Spring-Boot 项目
3、在 pom.xml 中导入相关依赖
1 | xml复制代码<!--spring-boot--> |
注:模板引擎配置,默认 Velocity 可选模板引擎 Beetl 或 Freemarker,实际使用中只导入使用模板对应的依赖即可,不用全部导入。
4、编写一个mian方法,加上框架
1 | java复制代码public static void main(String[] args) { |
5、进行数据源配置
1 | java复制代码public static void main(String[] args) { |
6、进行全局配置
注:3.5.1+版本开始支持 lambda 表达式
1 | java复制代码 //2、全局配置 |
7、进行 包配置
1 | java复制代码 //3、包配置 |
8、策略配置
策略配置中需要对 Mapper,Service,Entity,Controller 类的生成策略进行单独的配置。
1 | java复制代码 //4、策略配置 |
9、模板引擎配置
1 | java复制代码 //5、模板引擎 |
10、执行
1 | java复制代码 //6、执行 |
执行效果演示:
注:这里使用的是附2的交互式生成,两者源码几乎没有区别。
附1:快速生成样例代码
1 | java复制代码 |
附2:交互式生成样例代码
1 | java复制代码public static void main(String[] args) { |
本文转载自: 掘金