Mybatis generator 辅助工具类,让生成的持久层代码更具维护性

mybatis-plugin-util

整这么一个工具类的原因有二:

  1. 通常我们用mybatis generator生成的代码,在开发过程中,有需要添加或修改的地方,比如在Mapper中添加接口,在mapper.xml里面新增sql配置。当开发后期需要增加字段的时候,麻烦就来了,再次生成新的代码中不含自主添加的内容,不能简单的覆盖,需要把原来自主添加的内容移到新生成的代码中整合。这个过程是费时的,没有创造性的,枯橾的,而且容易有遗漏的。而利用Mybatis的mapper.xml的可继承性,和Mapper接口的可继承性,就可以做到,将生成的代码与扩展的代码相分离,符合开闭原则,更利于维护。这时,新增字段,只需用它再次生成覆盖原来生成的即可。
  2. 第二个原因,算是个人偏好吧。偿试用过tkMybatis,虽然少了很多mapper.xml配置,但是个人感觉可能会更消耗性能。因为据相关资料了解,它的sql是执行过程中动态生成的。每一次持久层的操作,即便是相同的操作,都要再次动态生成sql,而mapper.xml中的sql,是项目启动就加载到内存中,每次调用,直接拿出sql语句来就可以用,相当于以空间换性能,是不是更好呢?另外,从逆向生成的mapper.xml文件,复制字段,属性,去书写新的sql配置,也是很便捷的。

参考文献

让MyBatis Generator产生的Mapper更简洁https://my.oschina.net/wangmengjun/blog/784697

 

项目gitee源码下载地址:https://gitee.com/a114533627/mybatis-plugin-util

 

使用方法:

步聚1:

 

    <dependency>
        <groupId>my.xh</groupId>
        <artifactId>mybatis-plugin-util</artifactId>
        <version>1.0</version>
    </dependency>
</dependencies>
<build>
    <extensions>
        <extension>
            <groupId>org.apache.maven.wagon</groupId>
            <artifactId>wagon-ssh</artifactId>
            <version>2.8</version>
        </extension>
    </extensions>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>

        <!-- mybatis generator 自动生成代码插件 -->
        <plugin>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-maven-plugin</artifactId>
            <version>1.3.6</version>
            <dependencies>
                <dependency>
                    <groupId>my.xh</groupId>
                    <artifactId>mybatis-plugin-util</artifactId>
                    <version>1.0</version>
                </dependency>
            </dependencies>
            <configuration>   <configurationFile>${basedir}/src/main/resources/generatorConfig.xml</configurationFile>
                <overwrite>true</overwrite>
                <verbose>true</verbose>
            </configuration>
        </plugin>

步聚2:

配置文件generatorConfig.xml的配置:

<?xml version=" <?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:\\xuanhu\\myMavenRepository\\repository\\mysql\\mysql-connector-java\\5.1.46\\mysql-connector-java-5.1.46.jar"/>
    <context id="DB2Tables"  targetRuntime="MyBatis3">
		<plugin type="my.mybatis.plugin.BaseMapperGeneratorPlugin"></plugin>
		<plugin type="my.mybatis.plugin.ExtendMapperPlugin">
			<property name="targetProject" value=".\src\main\java"/>
			<property name="targetPackage" value="com.gotway.gotway.mapper"/>
			<property name="extendTargetPackage" value="com.gotway.gotway.mapper.extend"/>
		</plugin>
        <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/gotway" userId="root"
			password="root">
		</jdbcConnection>
		<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和 
			NUMERIC 类型解析为java.math.BigDecimal -->
		<javaTypeResolver>
			<property name="forceBigDecimals" value="false" />
		</javaTypeResolver>

		<!-- targetProject:生成PO类的位置 -->
		<javaModelGenerator targetPackage="com.gotway.gotway.pojo"
			targetProject=".\src\main\java">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<property name="enableSubPackages" value="false" />
			<!-- 从数据库返回的值被清理前后的空格 -->
			<property name="trimStrings" value="true" />
		</javaModelGenerator>
        <!-- targetProject:mapper映射文件生成的位置 -->
		<sqlMapGenerator targetPackage="mapping"
			targetProject=".\src\main\resources">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<property name="enableSubPackages" value="false" />
		</sqlMapGenerator>
		<!-- targetPackage:mapper接口生成的位置 -->
		<javaClientGenerator type="XMLMAPPER"
			targetPackage="com.gotway.gotway.mapper"
			targetProject=".\src\main\java">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<property name="enableSubPackages" value="false" />

		</javaClientGenerator>
		<!-- 指定数据库表 -->

		<table tableName="t_%">
			<generatedKey column="id" sqlStatement="Mysql" identity="true" />
			<domainObjectRenamingRule searchString="^T" replaceString="" />
			<columnOverride column="content" jdbcType="VARCHAR" />
		</table>

	</context>
</generatorConfiguration>

 

步聚3:

 

最终效果:

package my.mybatis.base;

import org.apache.ibatis.annotations.Param;

import java.io.Serializable;
import java.util.List;

/**
 * 
 * @author wangmengjun
 *
 */
public interface BaseMapper<T, E, PK extends Serializable> {

	long countByExample(E example);

	int deleteByExample(E example);

	int deleteByPrimaryKey(PK pk);

	int insert(T record);

	int insertSelective(T record);

	List<T> selectByExample(E example);

	T selectByPrimaryKey(PK pk);

	int updateByExampleSelective(@Param("record") T record, @Param("example") E example);

	int updateByExample(@Param("record") T record, @Param("example") E example);

	int updateByPrimaryKeySelective(T record);

	int updateByPrimaryKey(T record);
}

 

因为时间有限,没有太多的文字说明,如果对您有用,不明之处,欢迎探讨

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值