MyBatis中,可以使用Generator自動生成代碼,包括DAO層、 MODEL層 、MAPPING SQL映射文件。
Mybatis-generator-------------Mybatis 的代碼生成器
使用 Hibernate 時 ,? 可以很方便的生成 model,dao, 和映射配置文件 . 在 mybatis 里 ,? 也有生成器 , 即 mybatis generator,? 簡稱 MBG.? 下面為大家介紹一下 MBG 的使用 .
?
? ? Mybatis-generator 的思想是編寫一個配置文件,然后運行該配置文件,就會得到相應的 java 代碼。那么重點就是這個配置文件,配置文件中都需要些什么呢?必須包括的有數(shù)據(jù)庫的 datasource , Mybatis 的版本信息,至少一個的數(shù)據(jù)表,還有是需要生成的代碼所在的包的信息。
?
1. 下載類包
下載 mybatis-generator-core-1.3.1-bundle.zip 之后 ,? 解壓得到 mybatis-generator-core-1.3.1.jar,? 即生成器的 jar 包 ,? 將 mybatis-3.0.6.jar 和 mybatis-generator-core-1.3.1.jar 加入到項目的 lib 里 ,? 然后編寫一個生成器的配置文件 generatorConfig.xml.
2. mybatis-generator 的配置文件
mybatis-generator 最重要的就是一個配置文件,配置文件中配置了生成的 .dao? 與 pojo 生成的 package 路徑等。
介紹一下 genernatorConfig.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<!DOCTYPE generatorConfiguration?
?
??
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"?
?
?
??
?
?
<
generatorConfiguration
>?
?
????
<
properties
resource
=
"com/yuan/mybatis/mbg/util/generatorConfig.properties"
/>?
?
????
<
classPathEntry
location
=
"${classPath}"
/>?
?
????
<
context
id
=
"MBG"
targetRuntime
=
"MyBatis3"
defaultModelType
=
"conditional"
>?
?
????????
<
plugin
type
=
"org.mybatis.generator.plugins.EqualsHashCodePlugin"
/>?
?
????????
<
plugin
type
=
"org.mybatis.generator.plugins.MapperConfigPlugin"
>?
?
????????????
<
property
name
=
"fileName"
value
=
"GeneratedMapperConfig.xml"
/>?
?
????????????
<
property
name
=
"targetPackage"
value
=
"com.yuan.mybatis.mbg.util"
/>?
?
????????????
<
property
name
=
"targetProject"
value
=
"${targetProject}"
/>?
?
????????
</
plugin
>?
?
????????
<
commentGenerator
>?
?
????????????
<
property
name
=
"suppressAllComments"
value
=
"true"
/>?
?
????????
</
commentGenerator
>?
?
????????
<
jdbcConnection
driverClass
=
"${driverClass}"
?
?
????????????
connectionURL
=
"${connectionURL}"
userId
=
"${userId}"
password
=
"${password}"
>?
?
????????
</
jdbcConnection
>?
?
????????
<
javaTypeResolver
>?
?
????????????
<
property
name
=
"forceBigDecimals"
value
=
"false"
/>?
?
????????
</
javaTypeResolver
>?
?
??
?
?
????????
<
javaModelGenerator
targetPackage
=
"${modelPackage}"
?
?
????????????
targetProject
=
"${targetProject}"
>?
?
????????????
<
property
name
=
"enableSubPackages"
value
=
"true"
/>?
?
????????
</
javaModelGenerator
>?
?
??
?
?
????????
<
sqlMapGenerator
targetPackage
=
"${sqlMapperPackage}"
?
?
????????????
targetProject
=
"${targetProject}"
>?
?
????????????
<
property
name
=
"enableSubPackages"
value
=
"true"
/>?
?
????????
</
sqlMapGenerator
>?
?
??
?
?
????????
<
javaClientGenerator
type
=
"XMLMAPPER"
?
?
????????????
targetPackage
=
"${daoMapperPackage}"
targetProject
=
"${targetProject}"
>?
?
????????????
<
property
name
=
"enableSubPackages"
value
=
"true"
/>?
?
????????
</
javaClientGenerator
>?
?
????????
<
table
schema
=
"minghan"
tableName
=
"sys_group"
domainObjectName
=
"Group"
>?
?
????????????
<
generatedKey
column
=
"groupId"
sqlStatement
=
"mysql"
?
?
????????????????
identity
=
"true"
/>?
?
????????
</
table
>?
?
????????
<
table
schema
=
"minghan"
tableName
=
"sys_admin"
domainObjectName
=
"Admin"
?
?
????????????
enableCountByExample
=
"false"
enableUpdateByExample
=
"false"
?
?
????????????
enableDeleteByExample
=
"false"
enableSelectByExample
=
"false"
?
?
????????????
selectByExampleQueryId
=
"false"
>?
?
????????
</
table
>?
?
??
?
?
????
</
context
>?
?
</
generatorConfiguration
>
|
其中的 properties 元素里引用了一個 generatorConfig.properties 配置文件是為了方便移植的時候 , 只需修改 resource 的路徑值和 generatorConfig.properties 里的值即進行生成操作 .
generatorConfig.properties 代碼如下 :
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
classPath=D\:/ylink/myeclipse/MBG/lib/mysql-connector-java-5.0.7-bin.jar?
?
targetProject=D\:/ylink/myeclipse/MBG/src?
?
driverClass=com.mysql.jdbc.Driver?
?
connectionURL=jdbc\:mysql\://127.0.0.1\:3306/minghan?useUnicode\=true&characterEncoding\=UTF-8?
?
userId=root?
?
password=root?
?
modelPackage=com.yuan.mybatis.mbg.model?
?
sqlMapperPackage=com.yuan.mybatis.mbg.model.mapper?
?
daoMapperPackage=com.yuan.mybatis.mbg.dao.mapper
|
?
? 其中 , targetProject 是工程的源代碼存放位置
classPath 是數(shù)據(jù)庫驅動包的位置 , modelPackage 是存放 model 實體的包 ,? 對應數(shù)據(jù)庫表 , sqlMapperPackage 是存放實體映射的 XML 配置文件 , daoMapperPackage 是存放 Mapper 接口的地方 .
注意 :? 要事先建立這些包才可以生成 .
如果不想生成 mybatis 的注釋信息 ,? 可以將 commentGenerator 里的 suppressAllComments 的值設為 true,
table 元素對應數(shù)據(jù)庫表 .
如
<table schema="minghan" tableName="sys_admin" domainObjectName="Admin" ?
? ? ?enableCountByExample="false" enableUpdateByExample="false" ?
? ? ?enableDeleteByExample="false" enableSelectByExample="false"
? ? selectByExampleQueryId="false">
</table>?
? schema 即為數(shù)據(jù)庫名 , tableName 為對應的數(shù)據(jù)庫表 , domainObjectName 是要生成的實體類 ,? 如果想要 mapper 配置文件加入 sql 的 where 條件查詢 ,? 可以將 enableCountByExample 等設為 true,? 這樣就會生成一個對應 domainObjectName 的 Example 類 , enableCountByExample 等設為 false 時 ,? 就不會生成對應的 Example 類了 .
3. 運行
配置文件配好了之后 , 進行生成代碼 ,? 既可以使用命令的方式 ,? 也可以自已寫一個帶 main 的類來運行 ,? 下面提供了一個帶 main 的運行類
MyBatisGeneratorTool.java
-
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
package
com.yuan.mybatis.mbg.util;?
??
??import
java.io.File;?
?import
java.io.IOException;?
?import
java.sql.SQLException;?
?import
java.util.ArrayList;?
?import
java.util.List;?
???
??import
org.mybatis.generator.api.MyBatisGenerator;?
?import
org.mybatis.generator.config.Configuration;?
?import
org.mybatis.generator.config.xml.ConfigurationParser;?
?import
org.mybatis.generator.exception.InvalidConfigurationException;?
?import
org.mybatis.generator.exception.XMLParserException;?
?import
org.mybatis.generator.internal.DefaultShellCallback;?
???
??public
class
MyBatisGeneratorTool {?
?????
public
static
void
main(String[] args) {?
?????????
List<String> warnings =
new
ArrayList<String>();?
?????????
boolean
overwrite =
true
;?
?????????
String genCfg =
"/generatorConfig.xml"
;
//src的一級目錄下?
?????????
File configFile =
new
File(MyBatisGeneratorTool.
class
.getResource(genCfg).getFile());?
?????????
ConfigurationParser cp =
new
ConfigurationParser(warnings);?
?????????
Configuration config =
null
;?
?????????
try
{?
?????????????
config = cp.parseConfiguration(configFile);?
?????????
}
catch
(IOException e) {?
?????????????
e.printStackTrace();?
?????????
}
catch
(XMLParserException e) {?
?????????????
e.printStackTrace();?
?????????
}?
?????????
DefaultShellCallback callback =
new
DefaultShellCallback(overwrite);?
?????????
MyBatisGenerator myBatisGenerator =
null
;?
?????????
try
{?
?????????????
myBatisGenerator =
new
MyBatisGenerator(config, callback, warnings);?
?????????
}
catch
(InvalidConfigurationException e) {?
?????????????
e.printStackTrace();?
?????????
}?
?????????
try
{?
?????????????
myBatisGenerator.generate(
null
);?
?????????
}
catch
(SQLException e) {?
?????????????
e.printStackTrace();?
?????????
}
catch
(IOException e) {?
?????????????
e.printStackTrace();?
?????????
}
catch
(InterruptedException e) {?
?????????????
e.printStackTrace();?
?????????
}?
?????
}?
?}
? 運行此類即可生成對應于數(shù)據(jù)庫表的實體類 , Mapper 配置文件 , Mapper 接口 ,? 生成后可以測試其可用性 .
使用命令的方式運行:
? ?java -jar mybatis-generator-core-x.x.x.jar -configfile generatorConfig.xml -overwrite
4. 其他學習網址推薦
推薦一個比較好的 mybatis-generator 的教學網址:
http://www.cnblogs.com/harrychinese/archive/2012/01/09/learn_mybatis.html
更多文章、技術交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
