【高效工具】使用 MyBatis Generator 自动生成代码

本贴最后更新于 2500 天前,其中的信息可能已经天翻地覆

概述

MyBatis Generator(MBG)是 MyBatis 和iBATIS的代码生成器。下载地址:https://github.com/mybatis/generator/releases,它适用于生成所有版本的MyBatis的代码,以及版本2.2.0之后的iBATIS版本。 它将内省数据库表(或许多表),并将生成可用于访问表的工件。这减少了设置对象和配置文件以与数据库表进行交互的最初麻烦。MBG旨在对简单的CRUD(创建,检索,更新,删除)的大量数据库操作产生重大影响。不过用户仍然需要手工编写SQL和对象进行连接查询或存储过程。
使用自动生成有很多方式,可以在eclipse中安装插件,但是使用MyBatis Generator相比其他方式更轻松简单,不需要装插件,只需要下几个jar包即可,需要把它们放在一个目录下面。

MyBatis Generator将生成:

1.符合表结构的Java POJO。这可能包括:
  • 一个类匹配表的主键(如果有一个主键)
  • 一个匹配表的非主键字段的类(BLOB字段除外)
  • 一个包含表的BLOB字段的类(如果表有BLOB字段)
  • 一个启用动态选择,更新和删除的类

这些类之间有一个继承关系。请注意,生成器可能被配置为生成不同类型的POJO层次结构。 例如,如果你愿意,你可以选择为每个表生成单个域对象。

2.MyBatis / iBATIS兼容的SQL Map XML文件。MBG为配置中的每个表生成简单CRUD函数的SQL。生成的SQL语句包括:
  • 插入
  • 按主键更新
  • 通过示例更新(使用dynamic where子句)
  • 按主键删除
  • 通过示例删除(使用dynamic where子句)
  • 按主键选择
  • 选择示例(使用动态where子句)
  • 自动选型的字段映射 以例子为例 根据表的结构,这些语句有不同的变体(例如,如果表没有主键,则MBG将不会通过主键功能生成更新)。
3.适合使用上述对象的Java客户端类。Java客户端类的生成是可选的。MBG将为MyBatis 3.x生成以下类型的Java客户端:
  • 与MyBatis 3.x映射程序基础架构配合使用的映射程序界面
  • MBG将为iBATIS 2.x生成以下类型的Java客户端:
  • 符合 Spring框架的DAO
  • 只使用iBATIS SQL映射API的DAO。这些DAO能够在两个品种生成:供给的SqlMapClient通过任一构造或setter注入。
  • 符合iBATIS DAO框架的DAO(iBATIS的可选部分,此框架现已被弃用,我们建议你使用Spring框架)

注意事项:

MyBatis生成器设计为在迭代开发环境中运行良好,并且可以作为Ant任务或Maven插件包含在连续构建环境中。运行MBG时重要的事项包括:

  1. 如果存在与新生成的XML文件名称相同的现有文件,MBG将自动合并XML文件。MBG不会覆盖你对其生成的XML文件所做的任何自定义更改。你可以一遍又一遍地运行它,而不用担心会丢失对XML的自定义更改。MBG将替换之前运行中生成的任何XML元素。
  2. MBG 不会合并Java文件,它可以覆盖现有文件,也可以使用不同的唯一名称保存新生成的文件。如果你对生成的Java文件进行了更改并且以迭代方式运行MBG,则必须手动合并更改。当作为Eclipse 插件运行时 ,MBG可以自动合并Java文件。

使用

https://github.com/mybatis/generator/releases下载之后解压,主要有docs文件夹和lib文件夹。docs包括了Mybatis Generator的简介及说明,lib文件夹则是主要需要的一些jar包。下面直说一下简单的生成代码功能。
由于MyBatis属于一种半自动的ORM框架,所以主要的工作就是配置Mapping映射文件,但是由于手写映射文件很容易出错,所以可利用MyBatis生成器自动生成实体类DAO接口Mapping映射文件。这样可以省去很多的功夫,将生成的代码copy到项目工程中即可。 其中有mybatis框架的jar包,数据库驱动程序jar包以及MyBatis生成器jar包。其中的generatorConfig.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>  
<!-- 数据库驱动-->  
    <classPathEntry  location="mysql-connector-java-5.1.25-bin.jar"/>  
    <context id="DB2Tables"  targetRuntime="MyBatis3">  
        <commentGenerator>  
            <property name="suppressDate" value="true"/>  
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->  
            <property name="suppressAllComments" value="true"/>  
        </commentGenerator>  
        <!--数据库链接URL,用户名、密码 -->  
        <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/solo" userId="root" password="lixin">  
        </jdbcConnection>  
        <javaTypeResolver>  
            <property name="forceBigDecimals" value="false"/>  
        </javaTypeResolver>  
        <!-- 生成模型的包名和位置-->  
        <javaModelGenerator targetPackage="sean.domain" targetProject="src">  
            <property name="enableSubPackages" value="true"/>  
            <property name="trimStrings" value="true"/>  
        </javaModelGenerator>  
        <!-- 生成映射文件的包名和位置-->  
        <sqlMapGenerator targetPackage="sean.mapping" targetProject="src">  
            <property name="enableSubPackages" value="true"/>  
        </sqlMapGenerator>  
        <!-- 生成DAO的包名和位置-->  
        <javaClientGenerator type="XMLMAPPER" targetPackage="sean.IDao" targetProject="src">  
            <property name="enableSubPackages" value="true"/>  
        </javaClientGenerator>  
        <!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名-->  
        <table tableName="b3_solo_user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
    </context>  
</generatorConfiguration>

当以上这些完成之后,只需要打开控制台,进入lib目录下,执行脚本:

Java -jar mybatis-generator-core-1.3.2.jar -configfile generatorConfig.xml -overwrite

即可。

这样在生成之后,就可以在src目录下找到相应的文件夹,每个表格都会对应三个文件(实体类、接口、配置文件)。

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3168 引用 • 8207 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...