Mybatis系列(五):mybatis逆向工程


一、背景        

        在實際開發中我們會自己去寫mapper映射文件,接口,數據庫表對應的實體類,如果需求任務比較少,咱們還可以慢慢的一個一個去寫,但是這是不現實的,因為在工作中我們的任務是很多的,這時mybatis逆向工程就能幫助我們節省這部分的時間了,因為mybatis逆向工程能根據數據庫的表結構生成對應的mapper映射文件,接口,實體類

二、實踐

1. 新建一個mybatis逆向工程測試的項目MybatisReverseProject和生成文件存放的項目MybatisTest,使用的mybatis-generator-core是借鑒githup上的一個兄弟改寫源碼的,他的已經能滿足我的需求了,有需要的同學可以自己去改寫,改寫內容如下:

             生成的*mapper.xml文件中使用4個空格來縮進
             生成的*mapper.xml文件中每個元素間增加一空行,如insert,update,delete等之間增加一空行
             去掉*mapper.xml文件中生成的注釋
             根據數據庫表名及字段的注釋為Java類、屬性增加注釋,可以在源碼org.mybatis.generator.internal.db.DatabaseIntrospector.java類中根據個人情況進行修改
             實現每次生成都覆蓋生成文件

 

         

     

 2.在數據庫里面建立需要使用的表

1 CREATE TABLE `t_user` (
2   `id` int(11) NOT NULL AUTO_INCREMENT,
3   `username` varchar(30) NOT NULL COMMENT '用戶名稱',
4   `birthday` date DEFAULT NULL COMMENT '生日',
5   `sex` char(2) DEFAULT NULL COMMENT '性別',
6   `address` varchar(256) DEFAULT NULL COMMENT '地址',
7   PRIMARY KEY (`id`)
8 ) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='用戶信息表';

3. 在generatorConfig.xml文件中配置數據庫連接的信息,配置生成實體類的位置、生成mapper映射文件生成的位置、生成mapper接口生成的位置,以上配置的3個路徑為你項目的路徑;指定要逆向生成代碼的數據庫的表

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE generatorConfiguration
 3   PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
 4   "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
 5 
 6 <generatorConfiguration>
 7     <context id="testTables" targetRuntime="MyBatis3">
 8         <commentGenerator>
 9             <!-- 是否去除自動生成的注釋 true:是 : false:否 -->
10             <property name="suppressAllComments" value="false" />
11         </commentGenerator>
12         <!--數據庫連接的信息:驅動類、連接地址、用戶名、密碼 -->
13         <jdbcConnection driverClass="com.mysql.jdbc.Driver"
14             connectionURL="jdbc:mysql://localhost:3306/study" userId="root"
15             password="123456">
16         </jdbcConnection> 
20         <!-- 默認false,把JDBC DECIMAL 和 NUMERIC 類型解析為 Integer,為 true時把JDBC DECIMAL 
21             和 NUMERIC 類型解析為java.math.BigDecimal -->
22         <javaTypeResolver>
23             <property name="forceBigDecimals" value="false" />
24         </javaTypeResolver>
25 
26         <!-- targetProject:生成實體類的位置 -->
27         <javaModelGenerator targetPackage="com.study.mybatis.entiy"
28             targetProject="D:\workspace\MybatisTest\src\main\java">
29             <!-- enableSubPackages:是否讓schema作為包的后綴 -->
30             <property name="enableSubPackages" value="false" />
31             <!-- 從數據庫返回的值被清理前后的空格 -->
32             <property name="trimStrings" value="true" />
33         </javaModelGenerator>
34         <!-- targetProject:mapper映射文件生成的位置 -->
35         <sqlMapGenerator targetPackage="com.study.mybatis.mapper"
36             targetProject="D:\workspace\MybatisTest\src\main\java">
37             <!-- enableSubPackages:是否讓schema作為包的后綴 -->
38             <property name="enableSubPackages" value="false" />
39         </sqlMapGenerator>
40         <!-- targetPackage:mapper接口生成的位置 -->
41         <javaClientGenerator type="XMLMAPPER"
42             targetPackage="com.study.mybatis.dao" targetProject="D:\workspace\MybatisTest\src\main\java">
43             <!-- enableSubPackages:是否讓schema作為包的后綴 -->
44             <property name="enableSubPackages" value="false" />
45         </javaClientGenerator>
46 
47         <!-- 指定數據庫表 -->
48         <table tableName="t_user" schema="" enableCountByExample="false"
49             enableDeleteByExample="false" enableUpdateByExample="false"
50             enableSelectByExample="false" selectByExampleQueryId="false"></table>
51 
52         <!-- 有些表的字段需要指定java類型 <table schema="" tableName=""> <columnOverride column="" 
53             javaType="" /> </table> -->
54     </context>
55 </generatorConfiguration>

4. 啟動主程序GeneratorSqlmap.java生成需要的文件

 1 package com.lgs.reverse.start;
 2 
 3 import java.io.File;
 4 import java.util.ArrayList;
 5 import java.util.List;
 6 
 7 import org.mybatis.generator.api.MyBatisGenerator;
 8 import org.mybatis.generator.config.Configuration;
 9 import org.mybatis.generator.config.xml.ConfigurationParser;
10 import org.mybatis.generator.internal.DefaultShellCallback;
11 
12 /**
13  * 根據數據庫定義的表結構生成實體類、接口、mapper映射文件的主類
14  * 使用的mybatis-generator-core是借鑒githup上的一個兄弟改寫源碼的, 他的已經能滿足我的需求了有需要的同學可以自己去改寫
15  * 
16  * @author lgs
17  *
18  */
19 public class GeneratorSqlmap {
20 
21     public void generator() throws Exception {
22 
23         List<String> warnings = new ArrayList<String>();
24         boolean overwrite = true;
25         // 指定 逆向工程配置文件
26         File configFile = new File("config/generatorConfig.xml");
27         ConfigurationParser cp = new ConfigurationParser(warnings);
28         Configuration config = cp.parseConfiguration(configFile);
29         DefaultShellCallback callback = new DefaultShellCallback(overwrite);
30         MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
31         myBatisGenerator.generate(null);
32 
33     }
34 
35     public static void main(String[] args) throws Exception {
36         try {
37             GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap();
38             generatorSqlmap.generator();
39         } catch (Exception e) {
40             e.printStackTrace();
41         }
42 
43     }
44 
45 }

5. 需要完整項目的同學可以去我的githup上下載,下載地址https://github.com/leeSmall/MybatisReverseProject


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM