`

用Maven插件生成Mybatis代码

阅读更多

在pom.xml增加以下插件:

<plugin>
	<groupId>org.mybatis.generator</groupId>
	<artifactId>mybatis-generator-maven-plugin</artifactId>
	<version>1.3.2</version>
	<configuration>
		<verbose>true</verbose>
		<overwrite>true</overwrite>
	</configuration>
</plugin>

1.3.2版本,才能取消注释。 

配置好Maven插件,下面需要配置插件需要的配置文件

<?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="D:\repo\mysql\mysql-connector-java\5.1.6\mysql-connector-java-5.1.6.jar" />
    <context id="context1" targetRuntime="MyBatis3">
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
            connectionURL="jdbc:mysql://xxxxxxx:8406/CL_DEMO?useUnicode=true&amp;characterEncoding=UTF-8"
            userId="root" password="password" />
        <javaModelGenerator targetPackage="xxx.account.model"
            targetProject="D:\workspace\项目名\src\main\java" />
        <sqlMapGenerator targetPackage="xxxx.account.persistence"
            targetProject="D:\workspace\项目名\包名\src\main\resources" />
        <javaClientGenerator targetPackage="xxxx.account.persistence
            targetProject="D:\\workspace\项目名\src\main\java" type="XMLMAPPER" />
        <table schema="CL_DEMO" tableName="tb_user" />
        <table schema="CL_DEMO" tableName="tb_role" />
        <table schema="CL_DEMO" tableName="tb_permission" />
        <table schema="CL_DEMO" tableName="tb_role_user" />
        <table schema="CL_DEMO" tableName="tb_permission_role" />
    </context>
</generatorConfiguration>

 插件默认会读到src/main/resources目录下的generatorConfig.xml 文件。

 

如果是在eclipse中,选择pom.xml文件,击右键先择Run AS——>Maven Build… ——>在Goals框中输入:mybatis-generator:generate 

如果在命令行输入Maven命令即可,注意:一定是当前项目目录下运行该命令:

mvn mybatis-generator:generate

 

generatorConfig配置项说明

<context>元素

在MBG的配置中,至少需要有一个<context>元素。

<context>元素用于指定生成一组对象的环境。

例如指定要连接的数据库,要生成对象的类型和要处理的数据库中的表。运行MBG的时候还可以指定要运行的<context>。

该元素只有一个必选属性id,用来唯一确定一个<context>元素,该id属性可以在运行MBG的使用。

此外还有几个可选属性:

defaultModelType:**这个属性很重要**,这个属性定义了MBG如何生成**实体类**。

targetRuntime:此属性用于指定生成的代码的运行时环境。

 

<javaTypeResolver> 元素

这个元素的配置用来指定JDBC类型和Java类型如何转换。

该属性有一个可以配置的<property>元素。

可以配置的属性为forceBigDecimals,该属性可以控制是否强制DECIMAL和NUMERIC类型的字段转换为Java类型的java.math.BigDecimal,默认值为false,一般不需要配置。

默认情况下的转换规则为:

如果精度>0或者长度>18,就会使用java.math.BigDecimal

如果精度=0并且10<=长度<=18,就会使用java.lang.Long

如果精度=0并且5<=长度<=9,就会使用java.lang.Integer

如果精度=0并且长度<5,就会使用java.lang.Short

如果设置为true,那么一定会使用java.math.BigDecimal,配置示例如下:

<javaTypeResolver >

    <property name="forceBigDecimals" value="true" />

</javaTypeResolver>

 

<javaClientGenerator> 元素用于生成Mapper接口。

type:type=XMLMAPPER所有的方法都在XML中,接口调用依赖XML文件。

targetPackage:生成实体类存放的包名,一般就是放在该包下。

targetProject:指定目标项目路径,使用的是文件系统的绝对路径。

trimStrings:是否对数据库查询结果进行trim操作,如果设置为true就会生成类似这样public void setUsername(String username) {this.username = username == null ? null : username.trim();}的setter方法。默认值为false。

 

<table> 该元素用来配置要通过内省的表。只有配置的表才会生成实体类和其他文件。

enableXXX:XXX代表多种SQL方法,该属性用来指定是否生成对应的XXX语句

<update id="updateByExample" parameterType="map">
update lk_user
set id = #{record.id,jdbcType=NUMERIC},
  account = #{record.account,jdbcType=VARCHAR},
  password = #{record.password,jdbcType=VARCHAR},
  is_removed = #{record.isRemoved,jdbcType=CHAR},
  gmt_create = #{record.gmtCreate,jdbcType=TIMESTAMP},
  gmt_modified = #{record.gmtModified,jdbcType=TIMESTAMP},
  creator_id = #{record.creator,jdbcType=NUMERIC},
  modifier_id = #{record.modifier,jdbcType=NUMERIC}
<if test="_parameter != null">
  <include refid="Update_By_Example_Where_Clause" />
</if>
</update>

 

<table>元素的子元素

<generatedKey>这个元素用来指定自动生成主键的属性(identity字段或者sequences序列)。

如果指定这个元素,MBG在生成insert的SQL映射文件中插入一个<selectKey>元素,非常重要。

这个元素包含下面两个必选属性:

column:生成列的列名。

sqlStatement:将返回新值的 SQL 语句。如果这是一个identity列,您可以使用其中一个预定义的的特殊值。

预定义值如下:

Cloudscape、DB2、DB2_MF、Derby、HSQLDB、Informix、MySql、SqlServer、SYBASE、JDBC:

这会配置MBG使用MyBatis3支持的JDBC标准的生成key来生成代码。 这是一个独立于数据库获取标识列中的值的方法。 

重要: 只有当目标运行为MyBatis3时才会产生正确的代码。 如果与iBATIS2一起使用目标运行时会产生运行时错误的代码。

这个元素还包含两个可选属性:

配置示例一:

<table tableName="user login info" domainObjectName="UserLoginInfo">
    <generatedKey column="id" sqlStatement="Mysql"/>
</table>

 

对应的生成的结果:

<insert id="insert" parameterType="test.model.UserLoginInfo">
    <selectKey keyProperty="id" order="BEFORE" resultType="java.lang.Integer">
        SELECT LAST_INSERT_ID()
    </selectKey>
    insert into `user login info` (Id, username, logindate, loginip)
    values (#{id,jdbcType=INTEGER}, #{username,jdbcType=VARCHAR}, #{logindate,jdbcType=TIMESTAMP}, #{loginip,jdbcType=VARCHAR})
</insert>

 

这个插件,有很多地方需要自定义。

例如,删除操作,它使用的是物理删除,一般我们都使用逻辑删除。

我们可以通过修改源码,然个性化生成的代码。

IntrospectedTableMyBatis3Impl  true属性是用来控制是否合并生成xml文件,这里显然默认就是合并

XMLMapperGenerator增加后缀Ext

OutputUtilities更改xml空格

UpdateByPrimaryKeySelectiveElementGenerator 增加is_delete=n

SelectByPrimaryKeyElementGenerator 增加is_delete=n

修改DeleteByPrimaryKeyMethodGenerator,可以修改delete方法的入参

 

大对象类型的处理:

mybatis-generator默认会把所有jdbcType为:BINARY、BLOB、CLOB、LONGVARBINARY、LONGVARCHAR、VARBINARY这些类型都作为大对象,

反应出来的效果就是生成的pojo类会多一个类名+WithBLOBs.java的文件(含有的大对象个数大于1时),

而在XML里面也会增加一个id为ResultMapWithBLOBs的resultMap,它继承BaseResultMap。

分享到:
评论

相关推荐

    用Maven插件生成Mybatis代码的实现方法

    本文将介绍如何配置Maven插件来自动生成MyBatis的代码和映射文件。 首先,我们需要在项目的pom.xml文件中配置MyBatis代码生成器插件。这个插件的配置包括groupId、artifactId、version和configuration标签。在...

    Maven插件之mybatis-generator自动生成实体代码的demo

    而MyBatis Generator(MBG)则是MyBatis框架的一部分,它能够自动生成MyBatis相关的Java代码,包括实体类、Mapper接口、Mapper XML文件等,大大提升了开发效率。本文将详细介绍如何利用Maven插件集成MyBatis ...

    maven 代码生成(maven插件)

    MyBatis Generator(MBG)是一个强大的工具,用于自动生成MyBatis的SQL映射文件,DAO接口和实现,以及实体类。通过这个插件,开发者可以显著提高开发效率,减少手动编写重复代码的工作量。以下是对MyBatis Generator...

    MyBatis代码生成工具

    MyBatis代码生成工具是一款基于MyBatis框架的实用辅助工具,主要用于自动化生成MyBatis相关的Java源代码,包括实体类、Mapper接口、Mapper XML文件以及对应的SQL映射语句。这款工具极大地提高了开发效率,减少了手动...

    mybatis反向生成maven插件完美生成代码

    mybatis反向生成maven插件完美生成代码,运行generator插件 运行方法:在eclipse 中,选择pom.xml文件,击右键先择Run AS——&gt;Maven Build… ——&gt;在Goals框中输入:mybatis-generator:generate 运行即可 这样,...

    maven生成mybatis映射文件

    通过以上步骤,我们可以利用Maven与MyBatis Generator的结合,实现自动化生成MyBatis映射文件,提升开发效率,减少手动编写重复代码的工作量。记得在实际应用中根据项目特点进行适当的调整和优化。

    Mybatis代码生成器Demo(含数据库脚本).rar

    1. `pom.xml` - Maven项目的配置文件,包含了Mybatis代码生成插件的配置。 2. `generatorConfig.xml` - 代码生成器的配置文件,定义了数据库连接信息、生成规则等。 3. `Java程序源代码` - 如果选择了Java程序生成...

    利用maven的MyBatis Generator 插件自动创建代码示例

    利用maven的MyBatis Generator 插件自动创建代码示例利用maven的MyBatis Generator 插件自动创建代码示例利用maven的MyBatis Generator 插件自动创建代码示例

    mybatis代码自动生成

    3. **运行MBG**:在Java环境中,通过调用MyBatis Generator的API或使用Maven插件来执行生成操作。 4. **检查生成结果**:MBG会按照配置文件中的设置,自动生成对应的Java类和XML文件,开发者可以查看并集成到项目中...

    Mybatis代码生成器

    2. **运行生成器**: 使用Java代码或者Maven插件运行代码生成器,指定配置文件的位置。 3. **生成代码**: 代码生成器会根据配置读取数据库中的表信息,自动生成对应的Mapper接口、Mapper XML文件和实体类文件。 4. ...

    Mybatis Plus代码生成器 IDEA 插件版 (版本v0.0.6)

    1.Mybatis Plus代码生成器 1.1.自定义配置模板 1.2.自定义表-实体映射信息 1.3.多数据源管理 1.4.操作记忆功能 1.5.操作化繁为简 2.工程化(maven,spring boot) 2.1.生成maven工程 2.2.生成...

    基于Mybatis-Plus的Maven代码生成插件设计源码

    本源码为基于Mybatis-Plus的Maven代码生成插件设计,共包含25个文件,其中java文件14个,vm文件6个,gitignore文件1个,project文件1个,LICENSE文件1个,md文件1个,xml文件1个。该项目是一个Mybatis-Plus Maven...

    Maven插件源码:根据库表生成实体类&根据实体类生成库表

    总结来说,"Maven插件源码:根据库表生成实体类&根据实体类生成库表"是一个高效且实用的开发工具,它整合了数据库与Java代码的自动化生成,提高了开发效率,降低了错误的可能性。对于大型项目或频繁迭代的系统,这样...

    maven mybatis 插件 自动生成持久层代码

    在IT行业中,Maven和MyBatis是两个非常...总之,Maven MyBatis插件是提高开发效率和代码质量的有效工具,通过合理配置和使用,能够显著提升Java Web开发中的持久层代码生成效率,让开发者更多地专注于业务逻辑的实现。

    使用Mybatis Generator自动生成Mybatis相关代码(包含Mysql与Oracle)

    Mybatis Generator是一款强大的工具,它能够帮助开发人员自动化地生成Mybatis框架所需的SQL映射文件、Java实体类以及DAO接口等代码,极大地提高了开发效率。本教程将详细讲解如何使用Mybatis Generator针对Mysql和...

    mybatis自动生成代码工具

    MyBatis Generator(MBG)是一款强大的自动化代码生成工具,专为简化MyBatis框架的使用而设计。它能够根据数据库表结构自动生成Java实体类、Mapper接口与XML配置文件,以及Service和Controller层的代码,极大地提高...

    day04-Maven&MyBatis.zip

    例如,开发者可以使用Maven的插件生成MyBatis的Mapper接口和XML配置文件,使得数据库操作更加便捷。 在"day04-Maven&MyBatis.zip"这个压缩包中,可能包含了一个简单的Java Web项目,该项目展示了如何配置Maven和...

    mybatis反向生成工具(完整demo源代码,ui界面,非maven直接运行)mybatis-generator-core

    ui界面,非maven直接运行)mybatis-generator-core"中,我们看到的是一个具有图形用户界面的MBG版本,这意味着用户可以通过UI来直观地选择要生成代码的数据库表和目标路径,而无需通过命令行或者Maven插件来操作。...

    mybatis自动生成代码-maven版本

    总结来说,这个项目利用MyBatis Generator的Maven插件,结合IDEA开发环境、JDK1.8、Tomcat8.5和Maven3.5,实现自动化的代码生成,提高了开发效率,减少了手动编写重复代码的工作量。通过配置MBG的生成规则和Maven...

    mybatis maven自动生成实列

    现在,你已经完成了通过MyBatis Maven插件自动生成代码的过程。 使用MBG插件可以极大地提升开发效率,减少手动编写重复代码的工作量。同时,MBG也支持自定义模板,可以根据项目需求定制生成的代码风格。记得在实际...

Global site tag (gtag.js) - Google Analytics