本文将简要介绍怎样利用Mybatis Generator自动生成Mybatis的相关代码:

一、构建一个环境:

1. 首先创建一个表:

  1. CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20), species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);

2. 然后注入数据

  1. insert into pet values('Fluffy', 'Harold', 'cat', 'f', '1993-02-04', null);
  2. insert into pet values('Claws', 'Gwen', 'cat', 'm', '1994-03-17', null);
  3. insert into pet values('Buffy', 'Harold', 'dog', 'f', '1989-05-13', null);
  4. insert into pet values('Fang', 'Benny', 'dog', 'm', '1990-08-27', null);
  5. insert into pet values('Bowser', 'Diane', 'dog', 'm', '1979-08-31', '1995-07-29');
  6. insert into pet values('Chirpy', 'Gwen', 'bird', 'f', '1998-09-11', null);
  7. insert into pet values('Whistler', 'Gwen', 'bird', null, '1997-12-09', null);
  8. insert into pet values('Slim', 'Benny', 'snake', 'm', '1996-04-29', null);

注:这里的sql例子来自 http://dev.mysql.com/doc/refman/5.5/en/creating-tables.html

3. 在 Mybatis 主页 http://code.google.com/p/mybatis/ 上下载 Mybatis mybatis-generator-core [本文使用的是 1.3.0 版本]。当然运行 mybatis-generator 生成的代码还需要下载 mybatis 的 jar 包[本例使用的是 3.0.2 版本],和相关数据库的 jdbc [本文中使用的是MySql的jdbc] 。

二、运行 mybatis-generator

1. 要运行 generator ,需要给 generator 提供一个配置文件,指定其生成的数据库的相关信息。
以下是一个示例:

  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. <classPathEntry location="mysql-connector-java-5.1.6-bin.jar" />
  7. <context id="DB2Tables" targetRuntime="MyBatis3">
  8. <commentGenerator>
  9. <property name="suppressDate" value="true" />
  10. </commentGenerator>
  11. <jdbcConnection driverClass="com.mysql.jdbc.Driver"
  12. connectionURL="jdbc:mysql://localhost/test" userId="qgd" password="123456">
  13. </jdbcConnection>
  14. <javaTypeResolver>
  15. <property name="forceBigDecimals" value="false" />
  16. </javaTypeResolver>
  17. <javaModelGenerator targetPackage="test.model"
  18. targetProject="../src/main/java">
  19. <property name="enableSubPackages" value="true" />
  20. <property name="trimStrings" value="true" />
  21. </javaModelGenerator>
  22. <sqlMapGenerator targetPackage="test.dao"
  23. targetProject="../src/main/java">
  24. <property name="enableSubPackages" value="true" />
  25. </sqlMapGenerator>
  26. <javaClientGenerator type="XMLMAPPER"
  27. targetPackage="test.dao" targetProject="../src/main/java">
  28. <property name="enableSubPackages" value="true" />
  29. </javaClientGenerator>
  30. <table tableName="pet" domainObjectName="Pet">
  31. </table>
  32. </context>
  33. </generatorConfiguration>

这个配置文件提供了 mybatis-generator所需要的参数信息:

* 其中classPathEntry 是引用的jdbc的类路径,这里将jdbc jar和generator的jar包放在一起了;
  * commentGenerator 是用来除去时间信息的,这在配合类似subversion的代码管理工具时使用很有效,因为可以减少没有必要的注释迁入;
  * jdbcConnection是指定的jdbc的连接信息;
  * javaTypeResolver式类型转换的信息,这里并没有用到;
  * javaModelGenerator是模型的生成信息,这里将指定这些Java model类的生成路径;
  * sqlMapGenerator是mybatis 的sqlMapper XML文件的生成信息,包括生成路径等;
  * javaClientGenerator是应用接口的生成信息;
  * table是用户指定的被生成相关信息的表,它必须在指定的jdbc连接中已经被建立。

2. mybatis-generator 有多种运行方式,最简单的就是命令行的方式,只需要指定相应的配置文件的路径即可:

  1. java -jar mybatis-generator-core-1.3.0.jar -configfile ../src/main/resource/config.xml -overwrite

运行后生成的代码包括模型类 test.model.Pet 和 test.model.PetExample , test.dao.PetMapper 接口以及其相对应的 xml 映射文件,在这里就不在赘述了。

三、使用 mybatis-generator 生成的代码

1. 现在我们要利用这些生成的代码,首先我们需要一个关于所有映射的配置文件。需要我们手写如下:【不知道为什么generator没有选择自动生成这个文件,毕竟这些信息generator都可以得到】

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6. <environments default="development">
  7. <environment id="development">
  8. <transactionManager type="JDBC" />
  9. <dataSource type="POOLED">
  10. <property name="driver" value="com.mysql.jdbc.Driver" />
  11. <property name="url" value="jdbc:mysql://localhost/test" />
  12. <property name="username" value="qgd" />
  13. <property name="password" value="123456" />
  14. </dataSource>
  15. </environment>
  16. </environments>
  17. <mappers>
  18. <mapper resource="test/dao/PetMapper.xml" />
  19. </mappers>
  20. </configuration>

2. 另外还要使用然后我们还需要一个Main示例方法来调用这些已生成的代码:

  1. package test;
  2. import java.io.Reader;
  3. import java.util.List;
  4. import org.apache.ibatis.io.Resources;
  5. import org.apache.ibatis.session.SqlSession;
  6. import org.apache.ibatis.session.SqlSessionFactory;
  7. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  8. import test.dao.PetMapper;
  9. import test.model.Pet;
  10. import test.model.PetExample;
  11. public class Test {
  12. public static void main(String[] args) throws Exception {
  13. String resource = "MapperConfig.xml";
  14. Reader reader = Resources.getResourceAsReader(resource);
  15. SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder().build(reader);
  16. SqlSession sqlSession = sqlMapper.openSession();
  17. PetExample pet = new PetExample();
  18. pet.or().andDeathIsNotNull();
  19. try {
  20. PetMapper mapper = sqlSession.getMapper(PetMapper.class);
  21. List<Pet> allRecords = mapper.selectByExample(pet);
  22. for (Pet s : allRecords)
  23. System.out.println(s);
  24. } finally {
  25. sqlSession.close();
  26. }
  27. }
  28. }

这样就可以打印出相应的查询结果信息了。

四、小结

该示例的完整的Eclipse工程见附件mybatis-generator-usage.zip,其中已经包含了示例需要使用的jar包。

本文中只是用到了mybatis-generator 的一部分功能,mybatis-generator 生成代码的方式还包括ant或Maven脚本,或者直接使用java API生成;另外通过修改配置文件,generator还可以指定表的生成细节,并可以添加插件。其功能文档在generator的分发包的doc文件夹下有更详细的介绍。

这里使用的表示没有主键的表,针对有一个主键或多个主键的表,mybatis-generator的生成的内容也有所不同,感兴趣的读者可以自行试验一下。

使用Mybatis Generator自动生成Mybatis相关代码的更多相关文章

  1. Mybatis generator自动生成mybatis配置和类信息

    自动生成代码方式两种: 1.命令形式生成代码,详细讲解每一个配置参数. 2.Eclipse利用插件形式生成代码. 安装插件方式: eclipse插件安装地址:http://mybatis.google ...

  2. 使用MyBatis Generator自动生成MyBatis的代码

    这两天需要用到MyBatis的代码自动生成的功能,由于MyBatis属于一种半自动的ORM框架,所以主要的工作就是配置Mapping映射文件,但是由于手写映射文件很容易出错,所以可利用MyBatis生 ...

  3. MyBatis Generator自动生成MyBatis的映射代码

    MyBatis Generator大大简化了MyBatis的数据库的代码编写,有了一个配置文件,就可以直接根据表映射成实体类.Dao类和xml映射.资源地址:MyBatis项目地址:http://my ...

  4. SpringBoot 添加mybatis generator 自动生成代码插件

    自动生成数据层代码,提高开发效率 1.pom添加插件,并指定配置文件路径 <!-- mybatis generator 自动生成代码插件 --> <plugin> <gr ...

  5. idea中mybatis generator自动生成代码配置 数据库是sqlserver

    好长时间没有写博客了,最近公司要用java语言,开始学习java,属于初学者,今天主要记录一下mybatis generator自动生成代码,首先在如下图的目录中新建两个文件,如下图 generato ...

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

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

  7. IDEA Maven Mybatis generator 自动生成代码

    IDEA Maven Mybatis generator 自动生成代码 一.安装配置maven以及在Idea中配置maven 安装过程步骤可以看上面的博文,里面介绍得很详细. 二.建数据表 DROP ...

  8. IDEA Maven Mybatis generator 自动生成代码(实例讲解)(转)

    IDEA Maven Mybatis generator 自动生成代码(实例讲解) MyBatis Generator • 简称MBG,是一个专门为MyBatis框架使用者定制的代码生成器,可以快速的 ...

  9. generator自动生成mybatis配置和类信息

    generator自动生成mybatis的xml配置.model.map等信息: 1.下载mybatis-generator-core-1.3.2.jar包.        网址:http://cod ...

随机推荐

  1. 仿php的日期函数,asp时间处理函数

    <% '****************************** '时间处理函数 'FormatDate(Str,DateTime) 'Str 字符串,DateTime 时间 '返回类型为字 ...

  2. asp.net 下OnClientClick的妙用

    一. OnClick是button的服务器端事件 OnClientClick是button的客户端事件 onlick时发生postback,执行后台代码.onclientclick,就是执行javas ...

  3. sql索引碎片产生的原理 解决碎片的办法(sql碎片整理)(转)

    本文讲述了SQL SERVER中碎片产生的原理,内部碎片和外部碎片的概念.以及解决碎片的办法和填充因子.在数据库中,往往每一个对于某一方面性能增加的功能也会伴随着另一方面性能的减弱.系统的学习数据库知 ...

  4. 仿战旗tv

    模仿战旗tv做的一个小项目,还需继续完善. 以下为链接地址: https://github.com/NearMilk/ZhanqiTV

  5. JavaScript学习笔记(5)——JavaScript语法之数据类型

    JavaScript 拥有动态类型.这意味着相同的变量可用作不同的类型: var x // x 为 undefined var x = 6; // x 为数字 var x = "Bill&q ...

  6. 省选训练赛第4场D题(多米诺骨牌)

    题目来自FZU2163 多米诺骨牌 Time Limit: 1000 mSec    Memory Limit : 32768 KB  Problem Description Vasya很喜欢排多米诺 ...

  7. 采用thinkphp框架实现添加管理员功能

    最近由于忙于期中和期末考试没有写新的随笔了,另外内心也在纠结要不要考研,直到昨天终于痛下决心,才突然间觉得豁然开朗. 由于做老师留的课程设计作业采用thinkPHP框架频繁,最近的几篇随笔将都从thi ...

  8. async:false同步请求,浏览器假死

    // 异步请求导致数据错乱 // function get_num(){ // $("input[name='monitor']").eq(1).attr('checked',tr ...

  9. Web前端新人笔记之jquery选择符

    jquery利用了CSS选择符的能力,让我们能够在DOM中快捷而轻松的获取元素或元素集合.本章将介绍以下内容: 1.网页中的元素结构: 2.如何通过CSS选择符在页面中查找元素: 3.扩展jquery ...

  10. JS拖拽原理

    实现拖拽效果主要跟鼠标的三个事件有关: onmousedown : 选择要拖拽的元素 onmousemove : 移动元素 onmouseup : 释放元素 三个事件的关系: obj.onmoused ...