Loading... # 前言 每一个新项目最讨厌的地方就是重复的一些个操作 或者说 每个项目 最讨厌的地方就是一些重复的操作 因为重复 所以写代码有很多规矩 条条框框 程序员最基础的一个概念就是解耦 为了降低代码耦合度 方便维护 方便写代码 方便"复用" 对liao 就是方便复用 所以idea有这么个插件 easyCode 拥有很强大的"复用"功能 因为我懒,所以某个项目用通用mapper整的 , easyCode给的默认模板不适用通用mapper,还得改,所以我削微整了一下 适用与不负责的项目基础结构 当然如果你是easyCode高端玩家请忽略我这个彩笔的日记 ## 实体类Entity模板代码 ```java ##引入宏定义 $!define ##使用宏定义设置回调(保存位置与文件后缀) #save("/entity", "Entity.java") ##使用宏定义设置包后缀 #setPackageSuffix("entity") ##使用全局变量实现默认包导入 $!autoImport import java.io.Serializable; import lombok.Data; import javax.persistence.*; ##使用宏定义实现类注释信息 #tableComment("实体类") @Data @Entity @Table(name = "$!tableInfo.obj.name") public class $!{tableInfo.name}Entity implements Serializable { private static final long serialVersionUID = $!tool.serial(); ##主键 #foreach($column in $tableInfo.pkColumn) #if(${column.comment})/** * ${column.comment} */#end @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "$!{column.obj.name}") private $!{tool.getClsNameByFullName($column.type)} $!{column.name}; #end ##除了主键 #foreach($column in $tableInfo.otherColumn) #if(${column.comment})/** * ${column.comment} */#end @Column(name = "$!{column.obj.name}") private $!{tool.getClsNameByFullName($column.type)} $!{column.name}; #end ##foreach($column in $tableInfo.fullColumn) ##使用宏定义实现get,set方法 ##getSetMethod($column) ##end } ``` ## DAO模板代码 ```java ##定义初始变量 #set($tableName = $tool.append($tableInfo.name, "Mapper")) ##设置回调 $!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}Entity; import org.apache.ibatis.annotations.Param; import java.util.List; import tk.mybatis.mapper.common.Mapper; /** * $!{tableInfo.comment}($!{tableInfo.name})表数据库访问层 * * @author $!author * @since $!time.currTime() */ public interface $!{tableName} extends Mapper<$!{tableInfo.name}Entity>{ /** * 通过主键删除数据 * * @param $!pk.name 主键 * @return 影响行数 */ int deleteById($!pk.shortType $!pk.name); } ``` ## service层模板代码 ```java ##定义初始变量 #set($tableName = $tool.append($tableInfo.name, "Service")) #set($EntityName = $tool.append($!{tableInfo.name}, "Entity")) #set($EntityNameLower = $!{tool.firstLowerCase($EntityName)}) ##设置回调 $!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.$!EntityName; import java.util.List; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import org.springframework.cache.annotation.Cacheable; import cn.dz.enums.RedisValueSecond; /** * $!{tableInfo.comment}($!{tableInfo.name})表服务接口 * * @author $!author * @since $!time.currTime() */ public interface $!{tableName} { /*** * 查询记录总条数 * @return count */ @Cacheable(value = RedisValueSecond.TheCacheTimeForWeek3, key = "#root.targetClass+'-'+#root.methodName") int SelectCount(); /*** * 分页条件查询 * @param page * @param limit * @param search * @return PageInfo<$!{EntityName}> */ PageInfo<$!{EntityName}> FindAllListPage(Integer page, Integer limit, String search); PageInfo<$!{EntityName}> FindAllListPageSearchJSON(Integer page, Integer limit, JSONObject jsonObject); /*** * 根据主键查询一条记录 * @param id * @return */ $!{EntityName} findById(Integer id); /*** * 根据主键更新已修改数据 * @param $EntityNameLower * @return */ int updateByPrimaryKeySelective($EntityName $EntityNameLower); /*** * 根据主键更新数据 * @param $EntityNameLower * @return */ int updateByPrimaryKey($EntityName $EntityNameLower); /*** * 插入一条记录 * @param $EntityNameLower * @return */ int insertSelective($EntityName $EntityNameLower); /*** * 插入一条记录 * @param $EntityNameLower * @return */ int insert($EntityName $EntityNameLower); /*** * 根据主键ID删除记录 * @param id * @return */ int deleteById(Integer id); } ``` ## impl模板代码 ```java ##定义初始变量 #set($tableName = $tool.append($tableInfo.name, "ServiceImpl")) #set($EntityName = $tool.append($!{tableInfo.name}, "Entity")) #set($EntityNameLower = $!{tool.firstLowerCase($EntityName)}) #set($MapperName = $tool.append($tableInfo.name, "Mapper")) #set($MapperNameLower = $!{tool.firstLowerCase($MapperName)}) ##设置回调 $!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}Entity; import $!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Mapper; import $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service; import org.springframework.stereotype.Service; import org.springframework.beans.factory.annotation.Autowired; import java.util.List; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import tk.mybatis.mapper.entity.Example; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import org.apache.commons.lang3.StringUtils; /** * $!{tableInfo.comment}($!{tableInfo.name})表服务实现类 * * @author $!author * @since $!time.currTime() */ ##@Service("$!tool.firstLowerCase($!{tableInfo.name})Service") @Service public class $!{tableName} implements $!{tableInfo.name}Service { @Autowired $MapperName $MapperNameLower; /*** * 查询记录总条数 * @return count */ @Override public int SelectCount() { return $!{MapperNameLower}.selectCount(null); } /** * 分页条件查询 * @param page * @param limit * @param search * @return PageInfo<$!{EntityName}> */ @Override public PageInfo<$EntityName> FindAllListPage(Integer page, Integer limit, String search) { if (null != search) { return FindAllListPageSearchJSON(page, limit, JSONObject.parseObject(search)); } if (page == null) { page = 0; } if (limit == null) { limit = 0; } PageHelper.startPage(page, limit); Example example = new Example($!{EntityName}.class); example.setOrderByClause("$!{pk.name} desc"); List<$!{EntityName}> entityList = $!{MapperNameLower}.selectByExample(example); return new PageInfo<$!{EntityName}>(entityList); } @Override public PageInfo<$!{EntityName}> FindAllListPageSearchJSON(Integer page, Integer limit, JSONObject jsonObject) { if (page == null) { page = 0; } if (limit == null) { limit = 0; } PageHelper.startPage(page, limit); Example example = new Example($!{EntityName}.class); Example.Criteria criteria = example.createCriteria(); if (!StringUtils.isBlank(jsonObject.get("id").toString())) { criteria.andEqualTo("id", jsonObject.get("id").toString()); } /* 模糊查询 criteria 是 实体类的字段名称 不是sql字段名称 if (!StringUtils.isBlank(jsonObject.get("title").toString())) { criteria.andLike("title", "%" + jsonObject.get("title").toString() + "%"); } */ example.setOrderByClause("$!{pk.name} desc"); List<$!{EntityName}> entityList = $!{MapperNameLower}.selectByExample(example); return new PageInfo<$!{EntityName}>(entityList); } /** * 根据主键ID查询一条数据 * @param id * @return $EntityName */ @Override public $EntityName findById(Integer id) { return $!{MapperNameLower}.selectByPrimaryKey(id); } /** * 根据主键更新已修改数据 * @param $EntityNameLower * @return */ @Override public int updateByPrimaryKeySelective($EntityName $EntityNameLower) { return $!{MapperNameLower}.updateByPrimaryKeySelective($!{EntityNameLower}); } /** * 根据主键更新数据 * @param $EntityNameLower * @return */ @Override public int updateByPrimaryKey($EntityName $EntityNameLower) { return $!{MapperNameLower}.updateByPrimaryKey($!{EntityNameLower}); } /** * 插入一条记录 * @param $EntityNameLower * @return */ @Override public int insertSelective($EntityName $EntityNameLower) { return $!{MapperNameLower}.insertSelective($!{EntityNameLower}); } /** * 插入一条记录 * @param $EntityNameLower * @return */ @Override public int insert($EntityName $EntityNameLower) { return $!{MapperNameLower}.insert($!{EntityNameLower}); } /** * 通过主键删除数据 * @param $!pk.name 主键 * @return 是否成功 */ @Override public int deleteById($!pk.shortType $!pk.name) { return $!{MapperNameLower}.deleteById($!pk.name); } } ``` ## mapper.xml代码 ```java ##引入mybatis支持 $!mybatisSupport ##定义变量 #set($EntityName = $tool.append($!{tableInfo.name}, "Entity")) #set($MapperName = $tool.append($tableInfo.name, "Mapper")) #set($MapperNameLower = $!{tool.firstLowerCase($MapperName)}) ##设置保存名称与保存位置 $!callback.setFileName($tool.append($!{tableInfo.name}, "Mapper.xml")) $!callback.setSavePath($tool.append($modulePath, "/src/main/resources/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}Mapper"> <resultMap type="$!{tableInfo.savePackageName}.entity.$!{EntityName}" id="$!{tableInfo.name}Mapper"> #foreach($column in $tableInfo.fullColumn) <result property="$!column.name" column="$!column.obj.name" jdbcType="$!column.ext.jdbcType"/> #end </resultMap> <!--通过主键删除--> <delete id="deleteById"> delete from $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name} where $!pk.obj.name = #{$!pk.name} </delete> </mapper> ``` 对liao 生成后代码结构是这个样 ![image.png](http://blog.11dz.cn/usr/uploads/2021/09/999031226.png) > **果然 程序最想干掉的就是自己** 最后修改:2021 年 09 月 22 日 © 允许规范转载 打赏 赞赏作者 微信 赞 0 如果觉得我的文章对你有用,请随意赞赏