0%

Idea_Easycode

Idea_Easycode

Idea_Easycode

  1. 安装插件
  2. 使用
  3. 修改配置

安装插件

使用

  1. 配置数据源

    image-20211125192509212

  2. 生成代码

image-20211125192626644

image-20211125155516299

EasyCode配置

  1. 全局配置

    image-20211125192833707

  2. 实体entity

    image-20211125193131971

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    ##引入宏定义
    $!{init.vm}
    $!{define.vm}

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

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

    ##使用全局变量实现默认包导入
    $!{autoImport.vm}
    import java.io.Serializable;
    import lombok.AllArgsConstructor;
    import lombok.Builder;
    import lombok.Data;
    import io.swagger.annotations.ApiModel;
    import io.swagger.annotations.ApiModelProperty;
    import lombok.NoArgsConstructor;

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

    #if(${column.comment})@ApiModelProperty(value = "${column.comment}")
    #end
    private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
    #end
    #*#foreach($column in $tableInfo.fullColumn)
    ##使用宏定义实现get,set方法
    #getSetMethod($column)
    #end*#
    }

  3. dao

    image-20211126141831605

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    ##定义初始变量
    #set($tableName = $tool.append($tableInfo.name, "Mapper"))
    ##设置回调
    $!callback.setFileName($tool.append($tableName, ".java"))
    $!callback.setSavePath($tool.append($tableInfo.savePath, "/mapper"))

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

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

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

    /**
    * $!{tableInfo.comment}($!{tableInfo.name})表数据库访问层
    *
    * @author $!author
    * @since $!time.currTime()
    */
    public interface $!{tableName} {

    /**
    * 通过ID查询单条数据
    *
    * @param $!pk.name 主键
    * @return 实例对象
    */
    $!{tableInfo.name} queryById($!pk.shortType $!pk.name);

    /**
    * 查询指定行数据,分页
    *
    * @param $!tool.firstLowerCase($!{tableInfo.name}) 查询条件
    * @return 对象列表
    */
    List<$!{tableInfo.name}> queryAllByLimit($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));

    /**
    * 统计总行数
    *
    * @param $!tool.firstLowerCase($!{tableInfo.name}) 查询条件
    * @return 总行数
    */
    long count($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));

    /**
    * 新增数据
    *
    * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
    * @return 影响行数
    */
    int insert($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));

    /**
    * 批量新增数据(MyBatis原生foreach方法)
    *
    * @param entities List<$!{tableInfo.name}> 实例对象列表
    * @return 影响行数
    */
    int insertBatch(@Param("entities") List<$!{tableInfo.name}> entities);

    /**
    * 批量新增或按主键更新数据(MyBatis原生foreach方法)
    *
    * @param entities List<$!{tableInfo.name}> 实例对象列表
    * @return 影响行数
    * @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常,请自行校验入参
    */
    int insertOrUpdateBatch(@Param("entities") List<$!{tableInfo.name}> entities);

    /**
    * 根据主键修改数据
    *
    * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
    * @return 影响行数
    */
    int update($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));

    /**
    * 通过主键删除数据
    *
    * @param $!pk.name 主键
    * @return 影响行数
    */
    int deleteById($!pk.shortType $!pk.name);

    }

  4. xml

    image-20211126142103838

    image-20211126142311759

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    ##引入mybatis支持
    $!{mybatisSupport.vm}

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

    ##拿到主键
    #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}.mapper.$!{tableInfo.name}Mapper">

    <resultMap type="$!{tableInfo.savePackageName}.domain.$!{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>

    <!--查询单个-->
    <select id="queryById" resultMap="$!{tableInfo.name}Map">
    select
    #allSqlColumn()

    from $!tableInfo.obj.name
    where $!pk.obj.name = #{$!pk.name}
    </select>

    <!--查询指定行数据-->
    <select id="queryAllByLimit" resultMap="$!{tableInfo.name}Map">
    select
    #allSqlColumn()

    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>

    <!--统计总行数-->
    <select id="count" resultType="java.lang.Long">
    select count(1)
    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">
    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="insertBatch" keyProperty="$!pk.name">
    insert into $!{tableInfo.obj.name}(#foreach($column in $tableInfo.fullColumn)$!column.obj.name#if($velocityHasNext), #end#end)
    values
    <foreach collection="entities" item="entity" separator=",">
    (#foreach($column in $tableInfo.fullColumn)#{entity.$!{column.name}}#if($velocityHasNext), #end#end)
    </foreach>
    </insert>

    <insert id="insertOrUpdateBatch" keyProperty="$!pk.name">
    insert into $!{tableInfo.obj.name}(#foreach($column in $tableInfo.fullColumn)$!column.obj.name#if($velocityHasNext), #end#end)
    values
    <foreach collection="entities" item="entity" separator=",">
    (#foreach($column in $tableInfo.fullColumn)#{entity.$!{column.name}}#if($velocityHasNext), #end#end)
    </foreach>
    on duplicate key update
    #foreach($column in $tableInfo.fullColumn)$!column.obj.name = values($!column.obj.name)#if($velocityHasNext),
    #end#end

    </insert>

    <!--通过主键修改数据-->
    <update id="update">
    update $!{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>

    </mapper>

  5. TODO

    参考

    https://github.com/makejavas/EasyCode