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()); } } |
作者:panie
出处:http://www.cnblogs.com/panie2015/
如果您希望与我交流互动,欢迎加我微信
本文内容为作者辛苦整理书写,欢迎转载,但请保留文章出处
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?