EasyCode自定义模板分享
2022-08-03 09:57:03
108
{{single.collect_count}}

一、EasyCode模板分享

个人网站最近上线了,欢迎大家访问
苏浩的个人博客

废话不多说, EasyCode开发神器,可能赶不上mybatis-generator, 但是感觉很顺手

使用方法,File --> Settings --> Other Settings --> EasyCode – > Template Settings可以在这里面加入自己的模板,个人开发习惯控制层统一返回Response, 分享一下这个类,个人习惯, 可能不是特别规范

有个问题需要注意一下, 关于这个code, 我是为了统一修改, 因此配置在application.yaml然后注入了一个ResponseCode对象, 这个code可以根据自己的需要定义成枚举或者写成常量都可以

package com.rambler.core.door;import com.rambler.core.config.ResponseCode;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;import javax.annotation.PostConstruct;/** * 对外统一的出口进行封装 * * @author rambler * @since 2019-09-13 23:23 */@Componentpublic class Response<T> {private static ResponseCode responseCode;/* 提示消息 */private String message;/* 具体返回的数据 */private T data;/* 状态码 */private Integer code;private Response(Integer code, String message, T data) {this.message = message;this.code = code;this.data = data;}private Response(Integer code, String msg) {this.message = msg;this.code = code;}@Autowiredpublic Response(ResponseCode responseCode) {Response.responseCode = responseCode;}/** * 返回成功Response对象 * * @param successMessage 成功提示信息 * @param data 需要返回的数据 * @return 成功信息 */public static <T> Response<T> createSuccessResponse(String successMessage, T data) {return new Response<>(responseCode.getSuccessCode(), successMessage, data);}/** * 返回错误Response对象 * * @param errorMessage 错误信息 * @return 错误信息 */public static <T> Response<T> createErrorResponse(String errorMessage) {return new Response<>(responseCode.getErrorCode(), errorMessage);}public Response() {}/** * 返回未登录状态码 * * @param message 提示信息 * @return Response */public static <T> Response<T> createUnLoginResponse(String message) {return new Response<>(responseCode.getAuthErrorCode(), message);}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}public T getData() {return data;}public void setData(T data) {this.data = data;}public Integer getCode() {return code;}public void setCode(Integer code) {this.code = code;}}

二、分享几个我常用的模板

我只写了几个比较常用的功能, 其他具体业务可以根据自己需求添加, 以下模版支持以下几个方法

注意: 参数个人习惯用实体类, 比如User,需要一个id, 前台直接传{id:“123”}后台用User接收, 调用的时候就是user.getId()

  • Controller支持的方法
    • 分页查询
    • 查询全部
  • Dao, Service, ServiceImpl, Mapper支持的方法
    • 分页查询
    • 根据实体类查询
    • 查询全部
    • 数据总数的查询

1. Controller层模板

##定义初始变量#set($tableName = $tool.append($tableInfo.name, "Controller"))##设置回调$!callback.setFileName($tool.append($tableName, ".java"))$!callback.setSavePath($tool.append($tableInfo.savePath, "/controller"))##拿到主键#if(!$tableInfo.pkColumn.isEmpty())#set($pk = $tableInfo.pkColumn.get(0))#end#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}controller;import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};import $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;import org.springframework.web.bind.annotation.*;import com.rambler.core.door.Response;import java.util.List;import javax.annotation.Resource;/** * $!{tableInfo.comment}($!{tableInfo.name})控制层 * * @author $!author * @since $!time.currTime() */@RestController@RequestMapping("/$!tool.firstLowerCase($tableInfo.name)")public class $!{tableName} {/** * 服务对象 */@Resourceprivate $!{tableInfo.name}Service $!tool.firstLowerCase($tableInfo.name)Service;/** * 通过主键查询单条数据 * * @param $!tool.firstLowerCase($tableInfo.name) 参数对象 * @return 单条数据 */@RequestMapping(value = "get", method = RequestMethod.GET)public Response<$tableInfo.name> selectOne($tableInfo.name $!tool.firstLowerCase($tableInfo.name)) {$tableInfo.name result = $!{tool.firstLowerCase($tableInfo.name)}Service.selectById($!{tool.firstLowerCase($tableInfo.name)}.getId());if(result != null){Response.createSuccessResponse("查询成功", result);}return Response.createErrorResponse("查询失败");}/** * 新增一条数据 * * @param $!tool.firstLowerCase($tableInfo.name) 实体类 * @return Response对象 */@RequestMapping(value = "insert", method = RequestMethod.POST)public Response<$tableInfo.name> insert(@RequestBody $tableInfo.name $!tool.firstLowerCase($tableInfo.name)) {int result = $!{tool.firstLowerCase($tableInfo.name)}Service.insert($!tool.firstLowerCase($tableInfo.name));if (result > 0) {Response.createSuccessResponse("新增成功", $!tool.firstLowerCase($tableInfo.name));}return Response.createErrorResponse("新增失败");}/** * 修改一条数据 * * @param $!tool.firstLowerCase($tableInfo.name) 实体类 * @return Response对象 */@RequestMapping(value = "update", method = RequestMethod.PUT)public Response<$tableInfo.name> update(@RequestBody $tableInfo.name $!tool.firstLowerCase($tableInfo.name)) {$tableInfo.name result = $!{tool.firstLowerCase($tableInfo.name)}Service.update($!tool.firstLowerCase($tableInfo.name));if (result != null) {Response.createSuccessResponse("修改成功", result);}return Response.createErrorResponse("修改失败");}/** * 删除一条数据 * * @param $!tool.firstLowerCase($tableInfo.name) 参数对象 * @return Response对象 */@RequestMapping(value = "delete", method = RequestMethod.DELETE)public Response<$tableInfo.name> delete($tableInfo.name $!tool.firstLowerCase($tableInfo.name)) {int result = $!{tool.firstLowerCase($tableInfo.name)}Service.deleteById($!{tool.firstLowerCase($tableInfo.name)}.getId());if (result > 0) {Response.createSuccessResponse("删除成功", null);}return Response.createErrorResponse("删除失败");}/** * 查询全部 * * @return Response对象 */@RequestMapping(value = "selectAll", method = RequestMethod.GET)public Response<List<$tableInfo.name>> selectAll() {List<$tableInfo.name> $!tool.firstLowerCase($tableInfo.name)s = $!{tool.firstLowerCase($tableInfo.name)}Service.selectAll();if ($!tool.firstLowerCase($tableInfo.name)s != null) {Response.createSuccessResponse("查询成功", $!tool.firstLowerCase($tableInfo.name)s);}return Response.createErrorResponse("查询失败");}/** * 分页查询 * * @param start 偏移 * @param limit 条数 * @return Response对象 */@RequestMapping(value = "selectPage", method = RequestMethod.GET)public Response<$tableInfo.name> selectPage(Integer start, Integer limit) {List<$tableInfo.name> $!tool.firstLowerCase($tableInfo.name)s = $!{tool.firstLowerCase($tableInfo.name)}Service.selectPage(start, limit);if ($!tool.firstLowerCase($tableInfo.name)s != null) {Response.createSuccessResponse("查询成功", $!tool.firstLowerCase($tableInfo.name)s);}return Response.createErrorResponse("查询失败");}}
@Overridepublic int batchInsert(List<Article> articles) {return 0;}@Overridepublic int update(Article article) {return 0;}@Overridepublic int deleteById(Integer id) {return 0;}

2. Dao层模版

##定义初始变量#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.Param;import java.util.List;import java.util.Map;/** * $!{tableInfo.comment}($!{tableInfo.name})表数据库访问层 * * @author $!author * @since $!time.currTime() */public interface $!{tableName} {/** * 通过ID查询单条数据 * * @param $!pk.name 主键 * @return 实例对象 */$!{tableInfo.name} selectById($!pk.shortType $!pk.name);/** * 分页查询 * * @param start 查询起始位置 * @param limit 查询条数 * @return 对象列表 */List<$!{tableInfo.name}> selectPage(@Param("start") int start, @Param("limit") int limit);/** * 查询全部 * * @return 对象列表 */List<$!{tableInfo.name}> selectAll();/** * 通过实体作为筛选条件查询 * * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象 * @return 对象列表 */List<$!{tableInfo.name}> selectList($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));/** * 新增数据 * * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象 * @return 影响行数 */int insert($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));/** * 批量新增 * * @param $!tool.firstLowerCase($!{tableInfo.name})s 实例对象的集合 * @return 影响行数 */int batchInsert(List<$!{tableInfo.name}> $!tool.firstLowerCase($!{tableInfo.name})s);/** * 修改数据 * * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象 * @return 影响行数 */int update($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));/** * 通过主键删除数据 * * @param $!pk.name 主键 * @return 影响行数 */int deleteById($!pk.shortType $!pk.name);/** * 查询总数据数 * * @return 数据总数 */int count();}

3. Entity层模板

支持字段 + get&set + toString

##引入宏定义$!define##使用宏定义设置回调(保存位置与文件后缀)#save("/entity", ".java")##使用宏定义设置包后缀#setPackageSuffix("entity")##使用全局变量实现默认包导入$!autoImportimport 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}*/#endprivate $!{tool.getClsNameByFullName($column.type)} $!{column.name};#end#foreach($column in $tableInfo.fullColumn)##使用宏定义实现get,set方法#getSetMethod($column)#end@Overridepublic String toString(){return "$tableInfo.name {" +#foreach($column in $tableInfo.fullColumn)"$column.name : " + $column.name + ", " +#end'}';}}

4. Service层模版

##定义初始变量#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;import java.util.Map;/** * $!{tableInfo.comment}($!{tableInfo.name})表服务接口 * * @author $!author * @since $!time.currTime() */public interface $!{tableName} {/** * 通过ID查询单条数据 * * @param $!pk.name 主键 * @return 实例对象 */$!{tableInfo.name} selectById($!pk.shortType $!pk.name);/** * 分页查询 * * @param start 查询起始位置 * @param limit 查询条数 * @return 对象列表 */List<$!{tableInfo.name}> selectPage(int start, int limit);/** * 查询全部 * * @return 对象列表 */List<$!{tableInfo.name}> selectAll();/** * 通过实体作为筛选条件查询 * * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象 * @return 对象列表 */List<$!{tableInfo.name}> selectList($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));/** * 新增数据 * * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象 * @return 影响行数 */int insert($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));/** * 批量新增 * * @param $!tool.firstLowerCase($!{tableInfo.name})s 实例对象的集合 * @return 影响行数 */int batchInsert(List<$!{tableInfo.name}> $!tool.firstLowerCase($!{tableInfo.name})s);/** * 修改数据 * * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象 * @return 修改 */$!{tableInfo.name} update($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));/** * 通过主键删除数据 * * @param $!pk.name 主键 * @return 影响行数 */int deleteById($!pk.shortType $!pk.name);/** * 查询总数据数 * * @return 数据总数 */int count();}

5. ServiceImpl模版

##定义初始变量#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;import java.util.Map;/** * $!{tableInfo.comment}($!{tableInfo.name}表)服务实现类 * * @author $!author * @since $!time.currTime() */@Service("$!tool.firstLowerCase($!{tableInfo.name})Service")public class $!{tableName} implements $!{tableInfo.name}Service {@Resourceprivate $!{tableInfo.name}Dao $!tool.firstLowerCase($!{tableInfo.name})Dao;/** * 通过ID查询单条数据 * * @param $!pk.name 主键 * @return 实例对象 */@Overridepublic $!{tableInfo.name} selectById($!pk.shortType $!pk.name) {return this.$!{tool.firstLowerCase($!{tableInfo.name})}Dao.selectById($!pk.name);}/** * 分页查询 * * @param start 查询起始位置 * @param limit 查询条数 * @return 对象列表 */@Overridepublic List<$!{tableInfo.name}> selectPage(int start, int limit) {return this.$!{tool.firstLowerCase($!{tableInfo.name})}Dao.selectPage(start, limit);}/** * 查询所有 * * @return 实例对象的集合 */ @Override public List<$!{tableInfo.name}> selectAll() {return this.$!{tool.firstLowerCase($!{tableInfo.name})}Dao.selectAll(); } /** * 根据条件查询 * * @return 实例对象的集合 */@Overridepublic List<$!{tableInfo.name}> selectList($!{tableInfo.name} $!{tool.firstLowerCase($!{tableInfo.name})}) {return this.$!{tool.firstLowerCase($!{tableInfo.name})}Dao.selectList($!{tool.firstLowerCase($!{tableInfo.name})});}/** * 新增数据 * * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象 * @return 实例对象 */@Overridepublic int insert($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})) {return this.$!{tool.firstLowerCase($!{tableInfo.name})}Dao.insert($!tool.firstLowerCase($!{tableInfo.name}));}/** * 批量新增 * * @param $!tool.firstLowerCase($!{tableInfo.name})s 实例对象的集合 * @return 生效的条数 */@Overridepublic int batchInsert(List<$!{tableInfo.name}> $!tool.firstLowerCase($!{tableInfo.name})s) {return this.$!{tool.firstLowerCase($!{tableInfo.name})}Dao.batchInsert($!tool.firstLowerCase($!{tableInfo.name})s);}/** * 修改数据 * * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象 * @return 实例对象 */@Overridepublic $!{tableInfo.name} update($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})) {this.$!{tool.firstLowerCase($!{tableInfo.name})}Dao.update($!tool.firstLowerCase($!{tableInfo.name}));return this.selectById($!{tool.firstLowerCase($!{tableInfo.name})}.get$!tool.firstUpperCase($pk.name)());}/** * 通过主键删除数据 * * @param $!pk.name 主键 * @return 是否成功 */@Overridepublic int deleteById($!pk.shortType $!pk.name) {return this.$!{tool.firstLowerCase($!{tableInfo.name})}Dao.deleteById($!pk.name);}/** * 查询总数据数 * * @return 数据总数 */ @Override public int count(){return this.$!{tool.firstLowerCase($!{tableInfo.name})}Dao.count(); }}

6. Mapper(xml)模版分享

##引入mybatis支持$!mybatisSupport##设置保存名称与保存位置$!callback.setFileName($tool.append($!{tableInfo.name}, "Dao.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}Dao"><!-- 结果集 --><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="Base_Column_List">#allSqlColumn()</sql><!-- 查询单个 --><select id="selectById" resultMap="$!{tableInfo.name}Map">select<include refid="Base_Column_List" />from $!tableInfo.obj.namewhere $!pk.obj.name = #{$!pk.name}</select><!-- 分页查询 --><select id="selectPage" resultMap="$!{tableInfo.name}Map">select<include refid="Base_Column_List" />from $!tableInfo.obj.namelimit #{start},#{limit}</select><!-- 查询全部 --><select id="selectAll" resultMap="$!{tableInfo.name}Map">select<include refid="Base_Column_List" />from $!tableInfo.obj.name</select><!--通过实体作为筛选条件查询--><select id="selectList" resultMap="$!{tableInfo.name}Map">select<include refid="Base_Column_List" />from $!tableInfo.obj.name<where>#foreach($column in $tableInfo.fullColumn)<if test="$!column.name != null#if($column.type.equals("java.lang.String")) and $!column.name != ''#end">and $!column.obj.name = #{$!column.name}</if>#end</where></select><!-- 新增所有列 --><insert id="insert" keyProperty="$!pk.name" useGeneratedKeys="true">insert into $!{tableInfo.obj.name}(#foreach($column in $tableInfo.fullColumn)$!column.obj.name#if($velocityHasNext), #end#end)values ( #foreach($column in $tableInfo.fullColumn)#{$!{column.name}}#if($velocityHasNext), #end#end)</insert><!-- 批量新增 --><insert id="batchInsert">insert into $!{tableInfo.obj.name}(#foreach($column in $tableInfo.fullColumn)$!column.obj.name#if($velocityHasNext), #end#end)values <foreach collection="$!tool.firstLowerCase($!{tableInfo.name})s" item="item" index="index" separator=",">(#foreach($column in $tableInfo.fullColumn)#{item.$!{column.name}}#if($velocityHasNext), #end#end ) </foreach></insert><!-- 通过主键修改数据 --><update id="update">update $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name}<set>#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</set>where $!pk.obj.name = #{$!pk.name}</update><!--通过主键删除--><delete id="deleteById">delete from $!{tableInfo.obj.name} where $!pk.obj.name = #{$!pk.name}</delete><!-- 总数 --><select id="count" resultType="int">select count(*) from $!{tableInfo.obj.name}</select></mapper>
回帖
全部回帖({{commentCount}})
{{item.user.nickname}} {{item.user.group_title}} {{item.friend_time}}
{{item.content}}
{{item.comment_content_show ? '取消' : '回复'}} 删除
回帖
{{reply.user.nickname}} {{reply.user.group_title}} {{reply.friend_time}}
{{reply.content}}
{{reply.comment_content_show ? '取消' : '回复'}} 删除
回帖
收起
没有更多啦~
{{commentLoading ? '加载中...' : '查看更多评论'}}