集册 Mybatis 实战教程 代码生成工具的使用

代码生成工具的使用

欢马劈雪     最近更新时间:2020-08-04 05:37:59

971

Mybatis 应用程序,需要大量的配置文件,对于一个成百上千的数据库表来说,完全手工配置,这是一个很恐怖的工作量. 所以 Mybatis 官方也推出了一个 Mybatis 代码生成工具的 jar 包. 今天花了一点时间,按照 Mybatis generator 的 doc 文档参考,初步配置出了一个可以使用的版本,我把源代码也提供下载,Mybatis 代码生成工具,主要有一下功能:

  1. 生成 pojo 与 数据库结构对应
  2. 如果有主键,能匹配主键
  3. 如果没有主键,可以用其他字段去匹配
  4. 动态 select,update,delete 方法
  5. 自动生成接口(也就是以前的 dao 层)
  6. 自动生成 sql mapper,增删改查各种语句配置,包括动态 where 语句配置
  7. 生成 Example 例子供参考

下面介绍下详细过程

创建测试工程,并配置 Mybatis 代码生成 jar 包

下载地址:http://code.google.com/p/mybatis/downloads/list?can=3&q=Product%3DGenerator

MySql 驱动下载:http://dev.mysql.com/downloads/connector/j/ 这些 jar 包,我也会包含在源代码里面,可以在文章末尾处,下载源代码,参考。

用 Eclipse 建立一个 dynamic web project。

解压下载后的 mybatis-generator-core-1.3.2-bundle.zip 文件,其中有两个目录:一个目录是文档目录docs,主要介绍这个代码生成工具如何使用,另一个是 lib 目录,里面的内容主要是 jar 包,这里我们需要 mybatis-generator-core-1.3.2.jar,这个 jar 包. 将它拷贝到我们刚刚创建的 web工程的 WebContent/WEB-INF/lib 目录下.在这个目录下也放入 MySql 驱动 jar 包。因为用 MySql 做测试的。

在数据库中创建测试表

在 Mybatis 数据库中创建 用来测试的 category 表(如果没有 Mybatis 这个数据库,要创建,这是基于前面这个系列文章而写的,已经有了 Mybatis 这个数据库)

Drop TABLE IF EXISTS `category`;
Create TABLE `category` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `catname` varchar(50) NOT NULL,
  `catdescription` varchar(200) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

配置 Mybatis 代码生成工具的配置文件

在创建的 Web 工程中,创建相应的 package 比如 :

com.nowjava.inter 用来存放 Mybatis 接口对象。

com.nowjava.mapper 用来存放 sql mapper 对应的映射,sql 语句等。

com.nowjava.model 用来存放与数据库对应的 model 。

在用 Mybatis 代码生成工具之前,这些目录必须先创建好,作为一个好的应用程序,这些目录的创建也是有规律的。

根据 Mybatis 代码生成工具文档,需要一个配置文件,这里命名为:mbgConfiguration.xml放在 src 目录下. 配置文件内容如下:

<?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>

  <!-- 配置mysql 驱动jar包路径.用了绝对路径 -->
  <classPathEntry location="D:\Work\Java\eclipse\workspace\myBatisGenerator\WebContent\WEB-INF\lib\mysql-connector-java-5.1.22-bin.jar" />

  <context id="nowjava_mysql_tables" targetRuntime="MyBatis3">

    <!-- 为了防止生成的代码中有很多注释,比较难看,加入下面的配置控制 -->
    <commentGenerator>
      <property name="suppressAllComments" value="true" />
      <property name="suppressDate" value="true" />
    </commentGenerator>
    <!-- 注释控制完毕 -->

    <!-- 数据库连接 -->
    <jdbcConnection driverClass="com.mysql.jdbc.Driver"
        connectionURL="jdbc:mysql://127.0.0.1:3306/mybatis?characterEncoding=utf8"
        userId="root"
        password="password">
    </jdbcConnection>

    <javaTypeResolver >
      <property name="forceBigDecimals" value="false" />
    </javaTypeResolver>

    <!-- 数据表对应的model 层  -->
    <javaModelGenerator targetPackage="com.nowjava.model" targetProject="src">
      <property name="enableSubPackages" value="true" />
      <property name="trimStrings" value="true" />
    </javaModelGenerator>

    <!-- sql mapper 隐射配置文件 -->
    <sqlMapGenerator targetPackage="com.nowjava.mapper"  targetProject="src">
      <property name="enableSubPackages" value="true" />
    </sqlMapGenerator>

    <!-- 在ibatis2 中是dao层,但在mybatis3中,其实就是mapper接口 -->
    <javaClientGenerator type="XMLMAPPER" targetPackage="com.nowjava.inter"  targetProject="src">
      <property name="enableSubPackages" value="true" />
    </javaClientGenerator>

    <!-- 要对那些数据表进行生成操作,必须要有一个. -->
    <table schema="mybatis" tableName="category" domainObjectName="Category" 
        enableCountByExample="false" enableUpdateByExample="false"
        enableDeleteByExample="false" enableSelectByExample="false"
        selectByExampleQueryId="false">     
    </table>

  </context>
</generatorConfiguration>

用一个 main 方法来测试能否用 Mybatis 成生成刚刚创建的category表对应的 model,sql mapper 等内容。 创建一个 com.nowjava.test 的 package ,并在此 package 下面建立一个测试的类 GenMain:

展开阅读全文