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个文件
因为我们是给 SpringMVC_Mybatis 课程准备,所以这里也新建了 com.liuyanzhao.ssm 包
记得把 jar 包导入环境
二、代码如下
1、GeneratorSqlmap.java 运行程序的作用
代码也可以参考这里:http://www.mybatis.org/generator/running/runningWithJava.html
- import org.mybatis.generator.api.MyBatisGenerator;
- import org.mybatis.generator.config.Configuration;
- import org.mybatis.generator.config.xml.ConfigurationParser;
- import org.mybatis.generator.internal.DefaultShellCallback;
- import java.io.File;
- import java.util.ArrayList;
- import java.util.List;
- public class GeneratorSqlmap {
- public void generator() throws Exception{
- List<String> warnings = new ArrayList<String>();
- boolean overwrite = true;
- //File configFile = new File("generatorConfig.xml");似乎无效
- File configFile = new File("D:\\generatorConfig.xml");
- ConfigurationParser cp = new ConfigurationParser(warnings);
- Configuration config = cp.parseConfiguration(configFile);
- DefaultShellCallback callback = new DefaultShellCallback(overwrite);
- MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
- myBatisGenerator.generate(null);
- }
- public static void main(String[] args) throws Exception {
- try {
- GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap();
- generatorSqlmap.generator();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
请注意第15行部分,不知道为什么 File 无法读取到相对路径的文件,很是纳闷。所以,我这里把 generatorConfig.xml 放到了 D 盘根目录
2、generatorConfig.xml
这个文件也可以参考:http://www.mybatis.org/generator/configreference/xmlconfig.html
- <?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>
- <context id="testTables" targetRuntime="MyBatis3">
- <commentGenerator>
- <!-- 是否去除自动生成的注释 true:是 : false:否 -->
- <property name="suppressAllComments" value="true" />
- </commentGenerator>
- <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
- <jdbcConnection driverClass="com.mysql.jdbc.Driver"
- connectionURL="jdbc:mysql://localhost:3306/mybatis" userId="root"
- password="">
- </jdbcConnection>
- <!-- <jdbcConnection driverClass="oracle.jdbc.OracleDriver"
- connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:yycg"
- userId="yycg"
- password="yycg">
- </jdbcConnection> -->
- <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL和NUMERIC类型解析为java.math.BigDecimal -->
- <javaTypeResolver>
- <property name="forceBigDecimals" value="false" />
- </javaTypeResolver>
- <!-- targetProject:生成PO类的位置,重要!! -->
- <javaModelGenerator targetPackage="com.liuyanzhao.ssm.po"
- targetProject="Mybatis_Generator/src">
- <!-- enableSubPackages:是否让schema作为包的后缀 -->
- <property name="enableSubPackages" value="false" />
- <!-- 从数据库返回的值被清理前后的空格 -->
- <property name="trimStrings" value="true" />
- </javaModelGenerator>
- <!-- targetProject:mapper映射文件生成的位置,重要!! -->
- <sqlMapGenerator targetPackage="com.liuyanzhao.ssm.mapper"
- targetProject="Mybatis_Generator/src">
- <property name="enableSubPackages" value="false" />
- </sqlMapGenerator>
- <!-- targetPackage:mapper接口生成的位置,重要!! -->
- <javaClientGenerator type="XMLMAPPER"
- targetPackage="com.liuyanzhao.ssm.mapper"
- targetProject="Mybatis_Generator/src">
- <property name="enableSubPackages" value="false" />
- </javaClientGenerator>
- <!-- 指定数据库表,要生成哪些表,就写哪些表,要和数据库中对应,不能写错! -->
- <table tableName="items"></table>
- <table tableName="orders"></table>
- <table tableName="orderdetail"></table>
- <table tableName="user"></table>
- </context>
- </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自动生成代码相关推荐
- Mybatis逆向工程自动生成代码文件
一般来说都会新建另外一个项目,用于生成代码文件,然后拷贝到需要的项目中.新建maven项目用于生成代码文件,项目目录如下所示: pom.xml内容如下: <project xmlns=" ...
- (转)MyBatis框架的学习(七)——MyBatis逆向工程自动生成代码
http://blog.csdn.net/yerenyuan_pku/article/details/71909325 什么是逆向工程 MyBatis的一个主要的特点就是需要程序员自己编写sql,那么 ...
- Mybatis中自动生成代码(利用mybatis-generator-core-1.3.2)
Mybatis中自动生成代码(利用mybatis-generator-core-1.3.2) 引言: 在使用mybatis开发的过程中,通常我们会给数据库的每张表编写对应的po.mapper.mapp ...
- 简单的利用IDEA搭建SpringBoot+Maven+Mybatis+自动生成代码
最近在系统的学习SpringBoot框架,并且要用该框架做个项目--网上也大大小小看了很多教程,感觉很多写文章的人都不太负责任,只知道搬运,大概都没有实际操作过,问题也是有很多,所以自己写一篇文章记录 ...
- SpringBoot如何自动生成实体类和Dao层以及映射文件(mybatis generator 自动生成代码)
一.首先添加自动生成代码插件 <!-- mybatis generator 自动生成代码插件 生成时解除注释 --><plugin><groupId>org.myb ...
- 使用Mybatis Generator自动生成代码
MyBatis Generator(MBG)是MyBatis MyBatis 和iBATIS的代码生成器. 它将为所有版本的MyBatis以及版本2.2.0之后的iBATIS版本生成代码. 它将内省数 ...
- SpringBoot入门篇--整合mybatis+generator自动生成代码+druid连接池+PageHelper分页插件
我们这一一篇博客讲的是如何整合Springboot和Mybatis框架,然后使用generator自动生成mapper,pojo等文件.然后再使用阿里巴巴提供的开源连接池druid,这个连接池的好处我 ...
- 用mybatis的generator自动生成代码--坑我都走了一遍,后面的同学别踩了
先说什么是mybatis-generator? mybatis-geneator是一款mybatis自动代码生成工具,可以通过配置,快速生成mapper和xml文件. 步骤一:在pom文件中添加插件配 ...
- Mybatis自动生成代码插件generator
Mybatis自动生成代码插件generator 1.pom maven依赖 <dependencies><dependency><groupId>org.myba ...
- Mybatis Plus自动生成代码
mybatis-plus自动生成代码 一.简易生成代码 二.指定生成的样式,并且不在一个模块 1.父pom文件配置 2.子模块pom文件配置 3.准备vm文件 4.设置MyBatisPlusGener ...
最新文章
- JAVA基础13-Java抽象方法、抽象类、抽象之模板方法模式
- FileChannel应用实例——本地文件读数据
- 后端用python还是php_【后端开发】2019学python还是php
- leetcode-生成括号(回溯算法)
- ***学习笔记教程五:***技术
- Windows环境下Android Studio系列5—日志调试
- vue引入id3_vue常见知识点
- excel制作跨职能流程图_用Excel规划求解工具,实现组合投资优化
- CSS 滤镜学习小结
- storm中的乐器 wolven_Wolven Storm 风雪狼踪
- 融合非负矩阵分解和图全变分的歌曲推荐算法
- Django rest framework(7)----分页
- “暗云Ⅲ”实为老病毒 360去年已查杀
- 德标螺纹规格对照表_德标等螺纹对照表
- MTK6589双卡卡1或是卡2拨出电话
- ABAP BDC使用EXCEL模板批量修改物料
- 逍遥模拟器自定义默认桌面程序
- mysql安装教程5.1_mysql 5.1安装教程详解
- 计算机英语输入法怎么,电脑英文输入法不见了怎么处理?
- 我们为什么需要信息增益比,而不是信息增益?