Mybatis上路_06-使用Java自动生成[转]
目录:[ - ]
1.编写Generator执行配置文件:
generatorConfigation.xml。注意配置数据库驱动包的绝对路径。
01 |
<?xml version="1.0" encoding="UTF-8"?> |
02 |
<!DOCTYPE generatorConfiguration |
03 |
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" |
04 |
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> |
05 |
06 |
<generatorConfiguration> |
07 |
<!-- 数据库驱动包,使用绝对路径 --> |
08 |
<classPathEntry location="c:/mysql-connector-java-5.1.22-bin.jar" /> |
09 |
|
10 |
<!-- 环境配置 ************************************************** |
11 |
id="自定义的配置名称" |
12 |
targetRuntime="MyBatis版本" --> |
13 |
<context id="MySqlTables" targetRuntime="MyBatis3" > |
14 |
|
15 |
<!-- 数据库 =============================================== |
16 |
driverClass="驱动" |
17 |
connectionURL="数据库url" |
18 |
userId="用户" |
19 |
password="密码" --> |
20 |
<jdbcConnection |
21 |
driverClass="com.mysql.jdbc.Driver" |
22 |
connectionURL="jdbc:mysql://127.0.0.1:3306/db_mybatis" |
23 |
userId="root" |
24 |
password="root"> |
25 |
</jdbcConnection> |
26 |
27 |
<!-- Java数据类型分离器,数据类型转换 ===================== |
28 |
property 属性 |
29 |
name="强迫双精度" |
30 |
value="不" --> |
31 |
<javaTypeResolver> |
32 |
<property name="forceBigDecimals" value="false" /> |
33 |
</javaTypeResolver> |
34 |
|
35 |
<!-- Java模型生成器 ======================================= |
36 |
targetPackage="生成文件的目标路径" |
37 |
targetProject="已存在的项目包" |
38 |
enableSubPackages-可以省略对应约束名,true-是的,可以省略tb_generator |
39 |
trimString-验证字符串,true-是的 --> |
40 |
<javaModelGenerator |
41 |
targetPackage="cn.cvu.test.model" |
42 |
targetProject="src"> |
43 |
<property name="enableSubPackages" value="false" /> |
44 |
<property name="trimStrings" value="true" /> |
45 |
</javaModelGenerator> |
46 |
|
47 |
<!-- sql映射文件生成器 ======================================= |
48 |
targetPackage="生成文件的目标路径" |
49 |
targetProject="已存在的项目包" |
50 |
enableSubPackages-可以省略对应约束名,true-是的,可以省略tb_generator --> |
51 |
<sqlMapGenerator |
52 |
targetPackage="cn.cvu.test.xml" |
53 |
targetProject="src"> |
54 |
<property name="enableSubPackages" value="false" /> |
55 |
</sqlMapGenerator> |
56 |
|
57 |
<!-- java委托对象DAO生成器,接口 ============================= |
58 |
type="" |
59 |
targetPackage="生成文件的目标路径" |
60 |
targetProject="已存在的项目包" |
61 |
enableSubPackages-可以省略对应约束名,true-是的,可以省略tb_generator --> |
62 |
<javaClientGenerator |
63 |
type="XMLMAPPER" |
64 |
targetPackage="cn.cvu.test.dao" |
65 |
targetProject="src"> |
66 |
<property name="enableSubPackages" value="false" /> |
67 |
</javaClientGenerator> |
68 |
|
69 |
<!-- 表单,已存在,根据此表生成其它文件 ======================= |
70 |
tableName="已有的表单名称" |
71 |
domainObjetctName="对应生成的文件名前缀" --> |
72 |
<table tableName="tb_generator" domainObjectName="Eminem"> |
73 |
<!-- useActualColumnNames-使用真实列名 , |
74 |
true-嗯。如果false,则由columnOverride节点控制 --> |
75 |
<property name="useActualColumnNames" value="true" /> |
76 |
|
77 |
<!-- 标识列 |
78 |
column="列名" sqlStatement="某种数据库语言" identity="作为主键" --> |
79 |
<generatedKey column="id" sqlStatement="MySql" identity="true" /> |
80 |
|
81 |
<!-- 覆盖项,当property name="useActualColumnNames" value="true"时。 |
82 |
column="被覆盖值的列名" property="用来覆盖的对应的java类的属性" --> |
83 |
<columnOverride column="name" property="generName" /> |
84 |
|
85 |
</table> |
86 |
|
87 |
</context> |
88 |
89 |
</generatorConfiguration> |
2.在MyEclipse中建空web项目:
将配置文件放到src里。加入generator的jar文件。
3.编写并执行Java程序:
01 |
package cn.cvu.test.build; |
02 |
|
03 |
import java.io.File; |
04 |
import java.util.ArrayList; |
05 |
import java.util.List; |
06 |
import org.junit.Test; |
07 |
import org.mybatis.generator.api.MyBatisGenerator; |
08 |
import org.mybatis.generator.config.Configuration; |
09 |
import org.mybatis.generator.config.xml.ConfigurationParser; |
10 |
import org.mybatis.generator.internal.DefaultShellCallback; |
11 |
|
12 |
public class TestGenerateWithJava { |
13 |
|
14 |
@Test |
15 |
public void testBuild() throws Exception { |
16 |
// 信息缓存 |
17 |
List<String> warnings = new ArrayList<String>(); |
18 |
// 覆盖已有的重名文件 |
19 |
boolean overwrite = true; |
20 |
// 准备 配置文件 |
21 |
File configFile = new File("F:/myeclipse_workspace/generator/src/generatorConfigation.xml"); |
22 |
// 1.创建 配置解析器 |
23 |
ConfigurationParser parser = new ConfigurationParser(warnings); |
24 |
// 2.获取 配置信息 |
25 |
Configuration config = parser.parseConfiguration(configFile); |
26 |
// 3.创建 默认命令解释调回器 |
27 |
DefaultShellCallback callback = new DefaultShellCallback(overwrite); |
28 |
// 4.创建 mybatis的生成器 |
29 |
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings); |
30 |
// 5.执行,关闭生成器 |
31 |
myBatisGenerator.generate(null); |
32 |
} |
33 |
} |
4.查看并修改生成的文件:
选中src,按F5刷新,可以看到新文件已经创建:
修改报错的EmineMapper.java文件,去除注解:
5.测试,使用生成的文件查询:
1)导入MyBatis的jar包:
mybatis-3.2.2.jar
mybatis-generator-core-1.3.2.jar
mysql-connector-java-5.1.22-bin.jar
2)创建MyBatis的xml配置文件:
上面我们注释掉了自动生成的注解代码,在src新建一个xml配置文件,mybatisConfigation.xml:
01 |
<?xml version="1.0" encoding="UTF-8" ?> |
02 |
<!DOCTYPE configuration |
03 |
PUBLIC "-//mybatis.org//DTD Config 3.0//EN" |
04 |
"http://mybatis.org/dtd/mybatis-3-config.dtd"> |
05 |
06 |
<configuration> |
07 |
<environments default="development"> |
08 |
<environment id="development"> |
09 |
<transactionManager type="JDBC" /> |
10 |
<dataSource type="POOLED"> |
11 |
<property name="driver" value="com.mysql.jdbc.Driver" /> |
12 |
<property name="url" value="jdbc:mysql://127.0.0.1:3306/db_mybatis" /> |
13 |
<property name="username" value="root" /> |
14 |
<property name="password" value="root" /> |
15 |
</dataSource> |
16 |
</environment> |
17 |
</environments> |
18 |
19 |
<mappers> |
20 |
<!-- 引入MBG生成器创建的映射文件 --> |
21 |
<mapper resource="cn/cvu/test/xml/EminemMapper.xml" /> |
22 |
</mappers> |
23 |
</configuration> |
3)Java测试代码:
创建测试类cn.cvu.test.dotest.TestDoGeneratorWithJava :
01 |
package cn.cvu.test.dotest; |
02 |
03 |
import java.io.Reader; |
04 |
import java.util.List; |
05 |
import org.apache.ibatis.io.Resources; |
06 |
import org.apache.ibatis.session.SqlSession; |
07 |
import org.apache.ibatis.session.SqlSessionFactoryBuilder; |
08 |
import org.junit.Test; |
09 |
import cn.cvu.test.dao.EminemMapper; |
10 |
import cn.cvu.test.model.Eminem; |
11 |
import cn.cvu.test.model.EminemExample; |
12 |
import cn.cvu.test.model.EminemExample.Criteria; |
13 |
14 |
public class TestDoGeneratorWithJava { |
15 |
16 |
@Test |
17 |
public void testQuery() throws Exception { |
18 |
19 |
// 创建SQL会话: |
20 |
Reader reader = Resources.getResourceAsReader("mybatisConfigation.xml"); |
21 |
SqlSession session = new SqlSessionFactoryBuilder().build(reader).openSession(); |
22 |
23 |
// 创建查询实例: |
24 |
EminemExample eminemExample = new EminemExample(); |
25 |
26 |
// 获取映射实体: |
27 |
EminemMapper mapper = session.getMapper(EminemMapper.class); |
28 |
29 |
// 利用实体通过实例查询全部条目 |
30 |
List<Eminem> eminems = mapper.selectByExample(eminemExample); |
31 |
System.out.println("ID \t\t name \t\t notes \n"); |
32 |
for (Eminem eminem : eminems) { |
33 |
System.out.println(eminem.getId()+ |
34 |
"\t\t"+eminem.getGenerName()+ |
35 |
"\t\t"+eminem.getNotes()); |
36 |
} |
37 |
session.close(); |
38 |
} |
39 |
} |
- end
虽功未成,亦未敢藏私,众侠诸神通尽录于此,竟成一笈,名葵花宝典,以飨后世。
邮箱:steven9801@163.com
QQ: 48039387
邮箱:steven9801@163.com
QQ: 48039387







浙公网安备 33010602011771号