在mybatis自己主动生成代码有两种方式:

方式一:是通过使用eclipse作为开发工具。採用maven来构建项目生成的。以下的演示是通过第一种方式。



今天来记录下mybatis-generator插件自己主动生成xml mapper和model还有dao接口,这样我们就能够把精力放在业务代码上。而不须要关心数据库的详细操作。

这里我使用eclipse作为开发工具,採用maven来构建项目。

1. 编写pom.xml文件

这里仅仅有3个jar文件,数据库使用mysql

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.jacksoft.mybatis</groupId>
<artifactId>mybatis-generator</artifactId>
<version>0.0.1-SNAPSHOT</version> <properties>
<mybatis-generator.version>1.3.1</mybatis-generator.version>
<mysql.version>5.1.13</mysql.version>
<mybatis.version>3.0.3</mybatis.version>
</properties> <dependencies> <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency> <dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>${mybatis-generator.version}</version>
</dependency> <dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
</dependencies> <build>
<finalName>mybatis-generator</finalName>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>${mybatis-generator.version}</version>
<dependencies>
<!-- 数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency> </dependencies>
<!-- 自己主动生成 -->
<executions>
<execution>
<id>Generate MyBatis Artifacts</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<configurationFile>src/main/resources/config/mysqlGeneratorConfig.xml</configurationFile>
<overwrite>true</overwrite>
<jdbcDriver>com.mysql.jdbc.Driver</jdbcDriver>
<jdbcURL>jdbc:mysql://localhost:3306/demo</jdbcURL>
<jdbcUserId>root</jdbcUserId>
<jdbcPassword>hwroot</jdbcPassword>
</configuration>
</execution>
</executions>
</plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin> </plugins>
</build>
</project>

我这里通过配置插件,让maven在运行install的时候。自己主动又一次生成代码。由于生成的代码中包括mybatis包中的类,所以也须要引入该包。

2.创建mysqlGeneratorConfig.xml文件

在src/main/resources/config文件夹以下创建mysqlGeneratorConfig.xml 文件,该文件是说明插件须要怎样生成,以及生成相应的包名,路径等信息。

还有重要的就是我们的表或者试图。这里能够通过查看官方文档。了解其详细的配置,比方重写字段类型啊等等。

这里我仅仅有一个表:

<?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="mysqlTables" targetRuntime="MyBatis3">
<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/demo"
userId="root" password="hwroot"/> <!-- 指定生成的类型为java类型,避免数据库中number等类型字段 -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver> <!-- 生成model模型,相应的包。存放位置能够指定详细的路径,如/ProjectName/src,也能够使用MAVEN来自己主动生成 -->
<javaModelGenerator targetPackage="com.jacksoft.mybatis.generator.model" targetProject="MAVEN">
<property name="enableSubPackages" value="true"/>
</javaModelGenerator> <!--相应的xml mapper文件 -->
<sqlMapGenerator targetPackage="com.jacksoft.mybatis.generator.dao" targetProject="MAVEN">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator> <!-- 相应的dao接口 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.jacksoft.mybatis.generator.dao" targetProject="MAVEN">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator> <table tableName="user" domainObjectName="User"/>
</context>
</generatorConfiguration>

3. 生成代码

到这里就差点儿相同了。保存为该文件后,实际上就已经開始生成代码了,可是在source code界面,还是看不到代码,我们通过刷新或者 右键项目-->Maven-->Update Project Configuration

这样就把生成的代码找到了。详细例如以下图:

相应的mapper,xml,model,example都生成好了。是不是非常方便啊?

可是该插件默认不带分页功能,分页插件将在下一次记录。

对于自己写的插件无法初始化的问题,能够參照:

http://code.google.com/p/mybatis/issues/detail?id=343

也就是须要将自己的插件在配置plugin的时候增加,如:

<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>${mybatis-generator.version}</version>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>com.jacksoft</groupId>
<artifactId>mybatis-plugins-paging</artifactId>
<version>${mybatis.paging.version}</version>
</dependency>
</dependencies>

方式二:是通过mybatis插件的方式来自己主动生成的。以下的演示是通过另外一种方式。

本文将简要介绍如何利用Mybatis Generator自己主动生成Mybatis的相关代码:



一、构建一个环境: 



1. 首先创建一个表:

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

2. 然后注入数据

Sql代码  
  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 提供一个配置文件,指定其生成的数据库的相关信息。

下面是一个演示样例:

Xml代码  
  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 有多种执行方式。最简单的就是命令行的方式。仅仅须要指定对应的配置文件的路径就可以:

Java代码  
  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都能够得到】

Xml代码  
  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演示样例方法来调用这些已生成的代码:

Java代码  
  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. }

这样就能够打印出对应的查询结果信息了。



四、小结 



该演示样例的完整的Eclipseproject见附件mybatis-generator-usage.zip,当中已经包括了演示样例须要使用的jar包。

本文中仅仅是用到了mybatis-generator 的一部分功能,mybatis-generator 生成代码的方式还包含ant或Maven脚本,或者直接使用java API生成。另外通过改动配置文件,generator还能够指定表的生成细节,并能够加入插件。其功能文档在generator的分发包的doc目录下有更具体的介绍。

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

Mybatis自己主动生成代码的更多相关文章

  1. mybatis使用generator自己主动生成代码时的类型转换

    使用mybatis的generator自己主动生成代码,可是oracle数据库中number(6,2)总是自己主动转成BigDecimal.我想要转成的是float类型 这样就写了一个类型转换器,须要 ...

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

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

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

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

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

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

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

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

  6. Mybatis generator 逆向生成代码

    Mybatis generator 逆向生成代码 简单介绍 本文介绍用mybatis逆向生成javaben dao接口 1.创建maven项目 创建相应的包 附上项目创建完成的图片 然后在pom.xm ...

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

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

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

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

  9. 使用mybatis插件自动生成代码以及问题处理

    1.pom.xml中加入依赖插件 <!-- mybatis generator 自动生成代码插件 --> <plugin> <groupId>org.mybatis ...

随机推荐

  1. 虚拟化:搭建本地虚拟化环境和安装ubuntu操作系统

    本文介绍如何在本地(windows操作系统)安装虚拟机,并在虚拟机下安装ubuntu操作系统. 一.机器升级 因为是在我的笔记本电脑上操作.首先升级了我的笔记本,买了内存条,将我机器的内存增加到8G, ...

  2. HDU4544 湫湫系列故事――消灭兔子

    HDU 4544 Tags: 数据结构,贪心 Analysis: 将兔子的血量从大到小排序,将箭的杀伤力从大到小排序,对于每一个兔子血量, 将比他大的杀伤力大的剑压入优先队列,优先队列自己重写,让它每 ...

  3. YT工作日志-0911

    上午 在导师的帮助下,帮我从svn上下载了项目.但是因为项目太大(不算jar包有730M),很多模块不是我工作中涉及的,但是运行的时候会报错,所以导师还帮我找了很多错误.把那些不需要的东西注释了.就这 ...

  4. SQL Server 存储过程、触发器、游标

    存储过程 1.存储过程是事先编好的.存储在数据库中的程序,这些程序用来完成对数据库的指定操作. 2.系统存储过程: SQL Server本身提供了一些存储过程,用于管理有关数据库和用户的信息. 用户存 ...

  5. PHP - 设置地址栏小图标

    效果: 1/把icon图标直接放到根目录. 2/在header标签中写下: <link rel="icon" type="image/x-icon" hr ...

  6. MVC客户端验证的小示例

    MVC客户端验证的小示例 配置客户端验证的可用性: <configuration> <appSettings>  <add key="ClientValidat ...

  7. 学习笔记(10) : Socket 编程典型代码积累

    网络编程实现的机制:   服务器端: 申请一个socket 绑定到一个IP地址和端口上 开启侦听,等待接受连接   客户端: 申请一个socket 连接服务器(指明IP.端口)   服务器端: 接收到 ...

  8. bash on windows

    bash on windows 今年微软Build 2016大会最让开发人员兴奋的消息之一,就是在Windows上可以原生运行Linux bash,对开发人员来说,这是一个喜闻乐见的消息. 1 安装 ...

  9. git clone cm source &amp; cm vs android version

    $ git clone https://github.com/CyanogenMod/android_packages_apps_DeskClock.git -b cm-9.0.0 CM4代表(And ...

  10. 用lambda表达式声明委托

    首先来分享一段代码: Func<int, int, int> addMethod = (int x, int y) => (x + y); 熟悉的人肯定知道这句话是什么意思,可是不熟 ...