MyBatis中,可以使用Generator自动生成代码,包括DAO层、 MODEL层 、MAPPING SQL映射文件。
Mybatis-generator-------------Mybatis的代码生成器
使用Hibernate时, 可以很方便的生成model,dao,和映射配置文件.在mybatis里, 也有生成器,即mybatis generator, 简称MBG. 下面为大家介绍一下MBG的使用.
Mybatis-generator的思想是编写一个配置文件,然后运行该配置文件,就会得到相应的java代码。那么重点就是这个配置文件,配置文件中都需要些什么呢?必须包括的有数据库的datasource,Mybatis的版本信息,至少一个的数据表,还有是需要生成的代码所在的包的信息。
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代码如下:
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是数据库驱动包的位置, modelPackage是存放model实体的包, 对应数据库表, sqlMapperPackage是存放实体映射的XML配置文件, daoMapperPackage是存放Mapper接口的地方.
注意: 要事先建立这些包才可以生成.
如果不想生成mybatis的注释信息, 可以将commentGenerator里的suppressAllComments的值设为true,
table元素对应数据库表.
如
<table schema="minghan" tableName="sys_admin" domainObjectName="Admin"
enableCountByExample="false" enableUpdateByExample="false"
enableDeleteByExample="false" enableSelectByExample="false"
selectByExampleQueryId="false">
</table>
schema即为数据库名, tableName为对应的数据库表, domainObjectName是要生成的实体类, 如果想要mapper配置文件加入sql的where条件查询, 可以将enableCountByExample等设为true, 这样就会生成一个对应domainObjectName的Example类, enableCountByExample等设为false时, 就不会生成对应的Example类了.
3.运行
配置文件配好了之后,进行生成代码, 既可以使用命令的方式, 也可以自已写一个带main的类来运行, 下面提供了一个带main的运行类
MyBatisGeneratorTool.java
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();
}
}
}
运行此类即可生成对应于数据库表的实体类, 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