Mybatis代码生成器Mybatis-Generator使用详解( 二 )

配置文件中 , 最外层的标签为<generatorConfiguration> , 它的子标签包括:
  • 0或者1个<properties>标签 , 用于指定全局配置文件 , 下面可以通过占位符的形式读取<properties>指定文件中的值 。
  • 0或者N个<classPathEntry>标签 , <classPathEntry>只有一个location属性 , 用于指定数据源驱动包(jar或者zip)的绝对路径 , 具体选择什么驱动包取决于连接什么类型的数据源 。
  • 1或者N个<context>标签 , 用于运行时的解析模式和具体的代码生成行为 , 所以这个标签里面的配置是最重要的 。
下面分别列举和分析一下<context>标签和它的主要子标签的一些属性配置和功能 。
context标签<context>标签在mybatis-generator-core中对应的实现类为
org.mybatis.generator.config.Context , 它除了大量的子标签配置之外 , 比较主要的属性是:
  • id:Context示例的唯一ID , 用于输出错误信息时候作为唯一标记 。
  • targetRuntime:用于执行代码生成模式 。
  • defaultModelType :控制 Domain 类的生成行为 。执行引擎为 MyBatis3DynamicSql 或者 MyBatis3Kotlin 时忽略此配置 , 可选值: conditional:默认值 , 类似hierarchical , 但是只有一个主键的时候会合并所有属性生成在同一个类 。flat:所有内容全部生成在一个对象中 。hierarchical:键生成一个XXKey对象 , Blob等单独生成一个对象 , 其他简单属性在一个对象中 。
targetRuntime属性的可选值比较多 , 这里做个简单的小结:
属性
功能描述
MyBatis3DynamicSql
默认值 , 兼容JDK8+和MyBatis 3.4.2+ , 不会生成XML映射文件 , 忽略<sqlMapGenerator>的配置项 , 也就是Mapper全部注解化 , 依赖于MyBatis Dynamic SQL类库
MyBatis3Kotlin
行为类似于MyBatis3DynamicSql , 不过兼容Kotlin的代码生成
MyBatis3
提供基本的基于动态SQL的CRUD方法和XXXByExample方法 , 会生成XML映射文件
MyBatis3Simple
提供基本的基于动态SQL的CRUD方法 , 会生成XML映射文件
MyBatis3DynamicSqlV1
已经过时 , 不推荐使用
笔者偏向于把SQL文件和代码分离 , 所以一般选用MyBatis3或者MyBatis3Simple 。例如:
<context id="default" targetRuntime="MyBatis3"><context>标签支持0或N个<property>标签 , <property>的可选属性有:
property属性
功能描述
默认值
备注
autoDelimitKeywords
是否使用分隔符号括住数据库关键字
false
例如MySQL中会使用反引号括住关键字
beginningDelimiter
分隔符号的开始符号
"
 
endingDelimiter
分隔符号的结束号
"
 
javaFileEncoding
文件的编码
系统默认值
来源于java.nio.charset.Charset
javaFormatter
类名和文件格式化器
DefaultJavaFormatter
见JavaFormatter和DefaultJavaFormatter
targetJava8
是否JDK8和启动其特性
true
 
kotlinFileEncoding
Kotlin文件编码
系统默认值
来源于java.nio.charset.Charset
kotlinFormatter
Kotlin类名和文件格式化器
DefaultKotlinFormatter
见KotlinFormatter和DefaultKotlinFormatter
xmlFormatter
XML文件格式化器
DefaultXmlFormatter
见XmlFormatter和DefaultXmlFormatter
jdbcConnection标签<jdbcConnection>标签用于指定数据源的连接信息 , 它在mybatis-generator-core中对应的实现类为


推荐阅读