介绍

根据自己的实际需求,在mybatis-generator-core基础上作了小小的功能改进。

增加了对Lombok插件的支持(generatorConfig.xml)

取消了生成的实体类中属性的get/set方法,增加了Lombok插件的@Data注解;

<!-- 增加对Lombok插件的支持   -->
<plugin type="org.mybatis.generator.plugins.LombokPlugin">
</plugin>

对tables标签进行了扩展,可根据查询字段生成查询条件,同时生成查询实体form和select相关的statement;

<table tableName="tb_user" domainObjectName="User" enableInsertSelective="false" enableUpdateByPrimaryKey="false">
    <!-- 增加对查询条件的支持  -->
    <conditionColumn columns="username,name,age"/>
</table>

Mapper.xml文件中生成where条件的statement

<sql id="queryConditions">
    <where>
      <if test="username != null and username != ''">
        and username = #{username,jdbcType=VARCHAR}
      </if>
      <if test="name != null and name != ''">
        and name = #{name,jdbcType=VARCHAR}
      </if>
      <if test="age != null ">
        and age = #{age,jdbcType=INTEGER}
      </if>
    </where>
  </sql>

生成的查询statement

<select id="selectListByForm" parameterType="cn.fetosoft.test.form.UserForm" resultMap="BaseResultMap">
    select 
    <include refid="Base_Column_List" />
    from tb_user
    <include refid="queryConditions"></include>
    <!-- 此处增加的是对分页的支持,可根据需要自行处理   -->
    <include refid="base.orderAndPage"></include>
  </select>

  <select id="selectCountByForm" parameterType="cn.fetosoft.test.form.UserForm" resultType="java.lang.Integer">
    select count(id) as c
    from tb_user
    <include refid="queryConditions"></include>
  </select>

配置生成form查询实体(generatorConfig.xml)

<!-- 配置生成查询类Form   -->
<javaFormGenerator targetPackage="cn.fetosoft.test.form"
         targetProject="D:/git/mybatis-generator/src/main/java" />

对生成的mapper.xml文件进行了精简,只生成了基础的查增改删的statement

selectByPrimaryKey
selectListByForm
selectCountByForm
deleteByPrimaryKey
insert
updateByPrimaryKeySelective

项目地址

https://gitee.com/gbinb/mybatis-generator

发表评论