最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

idea使用easyCode生成代碼(根據(jù)mybatis-plus模板創(chuàng)建自己的模板)

 更新時(shí)間:2023年10月17日 10:46:19   作者:我老菜  
本文主要介紹了idea使用easyCode生成代碼,easyCode代碼生成器可以減少低價(jià)值搬磚,具有一定的參考價(jià)值,感興趣的可以了解一下

前言

easyCode代碼生成器,減少低價(jià)值搬磚。
聲明下:自定義模板內(nèi)有大量自定義類,所以可以借鑒,不能直接使用。

一、安裝easyCode插件

setting下載插件,重啟idea,點(diǎn)開(kāi)dataBase連接上數(shù)據(jù)庫(kù)。

針對(duì)有一定基礎(chǔ)的程序員哈,小白的話,建議先老老實(shí)實(shí)手敲代碼。

二、生成代碼-使用默認(rèn)模板

1: dataBase連接上數(shù)據(jù)庫(kù)后,選中某個(gè)表,右鍵->EasyCode->Generate Code,出現(xiàn)下面這個(gè)彈出框:

Module:是哪個(gè)項(xiàng)目模塊
Package:生成的代碼放在哪個(gè)包下
Path:生成代碼所在的路勁
紅框:這個(gè)是我自定義的模板(后面會(huì)怎么弄),這里可以選擇默認(rèn)的模板,如:MybatisPlus ,Default
Template:勾選需要生成哪些文件

2:選擇完成后,點(diǎn)擊OK就可以了。

代碼如下(示例):

三、生成代碼-自定義模板

File->settings->Other Settings->EasyCode->Template
我是復(fù)制了MybatisPlus- Mixed,然后重名為:MybatisPlus-lt。在此基礎(chǔ)上修改的模板內(nèi)容

注意1:模板內(nèi)使用#if()進(jìn)行邏輯判斷

我配置了字段自動(dòng)插入,需要在字段屬性上加額外的注解,所以這里用到了

#if($!{column.name} == ‘delFlag')
@TableLogic
@TableField(fill = FieldFill.INSERT)
#end

注意2:模板內(nèi)獲取對(duì)象的小寫單詞

因?yàn)樵趯?shí)現(xiàn)類里有實(shí)現(xiàn)方法,所以需要使用到bookMapper,但是如何獲取到Book對(duì)象的小寫單詞是個(gè)問(wèn)題:

##定義實(shí)體對(duì)象名(駝峰)
#set($entityName = $!tool.firstLowerCase($!tableInfo.name))

說(shuō)明下:

實(shí)現(xiàn)類里期望結(jié)果生成這個(gè)代碼:bookMapper.deleteBatchIds(idList);

錯(cuò)誤的:
下面這句的生成結(jié)果是:bookMapper;
$!tool.firstLowerCase($!tableInfo.name))Mapper.deleteBatchIds(idList);

正確的:
##定義實(shí)體對(duì)象名
#set($entityName = $!tool.firstLowerCase($!tableInfo.name))
這樣去使用:
$!{entityName}Mapper.deleteBatchIds(idList);

例子:

注意3:修改Mapping.xml文件的位置

將BookMapping.xml 放在/src/main/resources/mapper/book目錄下

我的自定義模板,可借鑒,不可直接用

模板內(nèi)使用到了較多的自定義類,所以大家可以借鑒下,全盤照搬肯定是不行的。
自定義異常:CheckException
自定義返回類:BaseResponse
自定義查詢類:BaseQuery
自定義:Msg
分頁(yè)插件:PageHelper
id生成器:IdWorker

1: entity.java.vm

##導(dǎo)入宏定義
$!{define.vm}

##保存文件(宏定義)
#save("/entity", ".java")

##包路徑(宏定義)
#setPackageSuffix("entity")

##自動(dòng)導(dǎo)入包(全局變量)
$!autoImport
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.tao.base.BaseQuery;
import lombok.Data;

import java.util.Date;

##表注釋(宏定義)
#tableComment("表實(shí)體類")
@Data
public class $!{tableInfo.name} extends BaseQuery {
#foreach($column in $tableInfo.fullColumn)
#if(${column.comment})
    /**
     * ${column.comment}
     **/
#end
#if($!{column.name} == 'delFlag')
    @TableLogic
    @TableField(fill = FieldFill.INSERT)
#end
#if($!{column.name} == 'createTime')
    @TableField(fill = FieldFill.INSERT)
#end
#if($!{column.name} == 'updateTime')
    @TableField(fill = FieldFill.INSERT_UPDATE)
#end
    private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
    
#end
}

2: mapper.java.vm

##導(dǎo)入宏定義
$!{define.vm}

##設(shè)置表后綴(宏定義)
#setTableSuffix("Mapper")

##保存文件(宏定義)
#save("/dao", "Mapper.java")

##包路徑(宏定義)
#setPackageSuffix("dao")

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import $!{tableInfo.savePackageName}.entity.$!tableInfo.name;

##表注釋(宏定義)
#tableComment("表數(shù)據(jù)庫(kù)訪問(wèn)層")
@Mapper
public interface $!{tableName} extends BaseMapper<$!tableInfo.name> {

}

3: service.java.vm

##導(dǎo)入宏定義
$!{define.vm}


##設(shè)置表后綴(宏定義)
#setTableSuffix("Service")

##保存文件(宏定義)
#save("/service", "Service.java")

##包路徑(宏定義)
#setPackageSuffix("service")

import com.baomidou.mybatisplus.extension.service.IService;
import $!{tableInfo.savePackageName}.entity.$!tableInfo.name;

##表注釋(宏定義)
#tableComment("表服務(wù)接口")
public interface $!{tableName} extends IService<$!tableInfo.name> {

    /**
     * 根據(jù)ids刪除多條數(shù)據(jù)
     **/
    void deleteByIds(String ids);
    
    
}

4: serviceImpl.java.vm

##導(dǎo)入宏定義
$!{define.vm}

##設(shè)置表后綴(宏定義)
#setTableSuffix("ServiceImpl")

##保存文件(宏定義)
#save("/service/impl", "ServiceImpl.java")

##包路徑(宏定義)
#setPackageSuffix("service.impl")

##定義實(shí)體對(duì)象名
#set($entityName = $!tool.firstLowerCase($!tableInfo.name))

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import $!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Mapper;
import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};
import $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

##表注釋(宏定義)
#tableComment("表服務(wù)實(shí)現(xiàn)類")
@Service("$!tool.firstLowerCase($tableInfo.name)Service")
public class $!{tableName} extends ServiceImpl<$!{tableInfo.name}Mapper, $!{tableInfo.name}> implements $!{tableInfo.name}Service {


    @Resource
    private $!{tableInfo.name}Mapper ${entityName}Mapper;
    
    /**
     * 根據(jù)ids刪除多條數(shù)據(jù)
     **/
    @Override
    public void deleteByIds(String ids) {
        String[] idsArr = ids.split(",");
        if (idsArr.length > 0) {
            List<Long> idList = Stream.of(idsArr).map(Long::valueOf).collect(Collectors.toList());
            $!{entityName}Mapper.deleteBatchIds(idList);
        }
    }
    
    
}

5: controller.java.vm

##導(dǎo)入宏定義
$!{define.vm}

##設(shè)置表后綴(宏定義)
#setTableSuffix("Controller")

##保存文件(宏定義)
#save("/controller", "Controller.java")

##包路徑(宏定義)
#setPackageSuffix("controller")
##定義服務(wù)名
#set($serviceName = $!tool.append($!tool.firstLowerCase($!tableInfo.name), "Service"))
##定義實(shí)體對(duì)象名
#set($entityName = $!tool.firstLowerCase($!tableInfo.name))

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.tao.Enum.Msg;
import com.tao.base.BaseQuery;
import com.tao.base.BaseResponse;
import $!{tableInfo.savePackageName}.entity.$!tableInfo.name;
import $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;
import com.tao.exception.CheckException;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

##表注釋(宏定義)
#tableComment("表控制層")
@RestController
@RequestMapping("$!tool.firstLowerCase($!tableInfo.name)")
public class $!{tableName} {
    /**
     * 服務(wù)對(duì)象
     */
    @Autowired
    private $!{tableInfo.name}Service $!{serviceName};

    /**
     * 列表查詢不分頁(yè) 查詢?nèi)?
     **/
    @RequestMapping(value = "list", method = RequestMethod.POST)
    public BaseResponse list(@RequestBody $!tableInfo.name model) {
        //條件查詢
        QueryWrapper<$!tableInfo.name> queryWrapper = new QueryWrapper();
        //動(dòng)態(tài)sql
//        if(StringUtils.isNotBlank(model.getAuthor())){
//            queryWrapper.lambda().eq($!tableInfo.name::getAuthor,model.getAuthor());
//        }
        //排序
        queryWrapper.lambda().orderByDesc($!tableInfo.name::getCreateTime);
        //執(zhí)行查詢
        List<$!tableInfo.name> list = $!{serviceName}.list(queryWrapper);
        //封裝查詢結(jié)果
        return new BaseResponse(Msg.SUCCESS, list);
    }
    
    /**
     * 列表查詢 分頁(yè)
     * 只能查詢自己的
     **/
    @RequestMapping(value = "listPage", method = RequestMethod.POST)
    public BaseResponse listPage(@RequestBody $!tableInfo.name model) {
        //沒(méi)有傳分頁(yè)參數(shù)時(shí),默認(rèn)設(shè)置查詢前10條數(shù)據(jù)
        if (null == model.getPageSize()) {
            PageHelper.startPage(BaseQuery.DEFAULT_PAGE, BaseQuery.DEFAULT_SIZE);
        } else {
            PageHelper.startPage(model.getCurrentPage(), model.getPageSize());
        }
        //條件查詢
        QueryWrapper<$!tableInfo.name> queryWrapper = new QueryWrapper();
        //動(dòng)態(tài)sql
        if (StringUtils.isNotBlank(model.getAuthor())) {
            queryWrapper.lambda().eq($!tableInfo.name::getAuthor, model.getAuthor());
        }
        //排序
        queryWrapper.lambda().orderByDesc($!tableInfo.name::getCreateTime);
        //執(zhí)行查詢
        List<$!tableInfo.name> list = $!{serviceName}.list(queryWrapper);
        PageInfo<$!tableInfo.name> pageInfo = new PageInfo<>(list);
        //封裝查詢結(jié)果
        return new BaseResponse(Msg.SUCCESS, pageInfo.getTotal(), pageInfo.getList());
    }
    
   /**
     * 保存
     **/
    @RequestMapping(value = "insert", method = RequestMethod.POST)
    public BaseResponse insert(@RequestBody $!tableInfo.name model) {
        //設(shè)置默認(rèn)id
        if (model.getId() == null) {
            model.setId(IdWorker.getId());
        }
        $!{serviceName}.save(model);
        //封裝查詢結(jié)果
        return new BaseResponse(Msg.SUCCESS, model.getId());
    }

    /**
     * 根據(jù)id更新
     **/
    @RequestMapping(value = "updateById", method = RequestMethod.PUT)
    public BaseResponse updateById(@RequestBody $!tableInfo.name model) throws Exception {
        //字段檢查
        if (null == (model.getId())) {
            throw new CheckException(Msg.CHECK_ATTRIBUTE_FAIL, "id不能為空");
        }

        $!{serviceName}.updateById(model);
        //封裝查詢結(jié)果
        return new BaseResponse(Msg.SUCCESS);
    }


    /**
     * 根據(jù)id查詢
     **/
    @RequestMapping(value = "getById/{id}", method = RequestMethod.GET)
    public BaseResponse getById(@PathVariable("id") Long id) {
        $!tableInfo.name temp = $!{serviceName}.getById(id);
        //封裝查詢結(jié)果
        return new BaseResponse(Msg.SUCCESS, temp);
    }

    /**
     * 根據(jù)id更新
     **/
    @RequestMapping(value = "deleteById/{id}", method = RequestMethod.DELETE)
    public BaseResponse deleteById(@PathVariable("id") Long id) {
        $!{serviceName}.removeById(id);
        //封裝查詢結(jié)果
        return new BaseResponse(Msg.SUCCESS);
    }

    /**
     * 根據(jù)多個(gè)id刪除
     **/
//    @RequestMapping(value = "deleteByIds/{ids}", method = RequestMethod.DELETE)
//    public BaseResponse deleteByIds(@PathVariable("ids") String ids) throws Exception {
    @RequestMapping(value = "deleteByIds", method = RequestMethod.DELETE)
    public BaseResponse deleteByIds(@Param("ids") String ids) throws Exception {
        //業(yè)務(wù)檢查
        if (StringUtils.isEmpty(ids)) {
            throw new CheckException(Msg.CHECK_ATTRIBUTE_FAIL, "請(qǐng)傳入正確的ids");
        }
        $!{serviceName}.deleteByIds(ids);
        //封裝查詢結(jié)果
        return new BaseResponse(Msg.SUCCESS);
    }
    
    
}

6: mapping.xml.vm

##引入mybatis支持
$!{mybatisSupport.vm}
##定義實(shí)體對(duì)象名
#set($entityName = $!tool.firstLowerCase($!tableInfo.name))

##設(shè)置保存名稱與保存位置
$!callback.setFileName($tool.append($!{tableInfo.name}, "Mapping.xml"))
$!callback.setSavePath($tool.append($modulePath, $tool.append("/src/main/resources/mapper/",$entityName)))

##拿到主鍵
#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.$!{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>

    <!-- 批量插入 -->
    <!-- 
    <insert id="insertBatch" keyProperty="$!pk.name" useGeneratedKeys="true">
        insert into $!{tableInfo.obj.parent.name}.$!{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>
    -->

</mapper>

到此這篇關(guān)于idea使用easyCode生成代碼(根據(jù)mybatis-plus模板創(chuàng)建自己的模板)的文章就介紹到這了,更多相關(guān)idea easyCode生成代碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JAVA?IDEA?打開(kāi)assert?設(shè)置方式

    JAVA?IDEA?打開(kāi)assert?設(shè)置方式

    這篇文章主要介紹了JAVA?IDEA?打開(kāi)assert?設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Java中的三元運(yùn)算(三目運(yùn)算)以后用得到!

    Java中的三元運(yùn)算(三目運(yùn)算)以后用得到!

    Java提供了一個(gè)三元運(yùn)算符,可以同時(shí)操作3個(gè)表達(dá)式,下面這篇文章主要給大家介紹了關(guān)于Java中三元運(yùn)算(三目運(yùn)算)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • vue用CryptoJS加密,java用CryptoUtil解密

    vue用CryptoJS加密,java用CryptoUtil解密

    CryptoJS是一個(gè)JavaScript庫(kù),提供了一系列密碼學(xué)函數(shù)和工具,用于加密、解密、生成摘要等任務(wù),本文vue前端使用CryptoJS加密,java后端使用CryptoUtil解密
    2024-09-09
  • java 中動(dòng)態(tài)代理詳解及實(shí)例

    java 中動(dòng)態(tài)代理詳解及實(shí)例

    這篇文章主要介紹了java 中動(dòng)態(tài)代理詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • java實(shí)現(xiàn)簡(jiǎn)單計(jì)算器

    java實(shí)現(xiàn)簡(jiǎn)單計(jì)算器

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)單計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • spring cloud config 配置中心快速實(shí)現(xiàn)過(guò)程解析

    spring cloud config 配置中心快速實(shí)現(xiàn)過(guò)程解析

    這篇文章主要介紹了spring cloud config 配置中心快速實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 舉例講解Java中的Stream流概念

    舉例講解Java中的Stream流概念

    這篇文章主要介紹了舉例講解Java中的Stream流概念,是Java入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-09-09
  • JUC之CountdownLatch使用詳解

    JUC之CountdownLatch使用詳解

    這篇文章主要介紹了JUC之CountdownLatch使用詳解,CountdownLatch 用來(lái)進(jìn)行線程同步協(xié)作,等待所有線程完成倒計(jì)時(shí),
    其中構(gòu)造參數(shù)用來(lái)初始化等待計(jì)數(shù)值,await() 用來(lái)等待計(jì)數(shù)歸零,countDown() 用來(lái)讓計(jì)數(shù)減一,需要的朋友可以參考下
    2023-12-12
  • Linux系統(tǒng)安裝JDK三種主流的方式

    Linux系統(tǒng)安裝JDK三種主流的方式

    這篇文章主要介紹了Linux系統(tǒng)安裝JDK三種主流的方式,三種方式分別是YUM源倉(cāng)庫(kù)安裝、RPM包手動(dòng)安裝和tar.gz壓縮包手動(dòng)安裝,每種方式都有其特點(diǎn)和適用場(chǎng)景,需要的朋友可以參考下
    2026-02-02
  • Java編程中的檢查型異常與非檢查型異常分析

    Java編程中的檢查型異常與非檢查型異常分析

    這篇文章主要介紹了Java編程中的未檢查型異常與非檢查型異常,以及異常的處理方式,需要的朋友可以參考下
    2017-09-09

最新評(píng)論

林口县| 礼泉县| 霍林郭勒市| 靖州| 修文县| 乌鲁木齐县| 蚌埠市| 苏尼特左旗| 光泽县| 和平县| 兴隆县| 长岛县| 尚义县| 昭平县| 营山县| 阜康市| 富蕴县| 红桥区| 连云港市| 平阳县| 抚顺市| 龙川县| 灵丘县| 修武县| 中牟县| 兴海县| 卓资县| 凤凰县| 绵阳市| 壤塘县| 汉寿县| 武义县| 长沙县| 吴川市| 安乡县| 双辽市| 北票市| 北川| 泉州市| 玉田县| 托克托县|