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

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

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

前言

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

一、安裝easyCode插件

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

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

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

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

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

2:選擇完成后,點擊OK就可以了。

代碼如下(示例):

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

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

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

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

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

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

因為在實現(xiàn)類里有實現(xiàn)方法,所以需要使用到bookMapper,但是如何獲取到Book對象的小寫單詞是個問題:

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

說明下:

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

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

正確的:
##定義實體對象名
#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
分頁插件:PageHelper
id生成器:IdWorker

1: entity.java.vm

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

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

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

##自動導(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("表實體類")
@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ù)庫訪問層")
@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")

##定義實體對象名
#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ù)實現(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"))
##定義實體對象名
#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ù)對象
     */
    @Autowired
    private $!{tableInfo.name}Service $!{serviceName};

    /**
     * 列表查詢不分頁 查詢?nèi)?
     **/
    @RequestMapping(value = "list", method = RequestMethod.POST)
    public BaseResponse list(@RequestBody $!tableInfo.name model) {
        //條件查詢
        QueryWrapper<$!tableInfo.name> queryWrapper = new QueryWrapper();
        //動態(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);
    }
    
    /**
     * 列表查詢 分頁
     * 只能查詢自己的
     **/
    @RequestMapping(value = "listPage", method = RequestMethod.POST)
    public BaseResponse listPage(@RequestBody $!tableInfo.name model) {
        //沒有傳分頁參數(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();
        //動態(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ù)多個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, "請傳入正確的ids");
        }
        $!{serviceName}.deleteByIds(ids);
        //封裝查詢結(jié)果
        return new BaseResponse(Msg.SUCCESS);
    }
    
    
}

6: mapping.xml.vm

##引入mybatis支持
$!{mybatisSupport.vm}
##定義實體對象名
#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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

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

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

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

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

    vue用CryptoJS加密,java用CryptoUtil解密

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

    java 中動態(tài)代理詳解及實例

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

    java實現(xiàn)簡單計算器

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

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

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

    舉例講解Java中的Stream流概念

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

    JUC之CountdownLatch使用詳解

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

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

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

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

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

最新評論

香港| 沂南县| 土默特右旗| 宜昌市| 霍山县| 长治市| 定结县| 婺源县| 唐河县| 云南省| 惠东县| 安顺市| 涞源县| 永新县| 福州市| 贵德县| 岚皋县| 安岳县| 龙岩市| 色达县| 恭城| 阿巴嘎旗| 静乐县| 通州区| 新郑市| 黄石市| 红河县| 平遥县| 雷山县| 渭南市| 新乐市| 康保县| 德阳市| 承德县| 昌江| 洱源县| 天水市| 龙海市| 大邑县| 汪清县| 平远县|