MyBatis Generator (MBG) is a code generator for MyBatis or iBatis (>2.2.0).
可以生成如下内容:
- Java POJOs(domain),具体形式取决于
defaultModelType
,对应<javaModelGenerator>
配置
- a class to match the primary key of the table (if there is a primary key)【主键实体类】
- a class to match the non-primary key fields of the table (except BLOB fields)【基础实体类】
- a class to include the BLOB fields of a table (if the table has BLOB fields)【Blob实体类】
- a class to enable dynamic selects, updates, and deletes
- SQL Map XML Files,对应
<sqlMapGenerator>
配置
- insert
- insert selective
- update by primary key
- update by primary key selective
- update by example (using a dynamic where clause)
- update by example (using a dynamic where clause) selective
- delete by primary key
- delete by example (using a dynamic where clause)
- select by primary key
- select by example (using a dynamic where clause)
- count by example
备注:*Selective,为null的属性不加入sql(insert和update)
- Java client classes,对应
<javaClientGenerator>
配置
- A mapper interface that works with the MyBatis 3.x mapper infrastructure
生成的内容注释中包含@mbg.generated
,表明是生成的,重新生成时会先删除
generatorConfig.xml
<properties>
<classPathEntry>
定义JDBC驱动,推荐在classpath配置(比如pom.xml)
<context>
defaultModelType:
生成model类型,默认值conditional,建议设置为flat
- conditional:跟hierarchical类似,只是当表只有一个主键时,不生成基础实体类
- flat:一个表一个domain类
- hierarchical:生成多个类,
主键
一个,Blob
字段共一个类,其他字段共一个类
targetRuntime:
目标运行时,可取值包括:
MyBatis3:default
MyBatis3Simple:no by example methods
MyBatis3DynamicSql:MyBatis 3.4.2 and higher, Java 8 and higher, flat style
, no Sql Mapper xml
, annotated mapper
,依赖org.mybatis.dynamic-sql:mybatis-dynamic-sql:1.0.0'
<properties>
autoDelimitKeywords
beginningDelimiter
endingDelimiter
javaFileEncoding
javaFormatter
xmlFormatter
<plugin>
<commentGenerator>
suppressDate:是否包含时间戳,默认值false,避免重复生成后时间戳的变化导致版本变化,建议设置为true
addRemarkComments:是否包含表和字段的备注,默认值false,建议设置为true
#### <connectionFactory>
<jdbcConnection>
<javaTypeResolver>
forceBigDecimals:是否强制DECIMAL
和NUMERIC
类型的字段转换为Java类型的java.math.BigDecimal
,默认值为false
默认情况下的转换规则为:
- 如果
精度>0
或者长度>18
,就会使用java.math.BigDecimal
- 如果
精度=0
并且10<=长度<=18
,就会使用java.lang.Long
- 如果
精度=0
并且5<=长度<=9
,就会使用java.lang.Integer
- 如果
精度=0
并且长度<5
,就会使用java.lang.Short
<javaModelGenerator>
targetProject:绝对路径或相对路径,不自动创建目录,关于相对目录,不同运行方式规则不一样,命令行和maven方式,相对项目根目录,比如:src/main/java
,eclipse plug-in方式,相对工作空间,前面追加项目名称,比如:sample-mybatis-generator-maven/src/main/java
targetPackage:会自动创建目录
<sqlMapGenerator>
<javaClientGenerator>
type:
如果<context>
的targetRuntime
是MyBatis3,则可取值有ANNOTATEDMAPPER
、MIXEDMAPPER
和XMLMAPPER
<table>
tableName:表名,支持SQL通配符,比如%
<generatedKey>
column:
identity:是否数据库自动自增生成,true一般适用于mysql或sql server,false一般适用于sequence之类的数据库,比如oracle等,默认值false
1 |
|
1 |
|
sqlStatement:**
运行
命令行
项目下任意位置新建generatorConfig.xml
,执行如下命令:
1 |
|
maven
添加mybatis-generator-maven-plugin
(同时配置了JDBC驱动)
1 |
|
src/main/resources
目录下新建generatorConfig.xml
,也可以通过属性自定义位置
依赖的驱动等可以定义在插件的<dependencies>
下面,不用定义到<classPathEntry>
内容参考如下:
1 |
|
1 |
|
Eclipse plug-in
项目下任意目录新建generatorConfig.xml
,右键generatorConfig.xml
,选择Run As>Run MyBatis Generator
与maven生成的代码格式略不同,会导致版本管理工具识别出被修改过