MyBatis逆向工程

以前每次用MyBatis,都是自己手工写MyBatis的Mapper接口和Mapper.xml文件,自从发现有了MyBatis逆向工程后,在配置文件中写好数据库连接信息以及要逆向的表之后,写上几行代码,运行代码,MyBatis的Mapper接口和Mapper.xml文件一秒生成,极大的提高了效率,简直太酷了;

通过MyBatis逆向工程生成Mapper接口和Mapper.xml文件的步骤如下:

1、下载MyBatis逆向工程包mybatis-generator-core-1.3.2.jar和mybatis的jar包;

2、在数据库中建好库和表,这里以MySql为例,在MySql中建好库和表;

3、新建java工程项目,导入mybatis-generator-core-1.3.2.jar和相关Mybatis的jar包;

4、添加配置文件generatorConfig.xml,内容如下:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
 3 
 4 <generatorConfiguration>
 5     <context id="testTables" targetRuntime="MyBatis3">
 6         <commentGenerator>
 7             <!-- 是否去除自动生成的注释 true:是 : false:否 -->
 8             <property name="suppressAllComments" value="true" />
 9         </commentGenerator>
10         <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
11         <jdbcConnection driverClass="com.mysql.jdbc.Driver"
12             connectionURL="jdbc:mysql://localhost:3306/test" userId="root"
13             password="123">
14         </jdbcConnection>
15 
16         <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和 
17             NUMERIC 类型解析为java.math.BigDecimal -->
18         <javaTypeResolver>
19             <property name="forceBigDecimals" value="false" />
20         </javaTypeResolver>
21 
22         <!-- targetProject:生成PO类的位置 -->
23         <javaModelGenerator targetPackage="com.xupt.sm.po"
24             targetProject=".src">
25             <!-- enableSubPackages:是否让schema作为包的后缀 -->
26             <property name="enableSubPackages" value="false" />
27             <!-- 从数据库返回的值被清理前后的空格 -->
28             <property name="trimStrings" value="true" />
29         </javaModelGenerator>
30         <!-- targetProject:mapper映射文件生成的位置 -->
31         <sqlMapGenerator targetPackage="com.xupt.sm.mapper" 
32             targetProject=".src">
33             <!-- enableSubPackages:是否让schema作为包的后缀 -->
34             <property name="enableSubPackages" value="false" />
35         </sqlMapGenerator>
36         <!-- targetPackage:mapper接口生成的位置 -->
37         <javaClientGenerator type="XMLMAPPER"
38             targetPackage="com.xupt.sm.mapper" 
39             targetProject=".src">
40             <!-- enableSubPackages:是否让schema作为包的后缀 -->
41             <property name="enableSubPackages" value="false" />
42         </javaClientGenerator>
43         <!-- 指定数据库表 -->
44         <table tableName="addresses"></table>
45         <table tableName="course_enrollment"></table>
46         <table tableName="courses"></table>
47         <table tableName="students"></table>
48         <table tableName="tutors"></table>                
49     </context>
50 </generatorConfiguration>

其中jdbcConnection部分修改成自己本机的数据库连接配置和用户名密码,javaModelGenerator中的targetProject为生成PO实体类文件的目录,默认为src目录,一般保持默认即可, targetPackage指定了生成PO实体类文件的包名,修改成自己的包名即可,sqlMapGenerator中的targetProject和targetPackage指定了mapper文件生成的目录和包名,javaClientGenerator中的targetProject和targetPackage指定了mapper接口文件生成的目录和包名;最地下的table信息指定了要逆向的表名,有多少个写多少个;

5、新建类GeneratorSqlmap并编写代码:

 1 public class GeneratorSqlmap {
 2 
 3        public void generator() throws Exception{
 4               List<String> warnings = new ArrayList<String>();
 5               boolean overwrite = true;
 6               //指定 逆向工程配置文件
 7               File configFile = new File("generatorConfig.xml");
 8               ConfigurationParser cp = new ConfigurationParser(warnings);
 9               Configuration config = cp.parseConfiguration(configFile);
10               DefaultShellCallback callback = new DefaultShellCallback(overwrite);
11               MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
12               myBatisGenerator.generate(null);
13        }
14 
15        public static void main(String[] args) throws Exception {
16               try {
17                      GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap();
18                      generatorSqlmap.generator();
19               } catch (Exception e) {
20                      e.printStackTrace();
21               }            
22        }
23 }

6、运行GeneratorSqlmap的main方法,刷新src目录,可以看到src目录下生成了对应的mapper接口文件,mapper.xml文件和PO实体类文件,然后在这些文件上修改少量代码即可;

原文地址:https://www.cnblogs.com/laoxia/p/8327811.html