SpringBoot--Easycode插件⾃定义模板
  最近准备做个项⽬,在配置项⽬环境的时候,使⽤Easycode插件⽣成entity,controller,service,dao,mapper,前⾯只是单纯地介绍了Easycode插件的集成,但由于使⽤的是Easycode插件默认的模板,导致最终⽣成的⽂件与⾃⼰想要的效果有所差别。
  所以花了⼀下午的时间研究如何⾃定义模板,最终设计出了⼀套⽐较完整的模板。
数据类型映射
  ⾸先打开idea——Settings——OtherSettings——EasyCode
  如图所⽰,Type Mapper是数据类型映射,简单点来说就是数据库的字段的类型与实体类属性的类型相对应,基本上都默认的对应规则,这其实没什么好说的,如果⽣成实体类的时候提⽰某个属性没有到对应的数据类型,就照猫画虎添加上去就⾏了。
⾃定义模板
实体类entity.java
  ⾸先,这⾥使⽤lombok插件来代替Getter、Setter⽅法;按照模板默认的⽣成也可以。(复制粘贴替换默认的就⾏)
1 ##引⼊宏定义
2 $!define
3
4 ##使⽤宏定义设置回调(保存位置与⽂件后缀)
5 #save("/entity", ".java")
6
7 ##使⽤宏定义设置包后缀
8 #setPackageSuffix("entity")
9
10 ##使⽤全局变量实现默认包导⼊
11 $!autoImport
12import java.io.Serializable;
13import lombok.Data;
14 ##
15 ####使⽤宏定义实现类注释信息
16 ###tableComment("实体类")
17 @Data
18public class $!{tableInfo.name} implements Serializable {
19private static final long serialVersionUID = $!tool.serial();
20 #foreach($column in $tableInfo.fullColumn)
21    #if(${columnment})/**
22    * ${columnment}
23*/
24    #end
25
26private $!{ClsNameByFullName($pe)} $!{column.name};
27 ##    private $!{ClsNameByFullName($pe)} $!{tool.firstUpperCase($column.name)};
28 #end
29
30
31 ##若没有使⽤lombok插件,该段不要注释,按照默认的模板
32 ###foreach($column in $tableInfo.fullColumn)
33 ####使⽤宏定义实现get,set⽅法
34 ###getSetMethod($column)
35 ###end
36
37 }
View Code
测试
⽣成效果(注释对应数据库,折叠起来就⾏)
DAO层dao.java
1 ##定义初始变量
2 #set($tableName = $tool.append($tableInfo.name, "Dao"))
3 ##设置回调
4 $!callback.setFileName($tool.append($tableName, ".java"))
5 $!callback.setSavePath($tool.append($tableInfo.savePath, "/dao"))springframework包
6
7 ##拿到主键
8 #if(!$tableInfo.pkColumn.isEmpty())
9    #set($pk = $(0))
10 #end
11
12 #if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}dao;
13
14import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};
15import java.util.List;
16
17/**
18 * $!{tableInfoment}($!{tableInfo.name})表数据库访问层
19 * @author北林
20*/
21
22public interface $!{tableName} {
23
24//通过ID查询
25    $!{tableInfo.name} selectById($!pk.shortType $!pk.name);
26
27//查询所有数据
28    List<$!{tableInfo.name}> selectAll();
29
30 ##    //通过实体作为筛选条件查询
31 ##    List<$!{tableInfo.name}> queryAll($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})); 32
33//新增数据
34int insert($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));
35
36//修改数据
37int updateById($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));
38
39//通过主键id删除数据
40int deleteById($!pk.shortType $!pk.name);
41
42 }
View Code
⽣成效果
映射⽂件l
1 ##引⼊mybatis⽀持
2 $!mybatisSupport
3
4 ##设置保存名称与保存位置
5 $!callback.setFileName($tool.append($!{tableInfo.name}, "l"))
6 $!callback.setSavePath($tool.append($tableInfo.savePath, "/mapper"))
7
8 ##拿到主键
9 #if(!$tableInfo.pkColumn.isEmpty())
10    #set($pk = $(0))
11 #end
12
13 <?xml version="1.0" encoding="UTF-8"?>
14 <!DOCTYPE mapper PUBLIC "-////DTD Mapper 3.0//EN" "/dtd/mybatis-3-mapper.dtd">
15 <mapper namespace="$!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Dao">
16
17    <resultMap type="$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}" id="$!{tableInfo.name}Map">
18 #foreach($column in $tableInfo.fullColumn)
19        <result property="$!{column.name}" column="$!column.obj.name" jdbcType="$!jdbcType"/>
20 #end
21    </resultMap>
22
23    <sql id="BaseResult">
24        #allSqlColumn()
25    </sql>
26
27    <!--根据id查询-->
28    <select id="selectById" resultType="$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}">
29        select<include refid="BaseResult"/>
30        from $!tableInfo.obj.name
31        where $!pk.obj.name = #{$!pk.name}
32    </select>
33
34    <!--查询所有数据-->
35    <select id="selectAll" resultMap="$!{tableInfo.name}Map">
36        select<include refid="BaseResult"/>
37        from $!tableInfo.obj.name
38    </select>
39 ##
40 ##    <!--通过实体作为筛选条件查询-->
41 ##    <select id="queryAll" resultMap="$!{tableInfo.name}Map">
42 ##        select<include refid="BaseResult"/>
43 ##        from $!tableInfo.obj.name
44 ##        <where>
45 ###foreach($column in $tableInfo.fullColumn)
46 ##            <if test="$!column.name != null#if($pe.equals("java.lang.String")) and $!column.name != ''#end">
47 ##                and $!column.obj.name = #{$!column.name}
48 ##            </if>
49 ###end
50 ##        </where>
51 ##    </select>
52
53    <!--新增所有列-->
54    <insert id="insert" keyProperty="$!pk.name" useGeneratedKeys="true">
55        insert into $!{tableInfo.obj.name}(<include refid="BaseResult"/>)
56        values (#null,#foreach($column in $herColumn)#{$!{column.name}}#if($velocityHasNext), #end#end)
57    </insert>
58
59    <!--通过主键id修改数据-->
60    <update id="updateById">
61        update $!{tableInfo.obj.name}
62        <set>
63 #foreach($column in $herColumn)
64            <if test="$!column.name != null#if($pe.equals("java.lang.String")) and $!column.name != ''#end">
65                $!column.obj.name = #{$!column.name},
66            </if>
67 #end
68        </set>
69        where $!pk.obj.name = #{$!pk.name}
70    </update>
71
72    <!--通过主键id删除-->
73    <delete id="deleteById">
74        delete from $!{tableInfo.obj.name} where $!pk.obj.name = #{$!pk.name}
75    </delete>
76
77 </mapper>
View Code
⽣成效果(部分截图)
  这⾥需要注意的是映射⽂件中的id跟dao层的⽅法名是⼀⼀对应的,如果修改了dao层的⽅法名,映射⽂件的id也需要修改。
Service层service.java
  1.⾸先添加分页插件的依赖
1  <dependency>
2            <groupId>com.github.pagehelper</groupId>
3            <artifactId>pagehelper-spring-boot-starter</artifactId>
4            <version>1.2.5</version>
5        </dependency>
  2.设计service.java模板
1 ##定义初始变量
2 #set($tableName = $tool.append($tableInfo.name, "Service"))
3 ##设置回调
4 $!callback.setFileName($tool.append($tableName, ".java"))
5 $!callback.setSavePath($tool.append($tableInfo.savePath, "/service"))
6
7 ##拿到主键
8 #if(!$tableInfo.pkColumn.isEmpty())

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。