Mybatis Maven MySQL

1、使用Maven插件进行逆向工程

A.配置逆向工程文件generator.xml

  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. <generatorConfiguration>
  6. <context id="testTables" targetRuntime="MyBatis3">
  7. <commentGenerator>
  8. <!-- 是否去除自动生成的注释 true:是 : false:否 -->
  9. <property name="suppressAllComments" value="false"/>
  10. </commentGenerator>
  11. <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
  12. <!--com.mysql.cj.jdbc.Driver是最新版本MySQL驱动连接方式-->
  13. <!--?serverTimezone=UTC设置时区-->
  14. <jdbcConnection
  15. driverClass="com.mysql.cj.jdbc.Driver"
  16. connectionURL="jdbc:mysql:///ssm?serverTimezone=UTC"
  17. userId="root"
  18. password="123456">
  19. <!--设置可以获取tables remarks信息-->
  20. <property name="useInformationSchema" value="true"/>
  21. <!--设置可以获取remarks信息-->
  22. <property name="remarks" value="true"/>
  23. </jdbcConnection>
  24. <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和
  25. NUMERIC 类型解析为java.math.BigDecimal -->
  26. <javaTypeResolver>
  27. <property name="forceBigDecimals" value="false"/>
  28. </javaTypeResolver>
  29. <!-- targetProject:生成POJO/Bean类的位置 -->
  30. <javaModelGenerator targetPackage="com.fcant.ssmcom.bean"
  31. targetProject=".\src\main\java">
  32. <!-- enableSubPackages:是否让schema作为包的后缀 -->
  33. <property name="enableSubPackages" value="false"/>
  34. <!-- 从数据库返回的值被清理前后的空格 -->
  35. <property name="trimStrings" value="true"/>
  36. </javaModelGenerator>
  37. <!-- targetProject:mapper映射文件生成的位置 -->
  38. <sqlMapGenerator targetPackage="mapper"
  39. targetProject=".\src\main\resources">
  40. <!-- enableSubPackages:是否让schema作为包的后缀 -->
  41. <property name="enableSubPackages" value="false"/>
  42. </sqlMapGenerator>
  43. <!-- targetPackage:mapper接口生成的位置 -->
  44. <javaClientGenerator type="XMLMAPPER"
  45. targetPackage="com.fcant.ssmcom.mapper"
  46. targetProject=".\src\main\java">
  47. <!-- enableSubPackages:是否让schema作为包的后缀 -->
  48. <property name="enableSubPackages" value="false"/>
  49. </javaClientGenerator>
  50. <!--指定数据库表的生成策略-->
  51. <table tableName="ss_product" domainObjectName="Product"
  52. enableCountByExample="false" enableUpdateByExample="false"
  53. enableDeleteByExample="false" enableSelectByExample="false"
  54. selectByExampleQueryId="false">
  55. </table>
  56. </context>
  57. </generatorConfiguration>

B.需要自行更改以下配置项

image.png
image.png

C.在pom文件添加Mybatis逆向工程插件和相应的依赖包-Mybatis-Generator

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.mybatis</groupId>
  4. <artifactId>mybatis</artifactId>
  5. <version>3.4.6</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>org.mybatis.generator</groupId>
  9. <artifactId>mybatis-generator-core</artifactId>
  10. <version>1.3.7</version>
  11. </dependency>
  12. <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus -->
  13. <dependency>
  14. <groupId>com.baomidou</groupId>
  15. <artifactId>mybatis-plus</artifactId>
  16. <version>3.1.2</version>
  17. </dependency>
  18. <dependency>
  19. <groupId>org.mybatis</groupId>
  20. <artifactId>mybatis-spring</artifactId>
  21. <version>2.0.2</version>
  22. </dependency>
  23. <!-- https://mvnrepository.com/artifact/tk.mybatis/mapper -->
  24. <dependency>
  25. <groupId>tk.mybatis</groupId>
  26. <artifactId>mapper</artifactId>
  27. <version>4.1.5</version>
  28. </dependency>
  29. <!-- https://mvnrepository.com/artifact/tk.mybatis/mapper -->
  30. <dependency>
  31. <groupId>tk.mybatis</groupId>
  32. <artifactId>mapper</artifactId>
  33. <version>4.1.5</version>
  34. </dependency>
  35. </dependencies>
  36. <build>
  37. <plugins>
  38. <!--Mybatis逆向工程的插件-->
  39. <plugin>
  40. <groupId>org.mybatis.generator</groupId>
  41. <artifactId>mybatis-generator-maven-plugin</artifactId>
  42. <version>1.3.7</version>
  43. <configuration>
  44. <!--指定本地的逆向工程设置文件-->
  45. <configurationFile>src/main/resources/generator.xml</configurationFile>
  46. <verbose>true</verbose>
  47. <overwrite>true</overwrite>
  48. </configuration>
  49. <!--在插件配置数据库驱动包以防止插件运行找不到驱动包-->
  50. <dependencies>
  51. <dependency>
  52. <groupId>mysql</groupId>
  53. <artifactId>mysql-connector-java</artifactId>
  54. <version>8.0.13</version>
  55. </dependency>
  56. </dependencies>
  57. </plugin>
  58. </plugins>
  59. </build>

D.需要自行更改的地方

image.png

E.执行逆向工程

image.png

2、使用配置类进行逆向工程

A.导入相关jar包

lib.zip

B.配置逆向工程文件mdb.xml-将该文件放至src目录下

  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. <generatorConfiguration>
  6. <context id="testTables" targetRuntime="MyBatis3">
  7. <commentGenerator>
  8. <!-- 是否去除自动生成的注释 true:是 : false:否 -->
  9. <!-- <property name="suppressDate" value="true"/> -->
  10. <property name="suppressAllComments" value="true"/>
  11. </commentGenerator>
  12. <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
  13. <!--com.mysql.cj.jdbc.Driver是最新版本MySQL驱动连接方式-->
  14. <!--?serverTimezone=UTC设置时区-->
  15. <jdbcConnection
  16. driverClass="com.mysql.cj.jdbc.Driver"
  17. connectionURL="jdbc:mysql:///ssm?serverTimezone=UTC"
  18. userId="root"
  19. password="123456">
  20. <!--设置可以获取tables remarks信息-->
  21. <property name="useInformationSchema" value="true"/>
  22. <!--设置可以获取remarks信息-->
  23. <property name="remarks" value="true"/>
  24. </jdbcConnection>
  25. <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和
  26. NUMERIC 类型解析为java.math.BigDecimal -->
  27. <javaTypeResolver>
  28. <property name="forceBigDecimals" value="false"/>
  29. </javaTypeResolver>
  30. <!-- targetProject:生成POJO/Bean类的位置 -->
  31. <javaModelGenerator targetPackage="com.fcant.ssmcom.bean"
  32. targetProject=".\src\main\java">
  33. <!-- enableSubPackages:是否让schema作为包的后缀 -->
  34. <property name="enableSubPackages" value="false"/>
  35. <!-- 从数据库返回的值被清理前后的空格 -->
  36. <property name="trimStrings" value="true"/>
  37. </javaModelGenerator>
  38. <!-- targetProject:mapper映射文件生成的位置 -->
  39. <sqlMapGenerator targetPackage="mapper"
  40. targetProject=".\src\main\resources">
  41. <!-- enableSubPackages:是否让schema作为包的后缀 -->
  42. <property name="enableSubPackages" value="false"/>
  43. </sqlMapGenerator>
  44. <!-- targetPackage:mapper接口生成的位置 -->
  45. <javaClientGenerator type="XMLMAPPER"
  46. targetPackage="com.fcant.ssmcom.mapper"
  47. targetProject=".\src\main\java">
  48. <!-- enableSubPackages:是否让schema作为包的后缀 -->
  49. <property name="enableSubPackages" value="false"/>
  50. </javaClientGenerator>
  51. <!--指定数据库表的生成策略-->
  52. <!--schema属性标签可以解决JDBC连接MySQL找不到主键的问题-->
  53. <!--catalog属性标签解决JDBC对catalog的支持性而不能识别数据库的主键,但是会在映射文件表前自动生成"数据库名称.."-->
  54. <!-- <table tableName="busdata" domainObjectName="BusData" schema="itbus"></table>-->
  55. <table tableName="ss_product" domainObjectName="Product"
  56. enableCountByExample="false" enableUpdateByExample="false"
  57. enableDeleteByExample="false" enableSelectByExample="false"
  58. selectByExampleQueryId="false">
  59. </table>
  60. </context>
  61. </generatorConfiguration>

C.需要自行更改以下配置项

image.png
image.png

D.配置逆向工程工具类

  1. /**
  2. *Generator
  3. *
  4. *@description:Mybatis逆向工程工具类,在测试包运行降低耦合
  5. *@author:Fcscanf@樊乘乘
  6. *@date:2018-08-05下午16:51
  7. */
  8. public class Generator {
  9. public static void main (String[] args) throws IOException,XMLParserException,SQLException,InterruptedException,InvalidConfigurationException{
  10. List<String> warings = new ArrayList<String>();
  11. boolean overwrite = true;
  12. File configFile = new File ("mdb.xml");
  13. ConfigurationParser configurationParser =new ConfigurationParser(warings);
  14. Configuration configuration = configurationParser.parseConfiguration(configFile);
  15. DefaultShellCallback callback = new DefaultShellCallback(overwrite);
  16. MyBatisGenerator myBatisGenerator =new MyBatisGenerator(configuration,callback,warings);
  17. myBatisGenerator.generate(null);
  18. }
  19. }

E.运行工具类执行逆向工程

image.png