Mybatis上路_06-使用Java自动生成

本文介绍如何使用MyBatis Generator工具自动生成持久层代码,包括配置文件详解、项目搭建步骤、测试查询流程等关键信息。

1.编写Generator执行配置文件:

            generatorConfigation.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
<? xml version = "1.0" encoding = "UTF-8" ?>
<! DOCTYPE generatorConfiguration
   PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
   "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
 
< generatorConfiguration >
     <!-- 数据库驱动包,使用绝对路径 -->
     < classPathEntry location = "c:/mysql-connector-java-5.1.22-bin.jar" />
  
     <!-- 环境配置 **************************************************
         id="自定义的配置名称"
         targetRuntime="MyBatis版本" -->
     < context id = "MySqlTables" targetRuntime = "MyBatis3" >
    
         <!-- 数据库  ===============================================
             driverClass="驱动"
             connectionURL="数据库url"
             userId="用户"
             password="密码" -->
         < jdbcConnection
             driverClass = "com.mysql.jdbc.Driver"
             connectionURL = "jdbc:mysql://127.0.0.1:3306/db_mybatis" 
             userId = "root"
             password = "root" >  
         </ jdbcConnection >
 
         <!-- Java数据类型分离器,数据类型转换 =====================
             property 属性
                 name="强迫双精度"
                 value="不" -->
         < javaTypeResolver >
             < property name = "forceBigDecimals" value = "false" />
         </ javaTypeResolver >
  
         <!-- Java模型生成器 =======================================
             targetPackage="生成文件的目标路径"
             targetProject="已存在的项目包"
                 enableSubPackages-可以省略对应约束名,true-是的,可以省略tb_generator
                 trimString-验证字符串,true-是的 -->
         < javaModelGenerator
                 targetPackage = "cn.cvu.test.model"
                 targetProject = "src" >
             < property name = "enableSubPackages" value = "false" />
             < property name = "trimStrings" value = "true" />
         </ javaModelGenerator >
  
         <!-- sql映射文件生成器 =======================================
             targetPackage="生成文件的目标路径"
             targetProject="已存在的项目包"
                 enableSubPackages-可以省略对应约束名,true-是的,可以省略tb_generator -->
         < sqlMapGenerator
                 targetPackage = "cn.cvu.test.xml"
                 targetProject = "src" >
             < property name = "enableSubPackages" value = "false" />
         </ sqlMapGenerator >
  
         <!-- java委托对象DAO生成器,接口 =============================
             type=""
             targetPackage="生成文件的目标路径"
             targetProject="已存在的项目包"
                 enableSubPackages-可以省略对应约束名,true-是的,可以省略tb_generator -->
         < javaClientGenerator
                 type = "XMLMAPPER"
                 targetPackage = "cn.cvu.test.dao"
                 targetProject = "src" >
             < property name = "enableSubPackages" value = "false" />
         </ javaClientGenerator >
        
         <!-- 表单,已存在,根据此表生成其它文件 =======================
             tableName="已有的表单名称"
             domainObjetctName="对应生成的文件名前缀" -->
         < table tableName = "tb_generator" domainObjectName = "Eminem" >
             <!-- useActualColumnNames-使用真实列名 ,
                  true-嗯。如果false,则由columnOverride节点控制  -->
             < property name = "useActualColumnNames" value = "true" />
            
             <!-- 标识列
                 column="列名" sqlStatement="某种数据库语言" identity="作为主键" -->
             < generatedKey column = "id" sqlStatement = "MySql" identity = "true" />
            
             <!-- 覆盖项,当property name="useActualColumnNames" value="true"时。
                 column="被覆盖值的列名" property="用来覆盖的对应的java类的属性" -->
             < columnOverride column = "name" property = "generName" />
  
         </ table >
        
     </ context >
 
</ generatorConfiguration >

 

2.在MyEclipse中建空web项目:

            将配置文件放到src里。加入generator的jar文件。

            

3.编写并执行Java程序:

            

 

?
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
package cn.cvu.test.build;
  
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;
  
public class TestGenerateWithJava {
  
     @Test
     public void testBuild() throws Exception {
                 // 信息缓存
                 List<String> warnings = new ArrayList<String>();
                 // 覆盖已有的重名文件
                 boolean overwrite = true ;
                 // 准备 配置文件
                 File configFile = new File( "F:/myeclipse_workspace/generator/src/generatorConfigation.xml" );
                 // 1.创建 配置解析器
                 ConfigurationParser parser = new ConfigurationParser(warnings);
                 // 2.获取 配置信息
                 Configuration config = parser.parseConfiguration(configFile);
                 // 3.创建 默认命令解释调回器
                 DefaultShellCallback callback = new DefaultShellCallback(overwrite);
                 // 4.创建 mybatis的生成器
                 MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
                 // 5.执行,关闭生成器
         myBatisGenerator.generate( null );
     }
}

 

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:

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<? xml version = "1.0" encoding = "UTF-8" ?>
<! DOCTYPE configuration
    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
     "http://mybatis.org/dtd/mybatis-3-config.dtd">
 
< configuration >
     < environments default = "development" >
         < environment id = "development" >
             < transactionManager type = "JDBC" />
             < dataSource type = "POOLED" >
                 < property name = "driver" value = "com.mysql.jdbc.Driver" />
                 < property name = "url" value = "jdbc:mysql://127.0.0.1:3306/db_mybatis" />
                 < property name = "username" value = "root" />
                 < property name = "password" value = "root" />
             </ dataSource >
         </ environment >
     </ environments >
 
     < mappers >
         <!-- 引入MBG生成器创建的映射文件 -->
         < mapper resource = "cn/cvu/test/xml/EminemMapper.xml" />
     </ mappers >
</ configuration >

 

3)Java测试代码:

                创建测试类cn.cvu.test.dotest.TestDoGeneratorWithJava :

                

 

 

?
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
package cn.cvu.test.dotest;
 
import java.io.Reader;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import cn.cvu.test.dao.EminemMapper;
import cn.cvu.test.model.Eminem;
import cn.cvu.test.model.EminemExample;
import cn.cvu.test.model.EminemExample.Criteria;
 
public class TestDoGeneratorWithJava {
 
     @Test
     public void testQuery() throws Exception {
 
         // 创建SQL会话:
         Reader reader = Resources.getResourceAsReader( "mybatisConfigation.xml" );
         SqlSession session = new SqlSessionFactoryBuilder().build(reader).openSession();
 
         // 创建查询实例:
         EminemExample eminemExample = new EminemExample();
 
         // 获取映射实体:
         EminemMapper mapper = session.getMapper(EminemMapper. class );
 
         // 利用实体通过实例查询全部条目
         List<Eminem> eminems = mapper.selectByExample(eminemExample);
         System.out.println( "ID \t\t name \t\t notes \n" );
         for (Eminem eminem : eminems) {
                 System.out.println(eminem.getId()+
                                 "\t\t" +eminem.getGenerName()+
                                 "\t\t" +eminem.getNotes());
         }
         session.close();
     }
}
 

- end 

转载于:https://www.cnblogs.com/a757956132/p/4380103.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值