近来公司由于历史原因使用ibatis,而市场上早就已经是mybatis的天下了,但是还有一小部分人在用ibatis,对这一小部分人来说使用ibatis是极其痛苦的,那么今天我们就来教大家如何自动生成ibatis代码,以及提供xml与java代码间的自动跳转等。
ibatis是mybatis的前身,那么mybatis现在的插件Mybatis generator自然是支持代码生成的了,只不过因为版本迭代的关系,目前最新版本已经不支持了,现在我们先教大家使用mybatis generator插件生成ibatis代码。
一.在项目pom文件中引入依赖 放在<build>标签下
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
<configuration>
<!-- 此处的路径填写的是配置文件所在的位置 配置文件就是自动生成代码依赖的一个关键文件 一般放到resources目录下边 -->
<configurationFile>src/main/resources/generator-config.xml</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.21</version>
</dependency>
</dependencies>
</plugin>
<!-- 此处标记到包时候排除的文件 我们这个文件就是为了自动生成代码的 所以项目打包时候没必要打到里边 这个是可选项配不配之都可以 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<excludes>
<exclude>generator-config.xml</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
二.添加配置文件generator-config.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>
<!--此处targetRuntime配置填写Ibatis2Java5则为生成ibatis代码 如果选Mybatis3则是生成mybatis代码 -->
<context id="DB2Tables" targetRuntime="Ibatis2Java5">
<!--去除注释 -->
<commentGenerator>
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!--数据库连接 此处是自动生成代码时候需要去找的库 把连接 账户 密码 配置成我们本地的数据库就可以了 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://xxx:3306/lucky_epromotion"
userId="xx"
password="xx">
</jdbcConnection>
<!--此处配置一些类型转换解析器 可以自定义一些 -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!--生成实体类 指定包名 以及生成的地址 (可以自定义地址,但是路径不存在不会自动创建 使用Maven生成在target目录下,会自动创建) -->
<javaModelGenerator targetPackage="com.lucky.epromotion.common.po"
targetProject="src/main/java">
<property name="enableSubPackages" value="false"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!--生成SQLMAP文件 -->
<sqlMapGenerator targetPackage="resources/mappers" targetProject="src/main">
<property name="enableSubPackages" value="false"/>
</sqlMapGenerator>
<!--生成Dao文件 可以配置 type="XMLMAPPER"生成xml的dao实现 context id="DB2Tables" 修改targetRuntime="MyBatis3" -->
<javaClientGenerator type="GENERIC-CI" targetPackage="com.lucky.epromotion.service.dao"
targetProject="src/main/java" implementationPackage="com.lucky.eorder.dao.test.impl">
<property name="enableSubPackages" value="false"/>
</javaClientGenerator>
<!--对应数据库表 mysql可以加入主键自增 字段命名 忽略某字段等-->
<!--<table tableName="distribution" enableSelectByExample="false" enableDeleteByExample="false"
enableCountByExample="false" enableUpdateByExample="false">
<generatedKey column="id" sqlStatement="MySql" identity="true"/>
<columnOverride column="distribution_type" javaType="Integer"/>
<columnOverride column="biz_type" javaType="Integer"/>
<columnOverride column="state" javaType="Integer"/>
</table>-->
<!--table标签就是对应的表结构 通过配置这个选项生成对应的实体对象 xml文件等
tableName即为表名 domainObjectName为对应的实体名称 还可以配其他比较复杂的各种东西-->
<table tableName="user" enableSelectByExample="false" enableDeleteByExample="false"
enableCountByExample="false" enableUpdateByExample="false" domainObjectName="UserPO">
<generatedKey column="id" sqlStatement="MySql" identity="true"/>
<columnOverride column="activity_status" javaType="Integer"/>
<columnOverride column="update_type" javaType="Integer"/>
<columnOverride column="brand_channel" javaType="Integer"/>
</table>
</context>
</generatorConfiguration>
三.在编译器中找到我们添加的插件 以idea为例
点击图中的插件即可自动生成对应的代码。
注意:因为插件的一些限制 所以生成的东西是固定的,如果你想改某些东西现在插件可以支持一部分,大家自行百度官方文档看就可以,要是想修改插件源码来改一些东西,那么请添加我得QQ624693304 说明ibatis插件问题,我将与你分享。
笔者现在在idea官方仓库上传了一款ibatis代码跳转的插件,大家在idea File-》 settings -》Plugins 中搜索即可
lucky-ibatis-generate
效果如下
近期笔者会抽时间把插件的源码上传到git中去,请多关注 git地址 https://github.com/caige2015/ibatis。
代码主要功能就是修改原有的一些功能 可以自定义service层 dao层 包括数据库字段灵活翻译成需要的java类型等。
目前自定义功能只在公司内部使用,看大家有过都非常需要,笔者将会尽快把功能推出。