org.mybatis.generator.config.JDBCConnectionConfiguration , 主要属性包括:
功能描述
是否必须
driverClass
数据源驱动的全类名
Y
connectionURL
JDBC的连接URL
Y
userId
连接到数据源的用户名
N
password
连接到数据源的密码
N
commentGenerator标签<commentGenerator>标签是可选的 , 用于控制生成的实体的注释内容 。它在mybatis-generator-core中对应的实现类为
org.mybatis.generator.internal.DefaultCommentGenerator , 可以通过可选的type属性指定一个自定义的CommentGenerator实现 。<commentGenerator>标签支持0或N个<property>标签 , <property>的可选属性有:
功能描述
默认值
suppressAllComments
是否生成注释
false
suppressDate
是否在注释中添加生成的时间戳
false
dateFormat
配合suppressDate使用 , 指定输出时间戳的格式
java.util.Date#toString()
addRemarkComments
是否输出表和列的Comment信息
false
笔者建议保持默认值 , 也就是什么注释都不输出 , 生成代码干净的实体 。
javaTypeResolver标签<javaTypeResolver>标签是<context>的子标签 , 用于解析和计算数据库列类型和Java类型的映射关系 , 该标签只包含一个type属性 , 用于指定
org.mybatis.generator.api.JavaTypeResolver接口的实现类 。<javaTypeResolver>标签支持0或N个<property>标签 , <property>的可选属性有:
功能描述
默认值
forceBigDecimals
是否强制把所有的数字类型强制使用java.math.BigDecimal类型表示
false
useJSR310Types
是否支持JSR310 , 主要是JSR310的新日期类型
false
如果useJSR310Types属性设置为true , 那么生成代码的时候类型映射关系如下(主要针对日期时间类型):
Java类型
DATE
java.time.LocalDate
TIME
java.time.LocalTime
TIMESTAMP
java.time.LocalDateTime
TIME_WITH_TIMEZONE
java.time.OffsetTime
TIMESTAMP_WITH_TIMEZONE
java.time.OffsetDateTime
引入mybatis-generator-core后 , 可以查看JavaTypeResolver的默认实现为
JavaTypeResolverDefaultImpl , 从它的源码可以得知一些映射关系:
BIGINT --> LongBIT --> BooleanINTEGER --> IntegerSMALLINT --> ShortTINYINT --> Byte......有些时候 , 我们希望INTEGER、SMALLINT和TINYINT都映射为Integer , 那么我们需要覆盖JavaTypeResolverDefaultImpl的构造方法:
public class DefaultJavaTypeResolver extends JavaTypeResolverDefaultImpl {public DefaultJavaTypeResolver() {super();typeMap.put(Types.SMALLINT, new JdbcTypeInformation("SMALLINT",new FullyQualifiedJavaType(Integer.class.getName())));typeMap.put(Types.TINYINT, new JdbcTypeInformation("TINYINT",new FullyQualifiedJavaType(Integer.class.getName())));}}注意一点的是这种自定义实现JavaTypeResolver接口的方式使用编程式运行MBG会相对方便 , 如果需要使用Maven插件运行 , 那么需要把上面的DefaultJavaTypeResolver类打包到插件中 。javaModelGenerator标签<javaModelGenerator标签>标签是<context>的子标签 , 主要用于控制实体(Model)类的代码生成行为 。它支持的属性如下:
功能描述
是否必须
备注
targetPackage
生成的实体类的包名
Y
例如club.throwable.model
targetProject
生成的实体类文件相对于项目(根目录)的位置
Y
例如src/main/java
<javaModelGenerator标签>标签支持0或N个<property>标签 , <property>的可选属性有:
功能描述
默认值
备注
constructorBased
是否生成一个带有所有字段属性的构造函数
false
MyBatis3Kotlin模式下忽略此属性配置
enableSubPackages
是否允许通过Schema生成子包
false
如果为true , 例如包名为club.throwable , 如果Schema为xyz , 那么实体类文件最终会生成在club.throwable.xyz目录
推荐阅读
- 如何挑选金银花
- 如何挑选干花椒叶
- 如何挑选油茶籽油
- 春季养生花茶搭配,养生花茶的搭配与功效
- 喝普洱茶的禁忌,喝普洱茶的禁忌要注意几点
- 花生|5招韩国大热的瘦身吃法,看似什么都能吃,却又跟常人吃得不一样
- NVIDIA|NVIDIA更新GeForce Now:为Apple Silicon处理器提供原生支持
- 月薪|月薪1.4万招不到机械毕业生引热议:学生早被其它厂二三十万年薪签走
- 杜仲泡酒,杜仲泡酒养生功效大
- 行尸走肉|卡罗尔演员退出《行尸走肉》衍生剧 原计划与弩哥共同主演
