mybatis逆向工程利用mybatis-generator-core自动生成代码

本文目标:介绍如何使用 mybatis-generator-core-1.3.2.jar 生成数据表的持久类(po)和映射类(mapper.java)和映射文件(mapper.xml)。因为当我们的数据表和字段都比较多的时候,如果让我们手动生成这些,会比较繁琐。所以我们不得不通过逆向工程来生成我们需要的东西,当然,过程也比较简单。

一、需要的文件

  • 生成代码需要的主jar包: mybatis-generator-core-1.3.2.jar
  • mybatis jar包: mybatis-3.4.4.jar
  • mysql连接: mysql-connector-java-5.1.41-bin.jar
  • 配置文件: generatorConfig.xml (下图没有显示,我是放在 D 盘根目录)
  • 运行文件:generatorConfig.java

如下图:总共必须5个文件

mybatis逆向工程利用mybatis-generator-core自动生成代码_第1张图片

mybatis逆向工程利用mybatis-generator-core自动生成代码_第2张图片

因为我们是给 SpringMVC_Mybatis 课程准备,所以这里也新建了 com.liuyanzhao.ssm 包

记得把 jar 包导入环境

 

 

二、代码如下

1、GeneratorSqlmap.java   运行程序的作用

代码也可以参考这里:http://www.mybatis.org/generator/running/runningWithJava.html

  1. import org.mybatis.generator.api.MyBatisGenerator;
  2. import org.mybatis.generator.config.Configuration;
  3. import org.mybatis.generator.config.xml.ConfigurationParser;
  4. import org.mybatis.generator.internal.DefaultShellCallback;
  5. import java.io.File;
  6. import java.util.ArrayList;
  7. import java.util.List;
  8. public class GeneratorSqlmap {
  9.     public void generator() throws Exception{
  10.         List warnings = new ArrayList();
  11.         boolean overwrite = true;
  12.         //File configFile = new File("generatorConfig.xml");似乎无效
  13.         File configFile = new File("D:\\generatorConfig.xml");
  14.         ConfigurationParser cp = new ConfigurationParser(warnings);
  15.         Configuration config = cp.parseConfiguration(configFile);
  16.         DefaultShellCallback callback = new DefaultShellCallback(overwrite);
  17.         MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
  18.         myBatisGenerator.generate(null);
  19.     }
  20.     public static void main(String[] args) throws Exception {
  21.         try {
  22.             GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap();
  23.             generatorSqlmap.generator();
  24.         } catch (Exception e) {
  25.             e.printStackTrace();
  26.         }
  27.     }
  28. }

请注意第15行部分,不知道为什么 File 无法读取到相对路径的文件,很是纳闷。所以,我这里把 generatorConfig.xml 放到了 D 盘根目录

 

2、generatorConfig.xml

这个文件也可以参考:http://www.mybatis.org/generator/configreference/xmlconfig.html

  1. xml version="1.0" encoding="UTF-8"?>
  2.         PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
  3.         "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
  4. <generatorConfiguration>
  5.     <context id="testTables" targetRuntime="MyBatis3">
  6.         <commentGenerator>
  7.             
  8.             <property name="suppressAllComments" value="true" />
  9.         commentGenerator>
  10.         
  11.         <jdbcConnection driverClass="com.mysql.jdbc.Driver"
  12.                         connectionURL="jdbc:mysql://localhost:3306/mybatis" userId="root"
  13.                         password="">
  14.         jdbcConnection>
  15.         
  16.         <javaTypeResolver>
  17.             <property name="forceBigDecimals" value="false" />
  18.         javaTypeResolver>
  19.         
  20.         <javaModelGenerator targetPackage="com.liuyanzhao.ssm.po"
  21.                             targetProject="Mybatis_Generator/src">
  22.             
  23.             <property name="enableSubPackages" value="false" />
  24.             
  25.             <property name="trimStrings" value="true" />
  26.         javaModelGenerator>
  27.         
  28.         <sqlMapGenerator targetPackage="com.liuyanzhao.ssm.mapper"
  29.                          targetProject="Mybatis_Generator/src">
  30.             <property name="enableSubPackages" value="false" />
  31.         sqlMapGenerator>
  32.         
  33.         <javaClientGenerator type="XMLMAPPER"
  34.                              targetPackage="com.liuyanzhao.ssm.mapper"
  35.                              targetProject="Mybatis_Generator/src">
  36.             <property name="enableSubPackages" value="false" />
  37.         javaClientGenerator>
  38.         
  39.         <table tableName="items">table>
  40.         <table tableName="orders">table>
  41.         <table tableName="orderdetail">table>
  42.         <table tableName="user">table>
  43.     context>
  44. generatorConfiguration>

注意:

1、把 generatorConfig.xml 放到 D 盘根目录,以和 java 文件中的路径对应

2、targetPackage 是包名,Mybatis_Generator/src 是项目名+ src 目录。windows下这里可以写 .\src

mac 下写 ./src  巨坑。

3、table 标签指定表名

 

三、运行程序

运行方法很简单,直接运行 GeneratorSqlmap.java,正常情况下可以看到

Process finished with exit code 0 的回复,如果弄了日志,还可以看到执行过程

如果你的出现 java.io.FileNotFoundException: xxxxxxxxxxxx (系统找不到指定的文件。)

一定是 xml 文件的路径和 java 文件中指定的不一致

最终,我们的 mapper 和 po 包下都会自动生成下面文件

mybatis逆向工程利用mybatis-generator-core自动生成代码_第3张图片

注意:只能点一次运行,如果多次运行会重现重复代码,导致报下列错误

Result Maps collection already contains value for com.liuyanzhao.ssm.mapper.Items的原因及解决办法

 

四、补充

我们最好专门新建一个项目用来生成这些代码,然后将他们复制我们正在开发的项目中。而不是在项目中,生成,自动生成的会把原来的给覆盖掉。

通常,我们的持久类是不修改的,而是新建它的扩展类(当然要继承持久类),因为当我们数据库修改字段或者添加字段后,又会重新生成代码,所以不建议动自动生成的持久类。

Mapper中的方法比较多,我们尽管拿来用就好,节省不少时间,同时也要扩展它。

 

本文链接:https://liuyanzhao.com/5927.html

你可能感兴趣的:(Mybatis)