本文将简要介绍怎样利用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. c#局域网文件搬移

    /// kongxiang--2013.7.23 /// using System;using System.Collections.Generic;using System.Linq;using S ...

  2. Java实战之04JavaWeb-02Request和Response

    一.Response和Request的生态环境 二.HttpServletResponse---代表响应对象 1.设置状态码 void setStatus(int sc) 状态码: 200:一切正常 ...

  3. Wix: Using Patch Creation Properties - Minor Update

    Based on the project created in Wix: Using Patch Creation Properties - Small Update, Following chang ...

  4. Java对象的序列化与反序列化:默认格式及JSON格式(使用jackson)

    我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3558663.html,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体验 ...

  5. update语句

    [update cicm.cicmodt0702 set msgbody = :1 where msgid between :2 and :3         ] [update cicm.cicmo ...

  6. 重构if...else...或者switch程序块 为 中介者(Mediator)模式.的思考

    http://www.cnblogs.com/insus/p/4142264.html 重构if...else...或者switch程序块 为 中介者(Mediator)模式.的思考 首先普世的编程架 ...

  7. SharePoint工作流(workflow)不能自动启动

    在定制工作流时,设置了当Item创建或更改时,触发工作流.用系统帐户登录时一直不会触发.这是因为这是SharePoint的安全机制,阻止了在系统帐户登陆时自动启动工作流. 解决方法:使用不是系统账户的 ...

  8. Linux 系统结构详解

    Linux 系统结构详解 Linux系统一般有4个主要部分: 内核.shell.文件系统和应用程序.内核.shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序.管理文件并使用系统 ...

  9. Weui 微信网站开发样式插件使用教程

    微信的网页样式正式发布了,搜了一下,正式引入了乐学一百微信端的项目中. <div class="weui_grids"> <a href="javasc ...

  10. 解决Ubuntu和Windows的文件乱码问题(转载)

    解决Ubuntu和Windows的文件乱码问题(debian也通用) 1.转换文件内容编码   Windows下天生的纯文本文件,其中文编码为GBK,在Ubuntu下显示为乱码,可以使用iconv命令 ...