Mybatis 自动生成代码

准备条件:

将下面的文件放入同一目录下

 

操作步骤:

1/ 在 generatorConfig.xml 中配置相关的参数,与需要被自动生成的表
也可以 执行项目中的MybatisConfigAutoGen.java 将得到的结果复制过来 替换当前文档的内容


2/ 打开cmd 窗口,进入当前文件夹下,执行命令:
java -jar mybatis-generator-core-1.3.2.jar -configfile generatorConfig.xml -overwrite


3/ 将src 中的文件复制到 项目对应的目录下即可根据实际来修改

 

附:

1/  generatorConfig.xml  的内容为:(下面的配置文件是对应Oracle数据库)

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
<?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="ojdbc7.jar"/>
    <context id="DB2Tables"  targetRuntime="MyBatis3">
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>
        <jdbcConnection driverClass="oracle.jdbc.OracleDriver" connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:ORCL" userId="panie" password="panie123">
        </jdbcConnection>
       <javaTypeResolver>  
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>
        <javaModelGenerator targetPackage="com.panie.modules.configure.entity" targetProject="src"
            <property name="enableSubPackages" value="true"/> 
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <sqlMapGenerator targetPackage="mappings.com.panie.modules.configure" targetProject="src">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.panie.modules.configure.dao" targetProject="src">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator> 
<table tableName="BPMP_VERSION" domainObjectName="BpmpVersion" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
 
    </context>
</generatorConfiguration>

2/  使用Java 代码 遍历 ORACLE ,生成可用的配置

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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
package com.panie.common.utils;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
 
public class MybatisConfigAutoGen
{
     
    public static String jdbcDriver = "oracle.jdbc.OracleDriver";
    public static String jdbcUrl = "jdbc:oracle:thin:@127.0.0.1:1521:ORCL";
    public static String jdbcUser = "panie";
    public static String jdbcPassword = "panie123";
    public static String newline = "\r\n";
    public static String tableKey = "BPMP_VERSION";
     
    public static String driverJar = "ojdbc7.jar";//所使用驱动包
     
    public static String entityPkg = "com.panie.modules.configure.entity";
    public static String mappingPkg = "mappings.com.panie.modules.configure";
    public static String daoPkg = "com.panie.modules.configure.dao";
     
    public static String genConfig()
    {
        StringBuilder sb = new StringBuilder();
        sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>").append(newline);
        sb.append("<!DOCTYPE generatorConfiguration  PUBLIC \"-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN\" ").append(newline);
        sb.append("\"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd\"> ").append(newline); 
        sb.append("<generatorConfiguration>").append(newline);     
        sb.append("    <classPathEntry  location=\"").append(driverJar).append("\"/> ").append(newline);   
        sb.append("    <context id=\"DB2Tables\"  targetRuntime=\"MyBatis3\">").append(newline);     
        sb.append("        <commentGenerator>").append(newline);      
        sb.append("            <property name=\"suppressDate\" value=\"true\"/>").append(newline);
        sb.append("            <property name=\"suppressAllComments\" value=\"true\"/> ").append(newline);     
        sb.append("        </commentGenerator>").append(newline);     
        sb.append("        <jdbcConnection driverClass=\"").append(jdbcDriver).append("\" connectionURL=\"").append(jdbcUrl).append("\" userId=\"").append(jdbcUser).append("\" password=\"").append(jdbcPassword).append("\"> ").append(newline);     
        sb.append("        </jdbcConnection>").append(newline);      
        sb.append("       <javaTypeResolver>   ").append(newline);   
        sb.append("            <property name=\"forceBigDecimals\" value=\"false\"/> ").append(newline);     
        sb.append("        </javaTypeResolver>").append(newline);       
        sb.append("        <javaModelGenerator targetPackage=\"").append(entityPkg).append("\" targetProject=\"src\">  ").append(newline);  
        sb.append("            <property name=\"enableSubPackages\" value=\"true\"/>  ").append(newline);  
        sb.append("            <property name=\"trimStrings\" value=\"true\"/>").append(newline);    
        sb.append("        </javaModelGenerator> ").append(newline);
        sb.append("        <sqlMapGenerator targetPackage=\"").append(mappingPkg).append("\" targetProject=\"src\">").append(newline);    
        sb.append("            <property name=\"enableSubPackages\" value=\"true\"/>").append(newline);    
        sb.append("        </sqlMapGenerator>").append(newline);
        sb.append("        <javaClientGenerator type=\"XMLMAPPER\" targetPackage=\"").append(daoPkg).append("\" targetProject=\"src\"> ").append(newline);   
        sb.append("            <property name=\"enableSubPackages\" value=\"true\"/> ").append(newline);   
        sb.append("        </javaClientGenerator>  ").append(newline);  
        sb.append(genDbTable()).append(newline);
        sb.append("    </context>").append(newline);
   
        sb.append("</generatorConfiguration>").append(newline);
        return sb.toString();
         
    }
     
    public static String genDbTable()
    {
 
        StringBuilder sb = new StringBuilder();
        Connection conn = null;
        Statement stmt; //创建声明
        try
        {
            Class.forName(jdbcDriver);
            conn = DriverManager.getConnection(jdbcUrl, jdbcUser, jdbcPassword);
             
            stmt = conn.createStatement();
            ResultSet res = stmt.executeQuery("select * from user_tab_comments");
            while(res.next())
            {
                String tablename = res.getString(1);
                String tabletype = res.getString(2);
                if(tabletype.equals("TABLE")&&tablename.indexOf(tableKey)!=-1)
                {
                sb.append("<table tableName=\"");
                sb.append(tablename);
                sb.append("\" domainObjectName=\"");
                sb.append(StringUtils.toCapitalizeCamelCase(tablename));
                sb.append("\" enableCountByExample=\"false\" enableUpdateByExample=\"false\" enableDeleteByExample=\"false\" enableSelectByExample=\"false\" selectByExampleQueryId=\"false\"></table>").append(newline);
             
                }
            }
 
        } catch (Exception e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally
        {
            if (conn != null)
            {
                try
                {
                    conn.close();
                } catch (SQLException e)
                {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
         
        return sb.toString();
 
    }
     
    public static void main(String[] args)
    {
        System.out.println(genConfig());
    }
}

  

3/  使用Java 代码 遍历 MYSQL,生成可用的配置

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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
package com.panie.common.utils;
 
 
 
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
 
public class MybatisConfigAutoGen
{
     
    public static String jdbcDriver = "com.mysql.jdbc.Driver";
    public static String jdbcUrl = "jdbc:mysql://localhost:3306/blogdb?useUnicode=true&characterEncoding=utf-8";
    public static String jdbcUser = "root";
    public static String jdbcPassword = "123456";
    public static String newline = "\r\n";
    public static String tableKey = "sys_";
     
    public static String driverJar = "mysql-connector-java-5.1.38.jar";//所使用驱动包
     
    public static String entityPkg = "com.panie.modules.sys.entity";
    public static String mappingPkg = "mappings.com.panie.sys.configure";
    public static String daoPkg = "com.panie.modules.sys.dao";
     
    public static String genConfig()
    {
        StringBuilder sb = new StringBuilder();
        sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>").append(newline);
        sb.append("<!DOCTYPE generatorConfiguration  PUBLIC \"-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN\" ").append(newline);
        sb.append("\"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd\"> ").append(newline); 
        sb.append("<generatorConfiguration>").append(newline);     
        sb.append("    <classPathEntry  location=\"").append(driverJar).append("\"/> ").append(newline);   
        sb.append("    <context id=\"DB2Tables\"  targetRuntime=\"MyBatis3\">").append(newline);     
        sb.append("        <commentGenerator>").append(newline);      
        sb.append("            <property name=\"suppressDate\" value=\"true\"/>").append(newline);
        sb.append("            <property name=\"suppressAllComments\" value=\"true\"/> ").append(newline);     
        sb.append("        </commentGenerator>").append(newline);     
        sb.append("        <jdbcConnection driverClass=\"").append(jdbcDriver).append("\" connectionURL=\"").append(jdbcUrl).append("\" userId=\"").append(jdbcUser).append("\" password=\"").append(jdbcPassword).append("\"> ").append(newline);     
        sb.append("        </jdbcConnection>").append(newline);      
        sb.append("       <javaTypeResolver>   ").append(newline);   
        sb.append("            <property name=\"forceBigDecimals\" value=\"false\"/> ").append(newline);     
        sb.append("        </javaTypeResolver>").append(newline);       
        sb.append("        <javaModelGenerator targetPackage=\"").append(entityPkg).append("\" targetProject=\"src\">  ").append(newline);  
        sb.append("            <property name=\"enableSubPackages\" value=\"true\"/>  ").append(newline);  
        sb.append("            <property name=\"trimStrings\" value=\"true\"/>").append(newline);    
        sb.append("        </javaModelGenerator> ").append(newline);
        sb.append("        <sqlMapGenerator targetPackage=\"").append(mappingPkg).append("\" targetProject=\"src\">").append(newline);    
        sb.append("            <property name=\"enableSubPackages\" value=\"true\"/>").append(newline);    
        sb.append("        </sqlMapGenerator>").append(newline);
        sb.append("        <javaClientGenerator type=\"XMLMAPPER\" targetPackage=\"").append(daoPkg).append("\" targetProject=\"src\"> ").append(newline);   
        sb.append("            <property name=\"enableSubPackages\" value=\"true\"/> ").append(newline);   
        sb.append("        </javaClientGenerator>  ").append(newline);  
        sb.append(genDbTable()).append(newline);
        sb.append("    </context>").append(newline);
   
        sb.append("</generatorConfiguration>").append(newline);
        return sb.toString();
         
    }
     
    public static String genDbTable()
    {
 
        StringBuilder sb = new StringBuilder();
        Connection conn = null;
        Statement stmt; //创建声明
        try
        {
            Class.forName(jdbcDriver);
            conn = DriverManager.getConnection(jdbcUrl, jdbcUser, jdbcPassword);
            DatabaseMetaData metadata = conn.getMetaData();
            ResultSet res = metadata.getTables("blogdb", null, null, null);
            while(res.next())
            {
                String tablename = res.getString(3);
                String tabletype = res.getString(4);
                if(tabletype.equals("TABLE")&&tablename.toLowerCase().indexOf(tableKey)!=-1)
                {
                sb.append("<table tableName=\"");
                sb.append(tablename);
                sb.append("\" domainObjectName=\"");
                sb.append(StringUtils.toCapitalizeCamelCase(tablename));
                sb.append("\" enableCountByExample=\"false\" enableUpdateByExample=\"false\" enableDeleteByExample=\"false\" enableSelectByExample=\"false\" selectByExampleQueryId=\"false\"></table>").append(newline);
             
                }
            }
 
        } catch (Exception e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally
        {
            if (conn != null)
            {
                try
                {
                    conn.close();
                } catch (SQLException e)
                {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
         
        return sb.toString();
 
    }
     
    public static void main(String[] args)
    {
        System.out.println(genConfig());
    }
}

  

posted @   panie2015  阅读(286)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示