EasyCode是一个什么东西?

EasyCode是基于IntelliJ IDEA开发的代码生成插件,支持自定义任意模板(Java,html,js,xml)。只要是与数据库相关的代码都可以通过自定义模板来生成。支持数据库类型与java类型映射关系配置。支持同时生成生成多张表的代码。每张表有独立的配置信息。完全的个性化定义,规则由你设置。

创建一个SpringBoot项目

下载Easy Code

配置数据源

使用Easy Code一定要使用IDEA自带的数据库工具来配置数据源

打开侧边的Database,查看效果

准备数据表

我这里使用Navcat工具创建了一个user表

自定义生成模板

我这里修改了默认的生成模板,所以会与你的有所区别

第一次安装EasyCode的时候默认的模板(服务于MyBatis)可以生成下面类型的代码

  1. entity.java
  2. dao.java
  3. service.java
  4. serviceImpl.java
  5. controller.java
  6. mapper.xml
  7. debug.json

查看分组,也可以看到还可以支持生成MyBatisPlus

以user表为例,根据你定义的模板生成代码,文章的最后贴出我自定义的模板

选择模板

点击OK之后,就可以看到生成了这些代码

实体类层:User.java

 package com.moti.springbooteasycode.entity;

import java.io.Serializable;

/**
 * (User)实体类
 *
 * @author 莫提
 * @since 2020-02-14 12:37:22
 */
public class User implements Serializable {
    private static final long serialVersionUID = 360314844000215122L;
    
    private Integer userId;
    
    private String userName;
    
    private String password;


    public Integer getUserId() {
        return userId;
    }

    public void setUserId(Integer userId) {
        this.userId = userId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "userId=" + userId +
                "userName=" + userName +
                "password=" + password +
                 '}';      
    }
}

Dao层:UserDao.java

package com.moti.springbooteasycode.dao;

import com.moti.springbooteasycode.entity.User;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

 /**
 * @InterfaceName UserDao
 * @Description (User)表数据库访问层
 * @author 莫提
 * @date 2020-02-14 11:54:45
 * @Version 1.0
 **/
@Mapper
public interface UserDao {

    /**
     * @Description 添加User
     * @author 莫提
     * @date 2020-02-14 11:54:45
     * @param user 实例对象
     * @return 影响行数
     */
    int insert(User user);
    
    /**
     * @Description 删除User
     * @author 莫提
     * @date 2020-02-14 11:54:45
     * @param userId 主键
     * @return 影响行数
     */
    int deleteById(Integer userId);

    /**
     * @Description 查询单条数据
     * @author 莫提
     * @date 2020-02-14 11:54:45
     * @param userId 主键
     * @return 实例对象
     */
    User queryById(Integer userId);

    /**
     * @Description 查询全部数据
     * @author 莫提
     * @date 2020-02-14 11:54:45
     * 分页使用MyBatis的插件实现
     * @return 对象列表
     */
    List<User> queryAll();

    /**
     * @Description 实体作为筛选条件查询数据
     * @author 莫提
     * @date 2020-02-14 11:54:45
     * @param user 实例对象
     * @return 对象列表
     */
    List<User> queryAll(User user);

    /**
     * @Description 修改User
     * @author 莫提
     * @date 2020-02-14 11:54:45
     * @param 根据user的主键修改数据
     * @return 影响行数
     */
    int update(User user);

}

Service接口层:UserService.java

package com.moti.springbooteasycode.service;

import com.moti.springbooteasycode.entity.User;

import java.util.List;

/**
* @InterfaceName UserService
* @Description (User)表服务接口
* @author 莫提
* @date 2020-02-14 11:54:45
* @Version 1.0
**/
public interface UserService {

/**
* @Description 添加User
* @author 莫提
* @date 2020-02-14 11:54:45
* @param user 实例对象
* @return 是否成功
*/
boolean insert(User user);

/**
* @Description 删除User
* @author 莫提
* @date 2020-02-14 11:54:45
* @param userId 主键
* @return 是否成功
*/
boolean deleteById(Integer userId);

/**
* @Description 查询单条数据
* @author 莫提
* @date 2020-02-14 11:54:45
* @param userId 主键
* @return 实例对象
*/
User queryById(Integer userId);

/**
* @Description 查询全部数据
* @author 莫提
* @date 2020-02-14 11:54:45
* 分页使用MyBatis的插件实现
* @return 对象列表
*/
List<User> queryAll();

/**
* @Description 实体作为筛选条件查询数据
* @author 莫提
* @date 2020-02-14 11:54:45
* @param user 实例对象
* @return 对象列表
*/
List<User> queryAll(User user);

/**
* @Description 修改数据,哪个属性不为空就修改哪个属性
* @author 莫提
* @date 2020-02-14 11:54:45
* @param user 实例对象
* @return 是否成功
*/
boolean update(User user);

}

ServiceImpl服务接口实现层:UserServiceImpl.java

package com.moti.springbooteasycode.service.impl;

import com.moti.springbooteasycode.dao.UserDao;
import com.moti.springbooteasycode.entity.User;
import com.moti.springbooteasycode.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

 /**
 * @ClassName UserServiceImpl
 * @Description (User)表服务实现类
 * @author 莫提
 * @date 2020-02-14 11:54:45
 * @Version 1.0
 **/
@Service("userService")
public class UserServiceImpl extends BaseService implements UserService {

     @Autowired
     protected UserDao userDao;

    /**
     * @Description 添加User
     * @author 莫提
     * @date 2020-02-14 11:54:45
     * @param user 实例对象
     * @return 是否成功
     */
    @Override
    public boolean insert(User user) {
        if(userDao.insert(user) == 1){
            return true;
        }
        return false;
    }

    /**
     * @Description 删除User
     * @author 莫提
     * @date 2020-02-14 11:54:45
     * @param userId 主键
     * @return 是否成功
     */
    @Override
    public boolean deleteById(Integer userId) {
        if(userDao.deleteById(userId) == 1){
            return true;
        }
        return false;
    }

    /**
     * @Description 查询单条数据
     * @author 莫提
     * @date 2020-02-14 11:54:45
     * @param userId 主键
     * @return 实例对象
     */
    @Override
    public User queryById(Integer userId) {
        return userDao.queryById(userId);
    }

    /**
     * @Description 查询全部数据
     * @author 莫提
     * @date 2020-02-14 11:54:45
     * 分页使用MyBatis的插件实现
     * @return 对象列表
     */
    @Override
    public List<User> queryAll() {
        return userDao.queryAll();
    }

    /**
     * @Description 实体作为筛选条件查询数据
     * @author 莫提
     * @date 2020-02-14 11:54:45
     * @param user 实例对象
     * @return 对象列表
     */
    @Override
    public List<User> queryAll(User user) {
        return userDao.queryAll(user);
    }

    /**
     * @Description 修改数据,哪个属性不为空就修改哪个属性
     * @author 莫提
     * @date 2020-02-14 11:54:45
     * @param user 实例对象
     * @return 是否成功
     */
    @Override
    public boolean update(User user) {
        if(userDao.update(user) == 1){
            return true;
        }
        return false;
    }

}

Mapper映射文件:UserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.moti.springbooteasycode.dao.UserDao">

    <!--user的映射结果集-->
    <resultMap type="com.moti.springbooteasycode.entity.User" id="UserMap">
        <result property="userId" column="user_id" jdbcType="INTEGER"/>
        <result property="userName" column="user_name" jdbcType="VARCHAR"/>
        <result property="password" column="password" jdbcType="VARCHAR"/>
    </resultMap>
    
    <!--全部字段-->
    <sql id="allColumn"> user_id, user_name, password </sql>
    
    <!--添加语句的字段列表-->
    <sql id="insertColumn">
        <if test="userName != null and userName != ''">
                user_name,
        </if>
        <if test="password != null and password != ''">
                password,
        </if>
    </sql>
    
    <!--添加语句的值列表-->
        <sql id="insertValue">
        <if test="userName != null and userName != ''">
                #{userName},
        </if>
        <if test="password != null and password != ''">
                #{password},
        </if>
    </sql>
    
    <!--通用对User各个属性的值的非空判断-->
    <sql id="commonsValue">
        <if test="userName != null and userName != ''">
                user_name = #{userName},
        </if>
        <if test="password != null and password != ''">
                password = #{password},
        </if>
    </sql>
    
    <!--新增user:哪个字段不为空就添加哪列数据,返回自增主键-->
    <insert id="insert" keyProperty="userId" useGeneratedKeys="true">
        insert into user
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <include refid="insertColumn"/>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <include refid="insertValue"/>
        </trim>
    </insert>
   
    <!--删除user:通过主键-->
    <delete id="deleteById">
        delete from user
        <where>
            user_id = #{userId}
        </where>
    </delete>
    
    <!--查询单个user-->
    <select id="queryById" resultMap="UserMap">
        select
        <include refid="allColumn"></include>
        from user
        <where>
            user_id = #{userId}
        </where>
    </select>

    <!--查询所有user-->
    <select id="queryAllByLimit" resultMap="UserMap">
        select
        <include refid="allColumn"></include>
        from user
    </select>

    <!--通过实体作为筛选条件查询-->
    <select id="queryAll" resultMap="UserMap">
        select
          <include refid="allColumn"></include>
        from user
        <trim prefix="where" prefixOverrides="and" suffixOverrides=",">
            <include refid="commonsValue"></include>
        </trim>
    </select>

    <!--通过主键修改数据-->
    <update id="update">
        update user
        <set>
            <include refid="commonsValue"></include>
        </set>
        <where>
            user_id = #{userId}
        </where>
    </update>

</mapper>

以上代码完全是生成出来了,从头到尾只需要点几下鼠标,是不是很神奇!

BaseService是我根据需求自己后加的

package com.moti.springbooteasycode.service.impl;

import com.moti.springbooteasycode.dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;

/**
 * @ClassName: BaseService
 * @Description: TODO
 * @author: xw
 * @date 2020/2/14 1:49
 * @Version: 1.0
 **/
public class BaseService {
    @Autowired
    protected UserDao userDao;
}

我的默认模板

注意使用我的模板的时候,需要将我上面的BaseService类添加到service.impl包下

entity.java

##引入宏定义
$!define

##使用宏定义设置回调(保存位置与文件后缀)
#save("/entity", ".java")

##使用宏定义设置包后缀
#setPackageSuffix("entity")

##使用全局变量实现默认包导入
$!autoImport
import java.io.Serializable;

##使用宏定义实现类注释信息
#tableComment("实体类")
public class $!{tableInfo.name} implements Serializable {
    private static final long serialVersionUID = $!tool.serial();
#foreach($column in $tableInfo.fullColumn)
    #if(${column.comment})/**
    * ${column.comment}
    */#end

    private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
#end

#foreach($column in $tableInfo.fullColumn)
##使用宏定义实现get,set方法
#getSetMethod($column)
#end

    @Override
    public String toString() {
        return "$!{tableInfo.name}{" +
    #foreach($column in $tableInfo.fullColumn)
            "$!{column.name}=" + $!{column.name} +
    #end
             '}';      
    }
}

dao.java

##定义初始变量
#set($tableName = $tool.append($tableInfo.name, "Dao"))
##设置回调
$!callback.setFileName($tool.append($tableName, ".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/dao"))

##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
    #set($pk = $tableInfo.pkColumn.get(0))
#end

#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}dao;

import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;

 /**
 * @InterfaceName $!{tableName}
 * @Description $!{tableInfo.comment}($!{tableInfo.name})表数据库访问层
 * @author $!author
 * @date $!time.currTime()
 * @Version 1.0
 **/
@Mapper
public interface $!{tableName} {

    /**
     * @Description 添加$!{tableInfo.name}
     * @author $!author
     * @date $!time.currTime()
     * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
     * @return 影响行数
     */
    int insert($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));
    
    /**
     * @Description 删除$!{tableInfo.name}
     * @author $!author
     * @date $!time.currTime()
     * @param $!pk.name 主键
     * @return 影响行数
     */
    int deleteById($!pk.shortType $!pk.name);

    /**
     * @Description 查询单条数据
     * @author $!author
     * @date $!time.currTime()
     * @param $!pk.name 主键
     * @return 实例对象
     */
    $!{tableInfo.name} queryById($!pk.shortType $!pk.name);

    /**
     * @Description 查询全部数据
     * @author $!author
     * @date $!time.currTime()
     * 分页使用MyBatis的插件实现
     * @return 对象列表
     */
    List<$!{tableInfo.name}> queryAll();

    /**
     * @Description 实体作为筛选条件查询数据
     * @author $!author
     * @date $!time.currTime()
     * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
     * @return 对象列表
     */
    List<$!{tableInfo.name}> queryAll($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));

    /**
     * @Description 修改$!{tableInfo.name}
     * @author $!author
     * @date $!time.currTime()
     * @param 根据$!tool.firstLowerCase($!{tableInfo.name})的主键修改数据
     * @return 影响行数
     */
    int update($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));

}

service.java

##定义初始变量
#set($tableName = $tool.append($tableInfo.name, "Service"))
##设置回调
$!callback.setFileName($tool.append($tableName, ".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/service"))

##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
    #set($pk = $tableInfo.pkColumn.get(0))
#end

#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}service;

import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};
import java.util.List;

/**
 * @InterfaceName $!{tableName}
 * @Description $!{tableInfo.comment}($!{tableInfo.name})表服务接口
 * @author $!author
 * @date $!time.currTime()
 * @Version 1.0
 **/
public interface $!{tableName} {

    /**
     * @Description 添加$!{tableInfo.name}
     * @author $!author
     * @date $!time.currTime()
     * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
     * @return 是否成功
     */
    boolean insert($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));

    /**
     * @Description 删除$!{tableInfo.name}
     * @author $!author
     * @date $!time.currTime()
     * @param $!pk.name 主键
     * @return 是否成功
     */
    boolean deleteById($!pk.shortType $!pk.name);

    /**
     * @Description 查询单条数据
     * @author $!author
     * @date $!time.currTime()
     * @param $!pk.name 主键
     * @return 实例对象
     */
    $!{tableInfo.name} queryById($!pk.shortType $!pk.name);

    /**
     * @Description 查询全部数据
     * @author $!author
     * @date $!time.currTime()
     * 分页使用MyBatis的插件实现
     * @return 对象列表
     */
    List<$!{tableInfo.name}> queryAll();

    /**
     * @Description 实体作为筛选条件查询数据
     * @author $!author
     * @date $!time.currTime()
     * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
     * @return 对象列表
     */
    List<$!{tableInfo.name}> queryAll($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));

    /**
     * @Description 修改数据,哪个属性不为空就修改哪个属性
     * @author $!author
     * @date $!time.currTime()
     * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
     * @return 是否成功
     */
    boolean update($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));

}

serviceImpl.java

##定义初始变量
#set($tableName = $tool.append($tableInfo.name, "ServiceImpl"))
##设置回调
$!callback.setFileName($tool.append($tableName, ".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/service/impl"))

##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
    #set($pk = $tableInfo.pkColumn.get(0))
#end

#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}service.impl;

import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};
import $!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Dao;
import $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

 /**
 * @ClassName $!{tableName}
 * @Description $!{tableInfo.comment}($!{tableInfo.name})表服务实现类
 * @author $!author
 * @date $!time.currTime()
 * @Version 1.0
 **/
@Service("$!tool.firstLowerCase($!{tableInfo.name})Service")
public class $!{tableName} extends BaseService implements $!{tableInfo.name}Service {

    @Autowired
    protected $!{tableInfo.name}Dao $!tool.firstLowerCase($!{tableInfo.name})Dao;

    /**
     * @Description 添加$!{tableInfo.name}
     * @author $!author
     * @date $!time.currTime()
     * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
     * @return 是否成功
     */
    @Override
    public boolean insert($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})) {
        if($!{tool.firstLowerCase($!{tableInfo.name})}Dao.insert($!tool.firstLowerCase($!{tableInfo.name})) == 1){
            return true;
        }
        return false;
    }

    /**
     * @Description 删除$!{tableInfo.name}
     * @author $!author
     * @date $!time.currTime()
     * @param $!pk.name 主键
     * @return 是否成功
     */
    @Override
    public boolean deleteById($!pk.shortType $!pk.name) {
        if($!{tool.firstLowerCase($!{tableInfo.name})}Dao.deleteById($!pk.name) == 1){
            return true;
        }
        return false;
    }

    /**
     * @Description 查询单条数据
     * @author $!author
     * @date $!time.currTime()
     * @param $!pk.name 主键
     * @return 实例对象
     */
    @Override
    public $!{tableInfo.name} queryById($!pk.shortType $!pk.name) {
        return $!{tool.firstLowerCase($!{tableInfo.name})}Dao.queryById($!pk.name);
    }

    /**
     * @Description 查询全部数据
     * @author $!author
     * @date $!time.currTime()
     * 分页使用MyBatis的插件实现
     * @return 对象列表
     */
    @Override
    public List<$!{tableInfo.name}> queryAll() {
        return $!{tool.firstLowerCase($!{tableInfo.name})}Dao.queryAll();
    }

    /**
     * @Description 实体作为筛选条件查询数据
     * @author $!author
     * @date $!time.currTime()
     * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
     * @return 对象列表
     */
    @Override
    public List<$!{tableInfo.name}> queryAll($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})) {
        return $!{tool.firstLowerCase($!{tableInfo.name})}Dao.queryAll($!tool.firstLowerCase($!{tableInfo.name}));
    }

    /**
     * @Description 修改数据,哪个属性不为空就修改哪个属性
     * @author $!author
     * @date $!time.currTime()
     * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
     * @return 是否成功
     */
    @Override
    public boolean update($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})) {
        if($!{tool.firstLowerCase($!{tableInfo.name})}Dao.update($!tool.firstLowerCase($!{tableInfo.name})) == 1){
            return true;
        }
        return false;
    }

}

mapper.xml

##引入mybatis支持
$!mybatisSupport

##设置保存名称与保存位置
$!callback.setFileName($tool.append($!{tableInfo.name}, "Dao.xml"))
$!callback.setSavePath($tool.append($modulePath, "/src/main/resources/mybatis/mapper"))

##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
    #set($pk = $tableInfo.pkColumn.get(0))
#end

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="$!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Dao">

    <!--$!{tableInfo.obj.name}的映射结果集-->
    <resultMap type="$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}" id="$!{tableInfo.name}Map">
#foreach($column in $tableInfo.fullColumn)
        <result property="$!column.name" column="$!column.obj.name" jdbcType="$!column.ext.jdbcType"/>
#end
    </resultMap>
    
    <!--全部字段-->
    <sql id="allColumn"> #allSqlColumn() </sql>
    
    <!--添加语句的字段列表-->
    <sql id="insertColumn">
#foreach($column in $tableInfo.otherColumn)
        <if test="$!column.name != null#if($column.type.equals("java.lang.String")) and $!column.name != ''#end">
                $!column.obj.name,
        </if>
#end
    </sql>
    
    <!--添加语句的值列表-->
        <sql id="insertValue">
#foreach($column in $tableInfo.otherColumn)
        <if test="$!column.name != null#if($column.type.equals("java.lang.String")) and $!column.name != ''#end">
                #{$!column.name},
        </if>
#end
    </sql>
    
    <!--通用对$!{tableInfo.name}各个属性的值的非空判断-->
    <sql id="commonsValue">
#foreach($column in $tableInfo.otherColumn)
        <if test="$!column.name != null#if($column.type.equals("java.lang.String")) and $!column.name != ''#end">
                $!column.obj.name = #{$!column.name},
        </if>
#end
    </sql>
    
    <!--新增$!{tableInfo.obj.name}:哪个字段不为空就添加哪列数据,返回自增主键-->
    <insert id="insert" keyProperty="$!pk.name" useGeneratedKeys="true">
        insert into $!{tableInfo.obj.name}
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <include refid="insertColumn"/>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <include refid="insertValue"/>
        </trim>
    </insert>
   
    <!--删除$!{tableInfo.obj.name}:通过主键-->
    <delete id="deleteById">
        delete from $!{tableInfo.obj.name}
        <where>
            $!pk.obj.name = #{$!pk.name}
        </where>
    </delete>
    
    <!--查询单个$!{tableInfo.obj.name}-->
    <select id="queryById" resultMap="$!{tableInfo.name}Map">
        select
        <include refid="allColumn"></include>
        from $!tableInfo.obj.name
        <where>
            $!pk.obj.name = #{$!pk.name}
        </where>
    </select>

    <!--查询所有$!{tableInfo.obj.name}-->
    <select id="queryAllByLimit" resultMap="$!{tableInfo.name}Map">
        select
        <include refid="allColumn"></include>
        from $!tableInfo.obj.name
    </select>

    <!--通过实体作为筛选条件查询-->
    <select id="queryAll" resultMap="$!{tableInfo.name}Map">
        select
          <include refid="allColumn"></include>
        from $!tableInfo.obj.name
        <trim prefix="where" prefixOverrides="and" suffixOverrides=",">
            <include refid="commonsValue"></include>
        </trim>
    </select>

    <!--通过主键修改数据-->
    <update id="update">
        update $!{tableInfo.obj.name}
        <set>
            <include refid="commonsValue"></include>
        </set>
        <where>
            $!pk.obj.name = #{$!pk.name}
        </where>
    </update>

</mapper>

新创建一个分组Lombok,可以在生成实体类的时候使用Lombok注解

实体类层:entity.java

##引入宏定义
$!define

##使用宏定义设置回调(保存位置与文件后缀)
#save("/entity", ".java")

##使用宏定义设置包后缀
#setPackageSuffix("entity")

##使用全局变量实现默认包导入
$!autoImport
import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;

##使用宏定义实现类注释信息
#tableComment("实体类")
@AllArgsConstructor
@Data
@Builder
public class $!{tableInfo.name} implements Serializable {
    private static final long serialVersionUID = $!tool.serial();
#foreach($column in $tableInfo.fullColumn)
    #if(${column.comment})/**
    * ${column.comment}
    */#end

    private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
#end

}

多个分组的切换

选择好分组后,点击OK,之后在Datebase视图的数据表右键选择EasyCode生成的时候会让你选择当前分组的模板


最后修改日期:2020-07-12

作者

留言

xmydzatm 

你的第一个模板中mapper应该是mapper.xml吧,还是这个无所谓

厉害啊

666

建议整一个jpa模板

xu Vapire 

感谢,节省一部分劳动了

老板 是不是不支持tinyint这个类型啊

    Esaycode设置那里有关于类型转换的配置,只需要自己配置一下就行了。是可以支持的哦~

Jason进行回复 取消回复

发布留言必须填写的电子邮件地址不会公开。