国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

工具—IDEA代碼自動(dòng)生成插件EasyCode

這篇具有很好參考價(jià)值的文章主要介紹了工具—IDEA代碼自動(dòng)生成插件EasyCode。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

簡介

官網(wǎng)簡介

  • 基于IntelliJ IDEA開發(fā)的代碼生成插件,支持自定義任意模板(Java,html,js,xml)。
  • 只要是與數(shù)據(jù)庫相關(guān)的代碼都可以通過自定義模板來生成。支持?jǐn)?shù)據(jù)庫類型與java類型映射關(guān)系配置。
  • 支持同時(shí)生成生成多張表的代碼。每張表有獨(dú)立的配置信息。完全的個(gè)性化定義,規(guī)則由你設(shè)置。

背景

枯燥繁瑣的CRUD,不如自動(dòng)生成自己喜歡的代碼風(fēng)格

教程

一、 安裝

pom依賴

<!--JSON工具-->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>2.0.30</version>
</dependency>
<!--validation校驗(yàn)工具-->
<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>${validation.version}</version>
</dependency>
<!--lombok工具-->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>
<!--hutool工具-->
<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>4.4.5</version>
</dependency>
<!--mybatis-plus-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus</artifactId>
    <version>3.5.1</version>
</dependency>
1、安裝EasyCode插件

idea代碼生成器插件,intellij-idea,java,ide

二、 配置代碼模板

模板配置路徑
idea代碼生成器插件,intellij-idea,java,ide

1、Type Mapper類型映射

根據(jù)自己實(shí)際情況對應(yīng)數(shù)據(jù)表結(jié)構(gòu)類型與Java類型
idea代碼生成器插件,intellij-idea,java,ide

2、Template代碼模板

這里使用的是默認(rèn)模板Defaul,可保留原插件默認(rèn)模板,新建自己Group Name組名
idea代碼生成器插件,intellij-idea,java,ide

2.1、Template代碼模板:controller.java.vm
##引入宏定義
$!{define.vm}

##定義初始變量
#set($controllerName = $tool.append($tableInfo.name, "Controller"))
##實(shí)體類名
#set($entityName = $tool.append($tableInfo.name, "Entity"))
#set($queryPage = $tool.append("query", $tableInfo.name, "Page"))
#set($queryList = $tool.append("query", $tableInfo.name, "List"))
#set($queryById = $tool.append("query", $tableInfo.name, "ById"))
#set($save = $tool.append("save", $tableInfo.name))
#set($update = $tool.append("update", $tableInfo.name))
#set($delete = $tool.append("delete", $tableInfo.name, "ById"))

##設(shè)置回調(diào)
$!callback.setFileName($tool.append($controllerName, ".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.$entityName;
import $!{tableInfo.savePackageName}.service.${tableInfo.name}Service;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clancy.common.constants.R;
import org.springframework.web.bind.annotation.*;
import lombok.extern.slf4j.Slf4j;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;

import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.List;
import java.util.Map;

##使用宏定義實(shí)現(xiàn)類注釋信息
#tableComment("控制層")
@Slf4j
@RestController
@RequestMapping("/$!tool.firstLowerCase($tableInfo.name)")
public class $!{controllerName} {
    /**
     * 服務(wù)對象
     */
    @Resource
    private ${tableInfo.name}Service $!tool.firstLowerCase(${tableInfo.name})Service;

    /**
     * 查詢${tableInfo.comment}分頁列表
     * @param current 當(dāng)前頁碼
     * @param size 每頁頁數(shù)
     * @param params 篩選條件
     * @return 分頁列表
     */
    @GetMapping("$queryPage")
    public R $queryPage(@RequestParam(defaultValue = "1") long current, @RequestParam(defaultValue = "20") long size, Map<String, Object> params) {
        try {
            log.info("查詢${tableInfo.comment}分頁列表入?yún)urrent:{},size:{},params:{}", JSON.toJSONString(current), JSON.toJSONString(size), JSON.toJSONString(params));
            Page<$entityName> page = $!tool.firstLowerCase(${tableInfo.name})Service.$queryPage(current, size, params);
            log.info("查詢${tableInfo.comment}分頁列表出參:{}", JSON.toJSONString(page));
            return R.success("查詢${tableInfo.comment}分頁列表成功", page);
        } catch (Exception e) {
            log.info("查詢${tableInfo.comment}分頁列表異常:{}\n{}", e.getMessage(), e);
            return R.failed("查詢${tableInfo.comment}分頁列表異常:" +  e.getMessage());
        }
    }
    
    /**
     * 查詢${tableInfo.comment}列表
     * @param params 篩選條件
     * @return 列表
     */
    @GetMapping("$queryList")
    public R $queryList(@RequestParam Map<String, Object> params) {
        try {
            log.info("查詢${tableInfo.comment}列表入?yún)ⅲ簕}", JSON.toJSONString(params));
            List<$entityName> list = $!tool.firstLowerCase(${tableInfo.name})Service.$queryList(params);
            log.info("查詢${tableInfo.comment}列表出參:{}", JSON.toJSONString(list));
            if (CollUtil.isEmpty(list)) {
                return R.success("查詢${tableInfo.comment}列表為空");
            }
            return R.success("查詢${tableInfo.comment}列表成功", list);
        } catch (Exception e) {
            log.error("查詢${tableInfo.comment}列表異常:{}\n{}", e.getMessage(), e);
            return R.failed("查詢${tableInfo.comment}列表異常:" + e.getMessage());
        }
    }
    
    /**
     * 通過主鍵查詢${tableInfo.comment}詳情
     * @param id 主鍵
     * @return ${tableInfo.comment}
     */
    @GetMapping("{id}")
    public R $queryById(@PathVariable("id") $!pk.shortType id) {
        try {
            log.info("查詢${tableInfo.comment}詳情入?yún)ⅲ簕}", JSON.toJSONString(id));
            $entityName $!{tool.firstLowerCase($entityName)} = $!tool.firstLowerCase(${tableInfo.name})Service.$queryById(id);
            log.info("查詢${tableInfo.comment}詳情出參:{}", JSON.toJSONString($!{tool.firstLowerCase($entityName)}));
            if (ObjectUtil.isNull($!{tool.firstLowerCase($entityName)})) {
                return R.success("查詢${tableInfo.comment}詳情為空");
            }
            return R.success("查詢${tableInfo.comment}詳情成功", $!{tool.firstLowerCase($entityName)});
        } catch (Exception e) {
            log.error("查詢${tableInfo.comment}詳情異常:{}\n{}", e.getMessage(), e);
            return R.failed("查詢${tableInfo.comment}詳情異常:" + e.getMessage());
        }
    }
    
    /**
     * 保存${tableInfo.comment}
     * @param $!{tool.firstLowerCase($entityName)} 篩選條件
     * @return 成功標(biāo)志位
     */
    @PostMapping
    public R $save(@RequestBody @Valid $entityName $!{tool.firstLowerCase($entityName)}) {
        try {
            log.info("保存${tableInfo.comment}入?yún)ⅲ簕}", JSON.toJSONString($!{tool.firstLowerCase($entityName)}));
            Boolean flag = $!tool.firstLowerCase(${tableInfo.name})Service.$save($!{tool.firstLowerCase($entityName)});
            log.info("保存${tableInfo.comment}出參:{}", JSON.toJSONString(flag));
            if (flag) {
                return R.success("保存${tableInfo.comment}成功");
            }
            return R.failed("保存${tableInfo.comment}失敗");
        } catch (Exception e) {
            log.error("保存${tableInfo.comment}異常:{}\n{}", e.getMessage(), e);
            return R.failed("保存${tableInfo.comment}異常:" + e.getMessage());
        }
    }

    /**
     * 更新${tableInfo.comment}
     * @param $!{tool.firstLowerCase($entityName)} 篩選條件
     * @return 成功標(biāo)志位
     */
    @PutMapping
    public R $update(@RequestBody @Valid $entityName $!{tool.firstLowerCase($entityName)}) {
        try {
            log.info("更新${tableInfo.comment}入?yún)ⅲ簕}", JSON.toJSONString($!{tool.firstLowerCase($entityName)}));
            Boolean flag = $!tool.firstLowerCase(${tableInfo.name})Service.$update($!{tool.firstLowerCase($entityName)});
            log.info("更新${tableInfo.comment}出參:{}", JSON.toJSONString(flag));
            if (flag) {
                return R.success("更新${tableInfo.comment}成功");
            }
            return R.failed("更新${tableInfo.comment}失敗");
        } catch (Exception e) {
            log.error("更新${tableInfo.comment}異常:{}\n{}", e.getMessage(), e);
            return R.failed("更新${tableInfo.comment}異常:" + e.getMessage());
        }
    }
    
    /**
     * 刪除${tableInfo.comment}
     * @param id 主鍵id
     * @return 成功標(biāo)志位
     */
    @DeleteMapping
    public R $delete($!pk.shortType id) {
        try {
            log.info("刪除${tableInfo.comment}入?yún)ⅲ簕}", JSON.toJSONString(id));
            Boolean flag = $!tool.firstLowerCase(${tableInfo.name})Service.$delete(id);
            log.info("刪除${tableInfo.comment}出參:{}", JSON.toJSONString(flag));
            if (flag) {
                return R.success("刪除${tableInfo.comment}成功");
            }
            return R.failed("刪除${tableInfo.comment}失敗");
        } catch (Exception e) {
            log.error("刪除${tableInfo.comment}異常:{}\n{}", e.getMessage(), e);
            return R.failed("刪除${tableInfo.comment}異常:", e.getMessage());
        }
    }
}

2.2、Template代碼模板:dao.java.vm
##引入宏定義
$!{define.vm}

##定義初始變量
#set($tableName = $tool.append($tableInfo.name, "Dao"))
##實(shí)體類名
#set($entityName = $tool.append($tableInfo.name, "Entity"))
##設(shè)置回調(diào)
$!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.$entityName;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;

##使用宏定義實(shí)現(xiàn)類注釋信息
#tableComment("數(shù)據(jù)訪問層")
@Repository
public interface $!{tableName} extends BaseMapper<$entityName> {

}

2.3、Template代碼模板:entity.java.vm
##引入宏定義
$!{define.vm}
$!{init.vm}

##定義初始變量
##類名
#set($tableName = $tool.append($tableInfo.name, "Entity"))
##包名
#set($packageName = "entity")

##設(shè)置回調(diào)
$!callback.setFileName($tool.append($tableName, ".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/", $packageName))

##設(shè)置包名
#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}$packageName;

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

##使用全局變量實(shí)現(xiàn)默認(rèn)包導(dǎo)入
$!{autoImport.vm}
import lombok.Data;
import java.io.Serializable;
import com.baomidou.mybatisplus.annotation.*;

##使用宏定義實(shí)現(xiàn)類注釋信息
#tableComment("實(shí)體類")
@Data
@TableName("$!{tableInfo.obj.name}")
public class $tableName extends BaseEntity implements Serializable {
    private static final long serialVersionUID = $!tool.serial();
#foreach($column in $tableInfo.fullColumn)
#if(${column.comment})
    /**
    * ${column.comment}
    */
#end
#if($pk.name == $!{column.name})
    @TableId(value = "$pk.obj.name", type = IdType.AUTO)
#end
    private $!{tool.getClsNameByFullName($column.type)} $!{column.name};

#end
}

2.4、Template代碼模板:mapper.xml.vm
##引入mybatis支持
$!{mybatisSupport.vm}
$!{init.vm}

##定義初始變量
##實(shí)體類名
#set($entityName = $tool.append($tableInfo.name, "Entity"))
#set($queryPage = $tool.append("query", $tableInfo.name, "Page"))
#set($queryList = $tool.append("query", $tableInfo.name, "List"))
#set($queryById = $tool.append("query", $tableInfo.name, "ById"))
#set($insert = $tool.append("insert", $tableInfo.name))
#set($update = $tool.append("update", $tableInfo.name))
#set($delete = $tool.append("delete", $tableInfo.name, "ById"))

##設(shè)置保存名稱與保存位置
$!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}Dao">

    <resultMap type="$!{tableInfo.savePackageName}.entity.${entityName}" id="$!{tableInfo.name}Map">
#foreach($column in $tableInfo.fullColumn)
        <result property="$!column.name" column="$!column.obj.name" jdbcType="$!column.ext.jdbcType"/>
#end
    </resultMap>
    
    <!-- 基礎(chǔ)sql -->
    <sql id="baseSql">
        #allSqlColumn(), del_flg, create_id, update_id, create_time, update_time, remark
    </sql>
    
    <!--查詢${tableInfo.comment}分頁列表-->
    <select id="$queryPage" resultMap="$!{tableInfo.name}Map">
        select
          <include refid="baseSql" />
        from $!tableInfo.obj.name
        <where>
            del_flg = 0
#foreach($column in $tableInfo.fullColumn)
            <if test="params.$!column.name != null#if($column.type.equals("java.lang.String")) and params.$!column.name != ''#end">
                and $!column.obj.name = #{params.$!column.name}
            </if>
#end
            <if test="params.createId != null">
                and create_id = #{params.createId}
            </if>
            <if test="params.updateId != null">
                and update_id = #{params.updateId}
            </if>
            <if test="params.createBeginTime != null">
                and create_time &gt;= #{params.createBeginTime}
            </if>
            <if test="params.createEndTime != null">
                and create_time &lt;= #{params.createEndTime}
            </if>
            <if test="params.updateBeginTime != null">
                and update_time &gt;= #{params.updateBeginTime}
            </if>
            <if test="params.updateEndTime != null">
                and update_time &gt;= #{params.updateEndTime}
            </if>
            <if test="params.remark != null and params.remark != ''">
                and remark like concat('%',#{params.remark}, '%')
            </if>
        </where>
        order by
        <choose>
            <when test="params.field != null and params.field != '' and params.order != null and params.order != ''">
                #{params.field} #{params.order}
            </when>
            <otherwise>
                update_time desc
            </otherwise>
        </choose>
    </select>

    <!--查詢${tableInfo.comment}列表-->
    <select id="$queryList" resultMap="$!{tableInfo.name}Map">
        select
          <include refid="baseSql" />
        from $!tableInfo.obj.name
        <where>
            del_flg = 0
#foreach($column in $tableInfo.fullColumn)
            <if test="params.$!column.name != null#if($column.type.equals("java.lang.String")) and params.$!column.name != ''#end">
                and $!column.obj.name = #{params.$!column.name}
            </if>
#end
            <if test="params.createId != null">
                and create_id = #{params.createId}
            </if>
            <if test="params.updateId != null">
                and update_id = #{params.updateId}
            </if>
            <if test="params.createBeginTime != null">
                and create_time &gt;= #{params.createBeginTime}
            </if>
            <if test="params.createEndTime != null">
                and create_time &lt;= #{params.createEndTime}
            </if>
            <if test="params.updateBeginTime != null">
                and update_time &gt;= #{params.updateBeginTime}
            </if>
            <if test="params.updateEndTime != null">
                and update_time &gt;= #{params.updateEndTime}
            </if>
            <if test="params.remark != null and params.remark != ''">
                and remark like concat('%',#{params.remark}, '%')
            </if>
        </where>
        order by
        <choose>
            <when test="params.field != null and params.field != '' and params.order != null and params.order != ''">
                #{params.field} #{params.order}
            </when>
            <otherwise>
                update_time desc
            </otherwise>
        </choose>
    </select>
    
    <!--通過主鍵查詢${tableInfo.comment}-->
    <select id="$queryById" resultMap="$!{tableInfo.name}Map">
        select
          <include refid="baseSql" />
        from $!tableInfo.obj.name
        where $!pk.obj.name = #{$!pk.name}
    </select>
    
    <!--新增${tableInfo.comment}-->
    <insert id="$insert" keyProperty="$!pk.name" useGeneratedKeys="true" parameterType="$!{tableInfo.savePackageName}.entity.${entityName}">
        insert into $!{tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)
        values (#foreach($column in $tableInfo.otherColumn)#{$!{column.name}}#if($velocityHasNext), #end#end)
    </insert>
    
    <!--通過主鍵修改${tableInfo.comment}-->
    <update id="$update" parameterType="$!{tableInfo.savePackageName}.entity.${entityName}">
        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>
    
    <!--通過主鍵刪除${tableInfo.comment}-->
    <delete id="$delete">
        update $!{tableInfo.obj.name} set del_flg = 0 where $!pk.obj.name = #{$!pk.name}
    </delete>

    <!--統(tǒng)計(jì)總行數(shù)-->
    <select id="count" resultType="java.lang.Long">
        select count(1)
        from $!tableInfo.obj.name
        <where>
            del_flg = 0
#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="insertBatch" keyProperty="$!pk.name" useGeneratedKeys="true">
        insert into $!{tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)
        values
        <foreach collection="entities" item="entity" separator=",">
        (#foreach($column in $tableInfo.otherColumn)#{entity.$!{column.name}}#if($velocityHasNext), #end#end)
        </foreach>
    </insert>

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

    </insert>

</mapper>

2.5、Template代碼模板:service.java.vm
##引入宏定義
$!{define.vm}

##定義初始變量
#set($serviceName = $tool.append($tableInfo.name, "Service"))
##實(shí)體類名
#set($entityName = $tool.append($tableInfo.name, "Entity"))
#set($queryPage = $tool.append("query", $tableInfo.name, "Page"))
#set($queryList = $tool.append("query", $tableInfo.name, "List"))
#set($queryById = $tool.append("query", $tableInfo.name, "ById"))
#set($save = $tool.append("save", $tableInfo.name))
#set($update = $tool.append("update", $tableInfo.name))
#set($delete = $tool.append("delete", $tableInfo.name, "ById"))


##設(shè)置回調(diào)
$!callback.setFileName($tool.append($serviceName, ".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 com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

##使用宏定義實(shí)現(xiàn)類注釋信息
#tableComment("服務(wù)接口層")
public interface $!{serviceName} extends IService<$entityName> {

    /**
     * 查詢${tableInfo.comment}分頁列表
     * @param current 當(dāng)前頁碼
     * @param size 每頁頁數(shù)
     * @param params 篩選條件
     * @return 分頁列表
     */
    Page<$entityName> $queryPage(long current, long size, Map<String, Object> params);

    /**
     * 查詢${tableInfo.comment}列表
     * @param params 篩選條件
     * @return 列表
     */
    List<$entityName> $queryList(Map<String, Object> params);

    /**
     * 通過主鍵查詢${tableInfo.comment}詳情
     * @param id 主鍵
     * @return ${tableInfo.comment}
     */
    $entityName $queryById($!pk.shortType $!pk.name);

    /**
     * 保存${tableInfo.comment}
     * @param $!{tool.firstLowerCase($entityName)} 篩選條件
     * @return 成功標(biāo)志位
     */
    Boolean $save($entityName $!{tool.firstLowerCase($entityName)});

    /**
     * 更新${tableInfo.comment}
     * @param $!{tool.firstLowerCase($entityName)} 篩選條件
     * @return 成功標(biāo)志位
     */
    Boolean $update($entityName $!{tool.firstLowerCase($entityName)});

    /**
     * 刪除${tableInfo.comment}
     * @param id 主鍵id
     * @return 成功標(biāo)志位
     */
    Boolean $delete($!pk.shortType $!pk.name);
}
2.6、Template代碼模板:serviceImpl.java.vm
##引入宏定義
$!{define.vm}
$!{init.vm}

##定義初始變量
#set($serviceImplName = $tool.append($tableInfo.name, "ServiceImpl"))
##實(shí)體類名
#set($entityName = $tool.append($tableInfo.name, "Entity"))
#set($serviceName = $tool.append($tableInfo.name, "Service"))
#set($daoName = $tool.append($tableInfo.name, "Dao"))
#set($queryPage = $tool.append("query", $tableInfo.name, "Page"))
#set($queryList = $tool.append("query", $tableInfo.name, "List"))
#set($queryById = $tool.append("query", $tableInfo.name, "ById"))
#set($save = $tool.append("save", $tableInfo.name))
#set($update = $tool.append("update", $tableInfo.name))
#set($delete = $tool.append("delete", $tableInfo.name, "ById"))

##設(shè)置回調(diào)
$!callback.setFileName($tool.append($serviceImplName, ".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.$entityName;
import $!{tableInfo.savePackageName}.dao.$daoName;
import $!{tableInfo.savePackageName}.service.$serviceName;
import org.springframework.stereotype.Service;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.transaction.annotation.Transactional;

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

##使用宏定義實(shí)現(xiàn)類注釋信息
#tableComment("服務(wù)層")
@Service("$!tool.firstLowerCase($!{tableInfo.name})Service")
public class $!{serviceImplName} extends ServiceImpl<$daoName, $entityName> implements $!{tableInfo.name}Service {
    @Resource
    private $daoName $!tool.firstLowerCase($daoName);
    
    /**
     * 查詢${tableInfo.comment}分頁列表
     * @param current 當(dāng)前頁碼
     * @param size 每頁頁數(shù)
     * @param params 篩選條件
     * @return 分頁列表
     */
    @Override
    public Page<$entityName> $queryPage(long current, long size, Map<String, Object> params) {
        try {
            LambdaQueryWrapper<$entityName> wrapper = queryParams(params);
            Page<$entityName> page = new Page<>(current, size);
            this.$!{tool.firstLowerCase($daoName)}.selectPage(page, wrapper);
            return page;
        } catch (Exception e) {
            throw e;
        }
    }

    /**
     * 查詢${tableInfo.comment}列表
     * @param params 篩選條件
     * @return 列表
     */
    @Override
    public List<$entityName> $queryList(Map<String, Object> params) {
        try {
            LambdaQueryWrapper<$entityName> wrapper = queryParams(params);
            List<$entityName> list = this.$!{tool.firstLowerCase($daoName)}.selectList(wrapper);
            return list;
        } catch (Exception e) {
            throw e;
        }
    }

    /**
     * 通過主鍵查詢${tableInfo.comment}詳情
     * @param id 主鍵
     * @return ${tableInfo.comment}
     */
    @Override
    public $entityName $queryById($!pk.shortType $!pk.name) {
        try {
            $entityName $!{tool.firstLowerCase($entityName)} = this.$!{tool.firstLowerCase($daoName)}.selectById($!pk.name);
            return $!{tool.firstLowerCase($entityName)};
        } catch (Exception e) {
            throw e;
        }
    }

    /**
     * 保存${tableInfo.comment}
     * @param $!{tool.firstLowerCase($entityName)} 篩選條件
     * @return 成功標(biāo)志位
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Boolean $save($entityName $!{tool.firstLowerCase($entityName)}) {
        try {
            int insert = this.$!{tool.firstLowerCase($daoName)}.insert($!{tool.firstLowerCase($entityName)});
            return insert > 0;
        } catch (Exception e) {
            throw e;
        }
    }

    /**
     * 更新${tableInfo.comment}
     * @param $!{tool.firstLowerCase($entityName)} 篩選條件
     * @return 成功標(biāo)志位
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Boolean $update($entityName $!{tool.firstLowerCase($entityName)}) {
        try {
            int update = this.$!{tool.firstLowerCase($daoName)}.updateById($!{tool.firstLowerCase($entityName)});
            return update > 0;
        } catch (Exception e) {
            throw e;
        }
    }

    /**
     * 刪除${tableInfo.comment}
     * @param id 主鍵id
     * @return 成功標(biāo)志位
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Boolean $delete($!pk.shortType $!pk.name) {
        try {
            int delete = this.$!{tool.firstLowerCase($daoName)}.deleteById($!pk.name);
            return delete > 0;
        } catch (Exception e) {
            throw e;
        }
    }

    public LambdaQueryWrapper<$entityName> queryParams(Map<String, Object> params) {
        LambdaQueryWrapper<$entityName> wrapper = new LambdaQueryWrapper<>();
        // 篩選條件
        wrapper
#foreach($column in $tableInfo.fullColumn)
#if($!pk.name == $column.name || $tool.newHashSet("java.lang.Integer", "int", "java.lang.Short", "short").contains($column.type) || $tool.newHashSet("java.lang.Boolean", "boolean").contains($column.type) || $tool.newHashSet("java.lang.Long", "long").contains($column.type) || $tool.newHashSet("java.lang.Float", "float", "java.lang.Double", "double").contains($column.type))
            .eq(ObjectUtil.isNotNull(params.get("$column.name")), $entityName::get$!{tool.firstUpperCase($column.name)}, params.get("$column.name"))
#elseif($tool.newHashSet("java.lang.String").contains($column.type) || $tool.newHashSet("java.lang.Byte", "byte").contains($column.type))
            .like(ObjectUtil.isNotNull(params.get("$column.name")), $entityName::get$!{tool.firstUpperCase($column.name)}, params.get("$column.name"))
#end
#end
            .eq(ObjectUtil.isNotNull(params.get("createId")), $entityName::getCreateId, params.get("createId"))
            .eq(ObjectUtil.isNotNull(params.get("updateId")), $entityName::getUpdateId, params.get("updateId"))
            .ge(ObjectUtil.isNotNull(params.get("createBeginTime")), $entityName::getCreateTime, params.get("createBeginTime"))
            .le(ObjectUtil.isNotNull(params.get("createEndTime")), $entityName::getCreateTime, params.get("createEndTime"))
            .ge(ObjectUtil.isNotNull(params.get("updateBeginTime")), $entityName::getUpdateTime, params.get("updateBeginTime"))
            .le(ObjectUtil.isNotNull(params.get("updateEndTime")), $entityName::getUpdateTime, params.get("updateEndTime"))
            .like(ObjectUtil.isNotNull(params.get("remark")), $entityName::getRemark, params.get("remark"))
            .orderByDesc($entityName::getUpdateTime);
        return wrapper;
    }
}
3、Column Config配置

idea代碼生成器插件,intellij-idea,java,ide

4、Global Config配置
4.1、Global Config配置:autoImport.vm
##自動(dòng)導(dǎo)入包(僅導(dǎo)入實(shí)體屬性需要的包,通常用于實(shí)體類)
#foreach($import in $importList)
import $!import;
#end
4.2、Global Config配置:define.vm
##(Velocity宏定義)

##定義設(shè)置表名后綴的宏定義,調(diào)用方式:#setTableSuffix("Test")
#macro(setTableSuffix $suffix)
    #set($tableName = $!tool.append($tableInfo.name, $suffix))
#end

##定義設(shè)置包名后綴的宏定義,調(diào)用方式:#setPackageSuffix("Test")
#macro(setPackageSuffix $suffix)
#if($suffix!="")package #end#if($tableInfo.savePackageName!="")$!{tableInfo.savePackageName}.#{end}$!suffix;
#end

##定義直接保存路徑與文件名簡化的宏定義,調(diào)用方式:#save("/entity", ".java")
#macro(save $path $fileName)
    $!callback.setSavePath($tool.append($tableInfo.savePath, $path))
    $!callback.setFileName($tool.append($tableInfo.name, $fileName))
#end

##定義表注釋的宏定義,調(diào)用方式:#tableComment("注釋信息")
#macro(tableComment $desc)
/**
 * $!{tableInfo.comment}--$desc
 * @Author: ClancyLv
 * @Date: $!time.currTime()
 * @Description: $!{tableInfo.comment}
 */
#end

##定義GET,SET方法的宏定義,調(diào)用方式:#getSetMethod($column)
#macro(getSetMethod $column)

    public $!{tool.getClsNameByFullName($column.type)} get$!{tool.firstUpperCase($column.name)}() {
        return $!{column.name};
    }

    public void set$!{tool.firstUpperCase($column.name)}($!{tool.getClsNameByFullName($column.type)} $!{column.name}) {
        this.$!{column.name} = $!{column.name};
    }
#end
4.3、Global Config配置:init.vm
##初始化區(qū)域

##去掉表的t_前綴
$!tableInfo.setName($tool.getClassName($tableInfo.obj.name.replaceFirst("book_","")))

##參考阿里巴巴開發(fā)手冊,POJO 類中布爾類型的變量,都不要加 is 前綴,否則部分框架解析會(huì)引起序列化錯(cuò)誤
#foreach($column in $tableInfo.fullColumn)
#if($column.name.startsWith("is") && $column.type.equals("java.lang.Boolean"))
    $!column.setName($tool.firstLowerCase($column.name.substring(2)))
#end
#end

##實(shí)現(xiàn)動(dòng)態(tài)排除列,這里排除了通用類BaseEntity中的字段
#set($temp = $tool.newHashSet("delFlg", "createId", "updateId", "createTime", "updateTime", "remark"))
#foreach($item in $temp)
    #set($newList = $tool.newArrayList())
    #foreach($column in $tableInfo.fullColumn)
        #if($column.name!=$item)
            ##帶有反回值的方法調(diào)用時(shí)使用$tool.call來消除返回值
            $tool.call($newList.add($column))
        #end
    #end
    ##重新保存
    $tableInfo.setFullColumn($newList)
#end

##對importList進(jìn)行篡改
#set($temp = $tool.newHashSet())
#foreach($column in $tableInfo.fullColumn)
    #if(!$column.type.startsWith("java.lang."))
        ##帶有反回值的方法調(diào)用時(shí)使用$tool.call來消除返回值
        $tool.call($temp.add($column.type))
    #end
#end
##覆蓋
#set($importList = $temp)
4.4、Global Config配置:mybatisSupport.vm
##針對Mybatis 進(jìn)行支持,主要用于生成xml文件
#foreach($column in $tableInfo.fullColumn)
    ##儲(chǔ)存列類型
    $tool.call($column.ext.put("sqlType", $tool.getField($column.obj.dataType, "typeName")))
    #if($tool.newHashSet("java.lang.String").contains($column.type))
        #set($jdbcType="VARCHAR")
    #elseif($tool.newHashSet("java.lang.Boolean", "boolean").contains($column.type))
        #set($jdbcType="BOOLEAN")
    #elseif($tool.newHashSet("java.lang.Byte", "byte").contains($column.type))
        #set($jdbcType="BYTE")
    #elseif($tool.newHashSet("java.lang.Integer", "int", "java.lang.Short", "short").contains($column.type))
        #set($jdbcType="INTEGER")
    #elseif($tool.newHashSet("java.lang.Long", "long").contains($column.type))
        #set($jdbcType="INTEGER")
    #elseif($tool.newHashSet("java.lang.Float", "float", "java.lang.Double", "double").contains($column.type))
        #set($jdbcType="NUMERIC")
    #elseif($tool.newHashSet("java.util.Date", "java.sql.Timestamp", "java.time.Instant", "java.time.LocalDateTime", "java.time.OffsetDateTime", "	java.time.ZonedDateTime").contains($column.type))
        #set($jdbcType="TIMESTAMP")
    #elseif($tool.newHashSet("java.sql.Date", "java.time.LocalDate").contains($column.type))
        #set($jdbcType="TIMESTAMP")
    #else
        ##其他類型
        #set($jdbcType="VARCHAR")
    #end
    $tool.call($column.ext.put("jdbcType", $jdbcType))
#end

##定義宏,查詢所有列
#macro(allSqlColumn)#foreach($column in $tableInfo.fullColumn)$column.obj.name#if($velocityHasNext), #end#end#end

三、 使用

1、連接數(shù)據(jù)庫

idea代碼生成器插件,intellij-idea,java,ide

2、選擇

idea代碼生成器插件,intellij-idea,java,ide

3、配置

補(bǔ)充包基礎(chǔ)路徑(不用到具體dao或entity或…層)
選擇組名,與配置模板選定的組名一致
選擇要生成代碼的模板
點(diǎn)擊OK
idea代碼生成器插件,intellij-idea,java,ide文章來源地址http://www.zghlxwxcb.cn/news/detail-702238.html

到了這里,關(guān)于工具—IDEA代碼自動(dòng)生成插件EasyCode的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 自動(dòng)生成單元測試,IDEA必備插件.Squaretest

    自動(dòng)生成單元測試,IDEA必備插件.Squaretest

    ????????很多老項(xiàng)目老代碼,或者著急交付的項(xiàng)目,單元測試嚴(yán)重缺失,覆蓋率只有5%不到,所以幾個(gè)小伙伴這幾天就在瘋狂的堆單元測試,3個(gè)人堆了2天才堆到30%,于是我也來上手幫忙寫了兩個(gè),寫到第二個(gè)的時(shí)候就發(fā)現(xiàn),這個(gè)活不應(yīng)該是人干的,要去看原來的代碼,然

    2024年02月16日
    瀏覽(21)
  • IDEA懶人必備插件:自動(dòng)生成單元測試,太爽了!

    IDEA懶人必備插件:自動(dòng)生成單元測試,太爽了!

    今天來介紹一款工具Squaretest,它是一款自動(dòng)生成單元測試的插件,會(huì)用到它也是因?yàn)樽罱旧狭舜a質(zhì)量管控的指標(biāo),會(huì)考評各個(gè)項(xiàng)目的單元測試覆蓋率,以及sonar掃描出來的各種問題。 很多老項(xiàng)目老代碼,或者著急交付的項(xiàng)目,單元測試嚴(yán)重缺失,覆蓋率只有5%不到,所

    2024年02月03日
    瀏覽(43)
  • idea一鍵自動(dòng)生成對象所有g(shù)et、set方法。idea插件:GenerateAllSetter

    idea一鍵自動(dòng)生成對象所有g(shù)et、set方法。idea插件:GenerateAllSetter

    idea中有一款插件能夠一鍵自動(dòng)生成對象所有的get、set方法,有助于我們開發(fā)者提升開發(fā)效率的插件,非常簡單實(shí)用。 插件名: GenerateAllSetter 。 該插件作用是可以快速針對已有的model實(shí)體對象的屬性生產(chǎn)get、set代碼,免去開發(fā)者在開發(fā)過程中g(shù)et、set屬性值時(shí)還需要去實(shí)體對象

    2024年02月11日
    瀏覽(42)
  • Intellij IDEA插件之自動(dòng)生成時(shí)序圖(Sequence Diagram)

    Intellij IDEA插件之自動(dòng)生成時(shí)序圖(Sequence Diagram)

    ????????小伙們,你們有沒有發(fā)現(xiàn),身邊經(jīng)常有這樣一些人,看著平時(shí)沒怎么干活,到關(guān)鍵時(shí)候需要展示工作成果,會(huì)發(fā)現(xiàn)這些人也有工作成果,甚至比辛苦在干的人可能還要多一些。按常理推測,這絕對不是一件科學(xué)的事,但是有沒有一種可能?是因?yàn)檫@些看似沒怎么干

    2023年04月23日
    瀏覽(34)
  • vscode 插件 codegeex 自動(dòng)代碼生成器

    vscode 插件 codegeex 自動(dòng)代碼生成器

    CodeGeeX是一個(gè)具有130億參數(shù)的多編程語言代碼生成預(yù)訓(xùn)練模型,使用超過二十種編程語言訓(xùn)練得到。 基于CodeGeeX開發(fā)的插件可以實(shí)現(xiàn)通過描述生成代碼、補(bǔ)全代碼、代碼翻譯等一系列功能。 CodeGeeX同樣提供可以定制的提示模式(Prompt Mode),構(gòu)建專屬的編程助手 自動(dòng)代碼生成

    2024年02月09日
    瀏覽(31)
  • idea自動(dòng)生成代碼--看這篇就夠了

    idea自動(dòng)生成代碼--看這篇就夠了

    目錄 1、idea安裝插件 2、連接數(shù)據(jù)庫 ?3、生成代碼 打開idea設(shè)置,查找mybatisX插件 1. 打開idea右側(cè)database 2. 創(chuàng)建數(shù)據(jù)庫連接 點(diǎn)擊database后,彈出database框,點(diǎn)擊左上角的“+”號(hào) ?3. 填寫數(shù)據(jù)庫連接信息 ?填寫自定義名稱、數(shù)據(jù)庫連接地址、端口號(hào)、用戶名、密碼。第一次配置時(shí)

    2024年02月12日
    瀏覽(25)
  • AI自動(dòng)生成代碼工具

    AI自動(dòng)生成代碼工具

    AI自動(dòng)生成代碼工具是一種利用人工智能技術(shù)來輔助或自動(dòng)化軟件開發(fā)過程中的編碼任務(wù)的工具。這些工具使用機(jī)器學(xué)習(xí)和自然語言處理等技術(shù),根據(jù)開發(fā)者的需求生成相應(yīng)的源代碼。以下是一些常見的AI自動(dòng)生成代碼工具,希望對大家有所幫助。北京木奇移動(dòng)技術(shù)有限公司,

    2024年02月04日
    瀏覽(21)
  • AIGC for code(AIGC/AI生成代碼/生成式AI之代碼生成/AI編程工具/自動(dòng)編程/自動(dòng)生成代碼/智能編程工具/智能編程系統(tǒng))

    AIGC for code(AIGC/AI生成代碼/生成式AI之代碼生成/AI編程工具/自動(dòng)編程/自動(dòng)生成代碼/智能編程工具/智能編程系統(tǒng))

    AIGC,Artificial Intelligence Generated Content,人工智能生成內(nèi)容 AIGC for code,AI生成代碼 Copilot是由微軟的子公司Github與openAI共同開發(fā)的人工智能(AI)驅(qū)動(dòng)的編程助手。它能夠直接在你的編輯器中,為你提供代碼片段或者整個(gè)函數(shù)的建議,以幫助你更快地編寫和完成代碼。這個(gè)工具

    2024年02月17日
    瀏覽(24)
  • Idea中 css 、js 壓縮插件會(huì)自動(dòng)生成xxx.min.css、xxx.min.js文件

    Idea中 css 、js 壓縮插件會(huì)自動(dòng)生成xxx.min.css、xxx.min.js文件

    第一步:下載 yuicompressor-2.4.8.jar 下載路徑:打開搜索 YUI compressor Maven Repository: Search/Browse/Explore (mvnrepository.com) https://mvnrepository.com/ 找到點(diǎn)擊下載即用(如下圖) 創(chuàng)建文件夾,放入idea文件中 第二步:安裝插件 File Watchers 找到Settings設(shè)置 點(diǎn)擊plugins插件,輸入搜索File Watchers 進(jìn)

    2024年02月09日
    瀏覽(20)
  • 代碼自動(dòng)生成工具——TableGo(實(shí)例演示)

    代碼自動(dòng)生成工具——TableGo(實(shí)例演示)

    ????????在SpringBoot項(xiàng)目開發(fā)中,為了提高開發(fā)效率,我們經(jīng)常需要使用代碼自動(dòng)生成工具來生成一些重復(fù)性的代碼,比如實(shí)體類、DAO、Service、Controller等等。下面介紹幾個(gè)常用的代碼自動(dòng)生成工具: ①、MyBatis Generator ????????MyBatis Generator是由MyBatis官方提供的一個(gè)代碼

    2024年02月07日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包