• MybatisX快速开发插件模版扩展


    ​​​​​​官方文档  MybatisX快速开发插件 | MyBatis-Plus

    MybatisX 是一款基于 IDEA 的快速开发插件,为效率而生。

    安装方法:打开 IDEA,进入 File -> Settings -> Plugins -> Browse Repositories,输入 mybatisx 搜索并安装。

    一. 模版修改

    官方生成的模版少了service,以及部分方法的定义,所以我在官方的基础上加了加了service模版以及底层方法的补充。主要修改的是default-all文件夹下的模版文件,具体如下:

    .meta.xml 修改后代码

    1. <templates>
    2. <template>
    3. <property name="configName" value="serviceInterface"/>
    4. <property name="configFile" value="serviceInterface.ftl"/>
    5. <property name="fileName" value="${domain.fileName}Service"/>
    6. <property name="suffix" value=".java"/>
    7. <property name="packageName" value="${domain.basePackage}.service"/>
    8. <property name="encoding" value="${domain.encoding}"/>
    9. <property name="basePath" value="${domain.basePath}"/>
    10. template>
    11. <template>
    12. <property name="configName" value="serviceImpl"/>
    13. <property name="configFile" value="serviceImpl.ftl"/>
    14. <property name="fileName" value="${domain.fileName}ServiceImpl"/>
    15. <property name="suffix" value=".java"/>
    16. <property name="packageName" value="${domain.basePackage}.service.impl"/>
    17. <property name="encoding" value="${domain.encoding}"/>
    18. <property name="basePath" value="${domain.basePath}"/>
    19. template>
    20. <template>
    21. <property name="configName" value="mapperInterface"/>
    22. <property name="configFile" value="mapperInterface.ftl"/>
    23. <property name="fileName" value="${domain.fileName}Mapper"/>
    24. <property name="suffix" value=".java"/>
    25. <property name="packageName" value="${domain.basePackage}.mapper"/>
    26. <property name="encoding" value="${domain.encoding}"/>
    27. <property name="basePath" value="${domain.basePath}"/>
    28. template>
    29. <template>
    30. <property name="configName" value="mapperXml"/>
    31. <property name="configFile" value="mapperXml.ftl"/>
    32. <property name="fileName" value="${domain.fileName}Mapper"/>
    33. <property name="suffix" value=".xml"/>
    34. <property name="packageName" value="mapper"/>
    35. <property name="encoding" value="${domain.encoding}"/>
    36. <property name="basePath" value="src/main/resources"/>
    37. template>
    38. templates>

    mapperXml.ftl 修改后代码

    1. "1.0" encoding="UTF-8"?>
    2. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    4. "${mapperInterface.packageName}.${baseInfo.fileName}">
    5. id="BaseResultMap" type="${tableClass.fullClassName}">
    6. <#list tableClass.pkFields as field>
    7. <id property="${field.fieldName}" column="${field.columnName}" jdbcType="${field.jdbcType}"/>
    8. #list>
    9. <#list tableClass.baseFields as field>
    10. "${field.fieldName}" column="${field.columnName}" jdbcType="${field.jdbcType}"/>
    11. #list>
    12. id="Base_Column_List">
    13. <#list tableClass.allFields as field>${field.columnName}<#sep>,<#if field_index%3==2>${"\n "}
    14. id="queryCondition">
    15. <#list tableClass.allFields as field>
    16. <if test="${field.fieldName} != null">and ${field.columnName} = ${'#'}{${field.fieldName},jdbcType=${field.jdbcType}}
    17. #list>
    18. id="deleteByPrimaryKey" parameterType="java.lang.Long">
    19. delete from ${tableClass.tableName}
    20. where <#list tableClass.pkFields as field> ${field.columnName} = ${'#'}{${field.fieldName},jdbcType=${field.jdbcType}} <#if field_has_next>AND
    21. id="insert"<#if (tableClass.pkFields?size==1)> keyColumn="${tableClass.pkFields[0].columnName}" keyProperty="${tableClass.pkFields[0].fieldName}" parameterType="${tableClass.fullClassName}" useGeneratedKeys="true">
    22. insert into ${tableClass.tableName}
    23. "(" suffix=")" suffixOverrides=",">
    24. <#list tableClass.allFields as field>
    25. <if test="${field.fieldName} != null">${field.columnName},
    26. #list>
    27. "values (" suffix=")" suffixOverrides=",">
    28. <#list tableClass.allFields as field>
    29. <if test="${field.fieldName} != null">${'#'}{${field.fieldName},jdbcType=${field.jdbcType}},
    30. #list>
    31. id="update" parameterType="${tableClass.fullClassName}">
    32. update ${tableClass.tableName}
    33. <set>
    34. <#list tableClass.baseBlobFields as field>
    35. <if test="${field.fieldName} != null">
    36. ${field.columnName} = ${'#'}{${field.fieldName},jdbcType=${field.jdbcType}},
    37. #list>
    38. where <#list tableClass.pkFields as field> ${field.columnName} = ${'#'}{${field.fieldName},jdbcType=${field.jdbcType}} <#if field_has_next>AND

    mapperInterface.ftl  修改后代码

    1. package ${mapperInterface.packageName};
    2. import ${tableClass.fullClassName};
    3. import java.util.List;
    4. /**
    5. * @author ${author!}
    6. * @description 针对表【${tableClass.tableName}<#if tableClass.remark?has_content>(${tableClass.remark!})】的数据库操作Mapper
    7. * @createDate ${.now?string('yyyy-MM-dd HH:mm:ss')}
    8. * @Entity ${tableClass.fullClassName}
    9. */
    10. public interface ${mapperInterface.fileName} {
    11. int deleteByPrimaryKey(Long id);
    12. int insert(${tableClass.shortClassName} record);
    13. ${tableClass.shortClassName} selectDetail(${tableClass.shortClassName} record);
    14. List<${tableClass.shortClassName}> selectList(${tableClass.shortClassName} record);
    15. int selectCount(${tableClass.shortClassName} record);
    16. int update(${tableClass.shortClassName} record);
    17. }

    serviceInterface.ftl  修改后代码

    1. package ${baseInfo.packageName};
    2. import ${tableClass.fullClassName};
    3. <#if baseService??&&baseService!="">
    4. import ${baseService};
    5. <#list baseService?split(".") as simpleName>
    6. <#if !simpleName_has_next>
    7. <#assign serviceSimpleName>${simpleName}
    8. #if>
    9. #list>
    10. #if>
    11. import java.util.List;
    12. /**
    13. * @author ${author!}
    14. * @description 针对表【${tableClass.tableName}<#if tableClass.remark?has_content>(${tableClass.remark!})】的数据库操作Service
    15. * @createDate ${.now?string('yyyy-MM-dd HH:mm:ss')}
    16. */
    17. public interface ${baseInfo.fileName} {
    18. public int deleteByPrimaryKey(Long id);
    19. public int insert(${tableClass.shortClassName} record);
    20. public ${tableClass.shortClassName} selectDetail(${tableClass.shortClassName} record);
    21. public List<${tableClass.shortClassName}> selectList(${tableClass.shortClassName} record);
    22. public int selectCount(${tableClass.shortClassName} record);
    23. public int update(${tableClass.shortClassName} record);
    24. }

    serviceImpl.ftl 修改后代码

    1. package ${baseInfo.packageName};
    2. import ${tableClass.fullClassName};
    3. import ${serviceInterface.packageName}.${serviceInterface.fileName};
    4. import ${mapperInterface.packageName}.${mapperInterface.fileName};
    5. <#if baseService??&&baseService!="">
    6. import ${baseService};
    7. <#list baseService?split(".") as simpleName>
    8. <#if !simpleName_has_next>
    9. <#assign serviceSimpleName>${simpleName}
    10. if>
    11. if>
    12. import org.springframework.stereotype.Service;
    13. import org.springframework.beans.factory.annotation.Autowired;
    14. import java.util.List;
    15. /**
    16. * @author ${author!}
    17. * @description 针对表【${tableClass.tableName}<#if tableClass.remark?has_content>(${tableClass.remark!})】的数据库操作Service实现
    18. * @createDate ${.now?string('yyyy-MM-dd HH:mm:ss')}
    19. */
    20. @Service
    21. public class ${serviceImpl.fileName} implements ${serviceInterface.fileName}{
    22. @Autowired
    23. private ${mapperInterface.fileName} dao;
    24. public int deleteByPrimaryKey(Long id) {
    25. return dao.deleteByPrimaryKey(id);
    26. }
    27. public int insert(${tableClass.shortClassName} record) {
    28. return dao.insert(record);
    29. }
    30. public ${tableClass.shortClassName} selectDetail(${tableClass.shortClassName} record) {
    31. return dao.selectDetail(record);
    32. }
    33. public List<${tableClass.shortClassName}> selectList(${tableClass.shortClassName} record) {
    34. return dao.selectList(record);
    35. }
    36. public int selectCount(${tableClass.shortClassName} record) {
    37. return dao.selectCount(record);
    38. }
    39. public int update(${tableClass.shortClassName} record) {
    40. return dao.update(record);
    41. }
    42. }

    二. 代码生成步骤:

    接下来看下使用:

    三. 查看生成的代码 

    domain文件jxzCustomer

    1. package com.train.domain;
    2. import java.io.Serializable;
    3. import lombok.Data;
    4. /**
    5. * 客户列表
    6. * @TableName jxzCustomer
    7. */
    8. @Data
    9. public class jxzCustomer implements Serializable {
    10. private static final long serialVersionUID = -4294857523757350782L; // 后面手动修改的,默认是1
    11. /**
    12. * 主键
    13. */
    14. private Long customerId;
    15. /**
    16. * 客户编码
    17. */
    18. private String customerCode;
    19. /**
    20. * 客户名称
    21. */
    22. private String customerName;
    23. /**
    24. * 简称
    25. */
    26. private String shortName;
    27. }

    jxzCustomerMapper.xml

    1. mapper
    2. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    4. <mapper namespace="com.train.mapper.jxzCustomerMapper">
    5. <resultMap id="BaseResultMap" type="com.train.domain.jxzCustomer">
    6. <id property="customerId" column="customerId" jdbcType="BIGINT"/>
    7. <result property="customerCode" column="customerCode" jdbcType="VARCHAR"/>
    8. <result property="customerName" column="customerName" jdbcType="VARCHAR"/>
    9. <result property="shortName" column="shortName" jdbcType="VARCHAR"/>
    10. resultMap>
    11. <sql id="Base_Column_List">
    12. customerId,customerCode,customerName,
    13. shortName
    14. sql>
    15. <select id="selectDetail" parameterType="com.train.domain.jxzCustomer" resultType="com.train.domain.jxzCustomer">
    16. select * from jxzCustomer
    17. <where>
    18. <include refid="queryCondition">include>
    19. where>
    20. limit 1
    21. select>
    22. <select id="selectCount" parameterType="com.train.domain.jxzCustomer" resultType="java.lang.Integer">
    23. select count(1) from jxzCustomer
    24. <where>
    25. <include refid="queryCondition">include>
    26. where>
    27. select>
    28. <select id="selectList" parameterType="com.train.domain.jxzCustomer" resultType="com.train.domain.jxzCustomer">
    29. select * from jxzCustomer
    30. <where>
    31. <include refid="queryCondition">include>
    32. where>
    33. select>
    34. <sql id="queryCondition">
    35. <if test="customerId != null">and customerId = #{customerId,jdbcType=BIGINT},if>
    36. <if test="customerCode != null">and customerCode = #{customerCode,jdbcType=VARCHAR},if>
    37. <if test="customerName != null">and customerName = #{customerName,jdbcType=VARCHAR},if>
    38. <if test="shortName != null">and shortName = #{shortName,jdbcType=VARCHAR},if>
    39. sql>
    40. <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
    41. delete from jxzCustomer
    42. where customerId = #{customerId,jdbcType=BIGINT}
    43. delete>
    44. <insert id="insert" keyColumn="customerId" keyProperty="customerId" parameterType="com.train.domain.jxzCustomer" useGeneratedKeys="true">
    45. insert into jxzCustomer
    46. <trim prefix="(" suffix=")" suffixOverrides=",">
    47. <if test="customerId != null">customerId,if>
    48. <if test="customerCode != null">customerCode,if>
    49. <if test="customerName != null">customerName,if>
    50. <if test="shortName != null">shortName,if>
    51. trim>
    52. <trim prefix="values (" suffix=")" suffixOverrides=",">
    53. <if test="customerId != null">#{customerId,jdbcType=BIGINT},if>
    54. <if test="customerCode != null">#{customerCode,jdbcType=VARCHAR},if>
    55. <if test="customerName != null">#{customerName,jdbcType=VARCHAR},if>
    56. <if test="shortName != null">#{shortName,jdbcType=VARCHAR},if>
    57. trim>
    58. insert>
    59. <update id="update" parameterType="com.train.domain.jxzCustomer">
    60. update jxzCustomer
    61. <set>
    62. <if test="customerCode != null">
    63. customerCode = #{customerCode,jdbcType=VARCHAR},
    64. if>
    65. <if test="customerName != null">
    66. customerName = #{customerName,jdbcType=VARCHAR},
    67. if>
    68. <if test="shortName != null">
    69. shortName = #{shortName,jdbcType=VARCHAR},
    70. if>
    71. set>
    72. where customerId = #{customerId,jdbcType=BIGINT}
    73. update>
    74. mapper>
    jxzCustomerMapper
    1. package com.train.mapper;
    2. import com.train.domain.jxzCustomer;
    3. import java.util.List;
    4. /**
    5. * @author sunww
    6. * @description 针对表【jxzCustomer(客户列表)】的数据库操作Mapper
    7. * @createDate 2022-08-02 15:36:15
    8. * @Entity com.train.domain.jxzCustomer
    9. */
    10. public interface jxzCustomerMapper {
    11. int deleteByPrimaryKey(Long id);
    12. int insert(jxzCustomer record);
    13. jxzCustomer selectDetail(jxzCustomer record);
    14. List selectList(jxzCustomer record);
    15. int selectCount(jxzCustomer record);
    16. int update(jxzCustomer record);
    17. }
    jxzCustomerService
    1. package com.train.service;
    2. import com.train.domain.jxzCustomer;
    3. import java.util.List;
    4. /**
    5. * @author sunww
    6. * @description 针对表【jxzCustomer(客户列表)】的数据库操作Service
    7. * @createDate 2022-08-02 15:36:15
    8. */
    9. public interface jxzCustomerService {
    10. public int deleteByPrimaryKey(Long id);
    11. public int insert(jxzCustomer record);
    12. public jxzCustomer selectDetail(jxzCustomer record);
    13. public List selectList(jxzCustomer record);
    14. public int selectCount(jxzCustomer record);
    15. public int update(jxzCustomer record);
    16. }
    jxzCustomerServiceImpl
    1. package com.train.service.impl;
    2. import com.train.domain.jxzCustomer;
    3. import com.train.service.jxzCustomerService;
    4. import com.train.mapper.jxzCustomerMapper;
    5. import org.springframework.stereotype.Service;
    6. import org.springframework.beans.factory.annotation.Autowired;
    7. import java.util.List;
    8. /**
    9. * @author sunww
    10. * @description 针对表【jxzCustomer(客户列表)】的数据库操作Service实现
    11. * @createDate 2022-08-02 15:36:15
    12. */
    13. @Service
    14. public class jxzCustomerServiceImpl implements jxzCustomerService{
    15. @Autowired
    16. private jxzCustomerMapper dao;
    17. public int deleteByPrimaryKey(Long id) {
    18. return dao.deleteByPrimaryKey(id);
    19. }
    20. public int insert(jxzCustomer record) {
    21. return dao.insert(record);
    22. }
    23. public jxzCustomer selectDetail(jxzCustomer record) {
    24. return dao.selectDetail(record);
    25. }
    26. public List selectList(jxzCustomer record) {
    27. return dao.selectList(record);
    28. }
    29. public int selectCount(jxzCustomer record) {
    30. return dao.selectCount(record);
    31. }
    32. public int update(jxzCustomer record) {
    33. return dao.update(record);
    34. }
    35. }
     
    

  • 相关阅读:
    MySQL的下载、安装、配置
    基于springboot+Redis的前后端分离项目之分布式锁(四)-【黑马点评】
    shiro的实现认证
    贴片天线的特征模分析及其应用
    Android学习笔记 70. 学会帮助自己【自理】
    【英雄哥六月集训】第 30天: 拓扑排序
    CI/CD -gitlab
    初刷leetcode题目(5)——数据结构与算法
    LibOpenCM3(二) 项目模板 Makefile分析
    高德地图系列(四):vue项目利用高德地图实现车辆的路线规划
  • 原文地址:https://blog.csdn.net/robinson_911/article/details/126125160