本文目标:介绍如何使用 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个文件

因为我们是给 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<String> warnings = new ArrayList<String>();
  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. <!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="true" />
  10. </commentGenerator>
  11. <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
  12. <jdbcConnection driverClass="com.mysql.jdbc.Driver"
  13. connectionURL="jdbc:mysql://localhost:3306/mybatis" userId="root"
  14. password="">
  15. </jdbcConnection>
  16. <!-- <jdbcConnection driverClass="oracle.jdbc.OracleDriver"
  17. connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:yycg"
  18. userId="yycg"
  19. password="yycg">
  20. </jdbcConnection> -->
  21. <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL和NUMERIC类型解析为java.math.BigDecimal -->
  22. <javaTypeResolver>
  23. <property name="forceBigDecimals" value="false" />
  24. </javaTypeResolver>
  25. <!-- targetProject:生成PO类的位置,重要!! -->
  26. <javaModelGenerator targetPackage="com.liuyanzhao.ssm.po"
  27. targetProject="Mybatis_Generator/src">
  28. <!-- enableSubPackages:是否让schema作为包的后缀 -->
  29. <property name="enableSubPackages" value="false" />
  30. <!-- 从数据库返回的值被清理前后的空格 -->
  31. <property name="trimStrings" value="true" />
  32. </javaModelGenerator>
  33. <!-- targetProject:mapper映射文件生成的位置,重要!! -->
  34. <sqlMapGenerator targetPackage="com.liuyanzhao.ssm.mapper"
  35. targetProject="Mybatis_Generator/src">
  36. <property name="enableSubPackages" value="false" />
  37. </sqlMapGenerator>
  38. <!-- targetPackage:mapper接口生成的位置,重要!! -->
  39. <javaClientGenerator type="XMLMAPPER"
  40. targetPackage="com.liuyanzhao.ssm.mapper"
  41. targetProject="Mybatis_Generator/src">
  42. <property name="enableSubPackages" value="false" />
  43. </javaClientGenerator>
  44. <!-- 指定数据库表,要生成哪些表,就写哪些表,要和数据库中对应,不能写错! -->
  45. <table tableName="items"></table>
  46. <table tableName="orders"></table>
  47. <table tableName="orderdetail"></table>
  48. <table tableName="user"></table>
  49. </context>
  50. </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 包下都会自动生成下面文件

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

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

四、补充

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

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

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

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

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

  1. Mybatis逆向工程自动生成代码文件

    一般来说都会新建另外一个项目,用于生成代码文件,然后拷贝到需要的项目中.新建maven项目用于生成代码文件,项目目录如下所示: pom.xml内容如下: <project xmlns=" ...

  2. (转)MyBatis框架的学习(七)——MyBatis逆向工程自动生成代码

    http://blog.csdn.net/yerenyuan_pku/article/details/71909325 什么是逆向工程 MyBatis的一个主要的特点就是需要程序员自己编写sql,那么 ...

  3. Mybatis中自动生成代码(利用mybatis-generator-core-1.3.2)

    Mybatis中自动生成代码(利用mybatis-generator-core-1.3.2) 引言: 在使用mybatis开发的过程中,通常我们会给数据库的每张表编写对应的po.mapper.mapp ...

  4. 简单的利用IDEA搭建SpringBoot+Maven+Mybatis+自动生成代码

    最近在系统的学习SpringBoot框架,并且要用该框架做个项目--网上也大大小小看了很多教程,感觉很多写文章的人都不太负责任,只知道搬运,大概都没有实际操作过,问题也是有很多,所以自己写一篇文章记录 ...

  5. SpringBoot如何自动生成实体类和Dao层以及映射文件(mybatis generator 自动生成代码)

    一.首先添加自动生成代码插件 <!-- mybatis generator 自动生成代码插件 生成时解除注释 --><plugin><groupId>org.myb ...

  6. 使用Mybatis Generator自动生成代码

    MyBatis Generator(MBG)是MyBatis MyBatis 和iBATIS的代码生成器. 它将为所有版本的MyBatis以及版本2.2.0之后的iBATIS版本生成代码. 它将内省数 ...

  7. SpringBoot入门篇--整合mybatis+generator自动生成代码+druid连接池+PageHelper分页插件

    我们这一一篇博客讲的是如何整合Springboot和Mybatis框架,然后使用generator自动生成mapper,pojo等文件.然后再使用阿里巴巴提供的开源连接池druid,这个连接池的好处我 ...

  8. 用mybatis的generator自动生成代码--坑我都走了一遍,后面的同学别踩了

    先说什么是mybatis-generator? mybatis-geneator是一款mybatis自动代码生成工具,可以通过配置,快速生成mapper和xml文件. 步骤一:在pom文件中添加插件配 ...

  9. Mybatis自动生成代码插件generator

    Mybatis自动生成代码插件generator 1.pom maven依赖 <dependencies><dependency><groupId>org.myba ...

  10. Mybatis Plus自动生成代码

    mybatis-plus自动生成代码 一.简易生成代码 二.指定生成的样式,并且不在一个模块 1.父pom文件配置 2.子模块pom文件配置 3.准备vm文件 4.设置MyBatisPlusGener ...

最新文章

  1. JAVA基础13-Java抽象方法、抽象类、抽象之模板方法模式
  2. FileChannel应用实例——本地文件读数据
  3. 后端用python还是php_【后端开发】2019学python还是php
  4. leetcode-生成括号(回溯算法)
  5. ***学习笔记教程五:***技术
  6. Windows环境下Android Studio系列5—日志调试
  7. vue引入id3_vue常见知识点
  8. excel制作跨职能流程图_用Excel规划求解工具,实现组合投资优化
  9. CSS 滤镜学习小结
  10. storm中的乐器 wolven_Wolven Storm 风雪狼踪
  11. 融合非负矩阵分解和图全变分的歌曲推荐算法
  12. Django rest framework(7)----分页
  13. “暗云Ⅲ”实为老病毒 360去年已查杀
  14. 德标螺纹规格对照表_德标等螺纹对照表
  15. MTK6589双卡卡1或是卡2拨出电话
  16. ABAP BDC使用EXCEL模板批量修改物料
  17. 逍遥模拟器自定义默认桌面程序
  18. mysql安装教程5.1_mysql 5.1安装教程详解
  19. 计算机英语输入法怎么,电脑英文输入法不见了怎么处理?
  20. 我们为什么需要信息增益比,而不是信息增益?

热门文章

  1. pre和code的区别
  2. mysql lamp 配置命令总结
  3. 重温JS基础--引用类型(一)
  4. Semantic-UI的React实现(一):架构介绍
  5. web攻击方式和防御方法
  6. Solr学习总结(五)SolrNet的基本用法及CURD
  7. 研发管理系统选型必读
  8. Quartus II 的MegaWizard字体过小
  9. windows和linux之间共享文件 samba的使用
  10. C4996 'sprintf': This function or variable may be unsafe.