简介

Mybatis Generator(MBG),下面我们统称为MBG,是一个Mybatis和iBatis的代码生成器。他可以内省数据库的表(或多个表)然后生成可以用来访问(多个)表的基础对象。这样减少了项目新建时各种配置对象,配置文件和数据库交互的麻烦。 MBG的解决了一些数据库中比较重要的操作,如CRUD(插入,查询,更新,删除)。

有关Mybatis具体生成事项,可以参考Mybatis Generator官方文档
Mybatis MBG设计用于开发环境中的交互,可以用在Ant 任务,Maven插件,持续集成环境。有关Mybatis的一些注意事项包括如下:

  • MBG 会自动合并已经存在并且和新生成的文件重名的 XML。MBG 不会覆盖您对已经生成xml所做的修改。 您可以反复的运行而不必担心失去您自定义的更改。 Mybatis Gnerator会更新上次运行生成的元素。
  • MBG 不会合并 Java 文件,如果你对一些MBG生成的文件做了修改,再次生成的时候, 您可以手动合并这些更改。 当您使用Eclipse 插件时, MBG 可以自动合并 Java 文件.

快速入门

概念

使用MBG的基本步骤
1、创建和补全Mybatis MBG的配置文件,你至少要指定以下内容

  • <jdbcConnection>素,指定如何连接数据库
  • <JavaModelGenerator>,java模型对象生成位置
  • <SqlMapGenerator>,SQL映射文件位置
  • 可选的,<javaClientGenerator>,java客户端接口和类文件位置
  • 至少一个<table>元素

2、把配置文件保存在方便的位置
3、运行MBG配置文件,可以通过Ant,Maven,Java代码等
4、修改Mybatis的一些配置,以便自己能够使用MBG生成的代码

创建项目

1、借用原来的之前的Mybatis入门教程,我们创建me.aihe.testdao包,具体结构如下。

项目结构

2、创建MBG配置文件,如果使用Idea集成开发环境,可下载Mybatis plugin,省了不少功夫,极大的方便了我们的操作。

新建MBG配置文件

3、修改MBG配置文件内容如下

<?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><!-- !!!! Driver Class Path !!!! --><classPathEntry location="/Users/aihe/.m2/repository/mysql/mysql-connector-java/5.1.38/mysql-connector-java-5.1.38.jar" /><!--<properties resource="classpa"--><context id="context" targetRuntime="MyBatis3"><commentGenerator><property name="suppressAllComments" value="false"/><property name="suppressDate" value="true"/></commentGenerator><!-- !!!! Database Configurations !!!! --><jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/test" userId="aihe" password="123456"/><javaTypeResolver><property name="forceBigDecimals" value="false"/></javaTypeResolver><!-- !!!! Model Configurations !!!! --><javaModelGenerator targetPackage="me.aihe.testdao" targetProject="/Users/aihe/IdeaProjects/MybatisCook/src/main/java"><property name="enableSubPackages" value="false"/><property name="trimStrings" value="true"/></javaModelGenerator><!-- !!!! Mapper XML Configurations !!!! --><sqlMapGenerator targetPackage="me.aihe.testdao" targetProject="/Users/aihe/IdeaProjects/MybatisCook/src/main/resources"><property name="enableSubPackages" value="false"/></sqlMapGenerator><!-- !!!! Mapper Interface Configurations !!!! --><javaClientGenerator targetPackage="me.aihe.testdao" targetProject="/Users/aihe/IdeaProjects/MybatisCook/src/main/java" type="XMLMAPPER"><property name="enableSubPackages" value="false"/></javaClientGenerator><!-- !!!! Table Configurations !!!! --><table tableName="Test" enableCountByExample="true" enableDeleteByExample="true" enableSelectByExample="true"enableUpdateByExample="true"/></context>
</generatorConfiguration>

注意在<commentGenerator>里面有个suppressAllComments的属性,如果填写为true的话,所有生成的模型文件虽然会没有注释,但是Mapper.xml不会覆盖,而是追加在后面,会导致运行出错。建议设置为false

4、运行MBG
运行方式有很多种,基于Ant Task,Maven 插件,Java程序等,这里我们使用Maven Plugin。
主意:建议大家下载Idea的Maven Helper插件,方便了很多maven的操作。
配置Pom.xml文件,添加MBG插件

   <build><plugins><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.5</version><configuration><configurationFile>${basedir}/src/main/resources/mybatis-generator.xml</configurationFile></configuration></plugin></plugins></build>
运行Maven插件

5、查看结果

生成结果

生成结果

6、测试生成的代码
我们的数据库内容如下

Test表内容

测试程序

  @Testpublic void test11(){InputStream inputStream = null;SqlSession sqlSession = null;try {inputStream = Resources.getResourceAsStream("mybatis-config.xml");SqlSessionFactory mSqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);sqlSession = mSqlSessionFactory.openSession();TestMapper testMapper = sqlSession.getMapper(TestMapper.class);TestExample testExample =  new TestExample();TestExample.Criteria criteria = testExample.createCriteria();criteria.andContentLike("%内容%");List<me.aihe.dao.Test>  testList = testMapper.selectByExample(testExample);System.out.println(testList);//            Good good = goodMapper.getGoodAndCouponMap2(1);
//            System.out.println(good);sqlSession.commit();} catch (IOException e) {e.printStackTrace();} finally {if (sqlSession != null) {sqlSession.close();}}}

运行结果如下:

运行结果

插件

Mybaitis Generator有一些官方的插件,可以更好的定制生成的文件内容。

//缓存插件,生成的Mapper.xml文件中添加缓存配置<plugin type="org.mybatis.generator.plugins.CachePlugin"></plugin>//生成的Model文件,加上toString方法
<plugin type="org.mybatis.generator.plugins.ToStringPlugin"</plugin>
//生成的Model文件实现Serializable接口
<plugin type="org.mybatis.generator.plugins.SerializablePlugin"></plugin>
//虚拟主键插件..
<plugin type="org.mybatis.generator.plugins.VirtualPrimaryKeyPlugin"></plugin>

还有一些额外的插件,可以用途比较少,在这里就先不提到了。

总结

本文主要演示了一种通过Maven 插件来使用MBG生成JavaBean,Mapper文件的案例。最后测试了生成代码的可用性。Mybatis Generator确实方便了很多我们的工作。

小提示

如果想要生成Example类,记得在Context标签上的targetRuntime为Mybatis3。

参考

  • Mybatis入门教程
  • Mybatis Generator文档

Mybatis-Generator(MBG)教程与Idea的MBG插件相关推荐

  1. 图解 IDEA 中 springboot 项目 MyBatis Generator 逆向生成实体类及 mapper 配置文件

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 一.准备工作: 1. 新建一个 配置文件:generatorConfig.xml . <?xm ...

  2. 【手把手教学】基于Maven构建方式使用Mybatis generator自动生成

    简介 Mybatis generator是一种代码生成器, 可以基于数据库表的字段与类型,自动生成Java代码中对应的entity类.dao类.mapper映射文件. 实现Mybatis genera ...

  3. MyBatis Generator如何实现MYSQL分页插件

    前言 MyBatisGenerator是一个非常方便的代码生成工具,它能够根据表结构生成CRUD代码,可以满足大部分需求.但是唯一让人不爽的是,生成的代码中的数据库查询没有分页功能.本文介绍如何让My ...

  4. MBG真香 Spring Boot集成Mybatis Generator插件

    Mybatis中文官网对mybatis-generator的介绍:http://www.mybatis.cn/archives/885.html Mybatis官网对mybatis-generator ...

  5. 从源码构建 MyBatis Generator(MBG)

    从源码构建 所有MyBatis Generator(MBG)发行版包括源代码,唯一的编译时间依赖关系在ant.jar上 - 用于成功编译包含的Ant任务.直接从源代码编译MBG - 只需将源解压缩到一 ...

  6. MyBatis Generator(MBG)从Abator迁移

    此页面详细介绍MyBatis Generator(MBG)和Abator之间的变化.对于大多数用户而言,更改应该很简单.如果您扩展了Abator的任何类以提供代码生成器或Java类型解析器的自定义实现 ...

  7. MyBatis Generator(MBG)设计哲学与致歉

    设计哲学与致歉 这个工具可能会引发一些哲学问题,因为该工具更注重数据库表而不是域模型.我们将采取几段谈论这种方法.首先,这个工具可以做到这一点.我们没有就项目应该或不应该结构化做出任何形式的陈述.一般 ...

  8. Mybatis Generator(简称MBG)的最完整配置文件详解

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration ...

  9. 5.6 Mybatis代码生成器Mybatis Generator (MBG)实战详解

    文章目录 前言 一.Mybatis Generator简介 二.Maven插件运行方式 三.生成配置 generatorConfig.xml MyBatis3Simple风格 MyBatis3风格 M ...

最新文章

  1. OpenCV代码提取:resize函数的实现
  2. 提醒一下技术人,你是不是陷入局部最优了
  3. java 将换行代替_Java批量将文件中的段落替换成空格,根据指定分隔符换行(SQL示例)...
  4. spark代码连接hive_spark SQL学习(spark连接hive)
  5. pta c语言 凯撒密码
  6. python入门系列:迭代器和生成器
  7. 【渝粤教育】国家开放大学2018年春季 0242-21T机械制图 参考试题
  8. luogu P2783 有机化学之神偶尔会做作弊
  9. 关于Oracle用sqlldr导入限制值长度大于255问题解决方法
  10. 新闻管理系统(C#)
  11. OSS实现多文件多线程的断点下载(java)
  12. three.js 08-03 之 加载和保存对象
  13. 最新GEP分销系统网站源码官方
  14. Spring基础学习(一)
  15. PS-把长方形图片改为正方形图片
  16. python练习题17
  17. C# GDI+ 画心形 跳动动画
  18. 手机端别用谷歌了,好用到爆的小众浏览器你确定不试试
  19. UCML页面生成后突然不能访问 参数化查询 '(@ActivityID nvarchar(4000))SELECT ActivityInfoEx.ActivityInfoEx' 需要参数 '@Acti
  20. 百度地图API——修改infowindow样式

热门文章

  1. TypeScript 终极初学者指南
  2. 图解选择排序与插入排序
  3. android studio更新之后打包遇到V1(Jar Signature)、 V2(Full APK Signature)问题
  4. 使用DBCA工具创建自己的数据库
  5. Windows Nano Server安装配置详解03:远程管理Nano Server
  6. ASP.NET MVC 个人学习笔记之 Controller传值
  7. HDU4462-稻草人
  8. [激励机制]浅谈内部竞争——如何让你的员工玩命干活?
  9. PHP命令注入***
  10. 换工作了,开始用金蝶的BOS了,好多东西都要学啊!