本篇文章主要介紹的關於本人在使用IDEA的一些使用方法,一些常用設定,一些外掛推薦和使用。請注意,本文特長,2w多字加上幾十張圖片,建議收藏觀看~
idea官網: https://www.jetbrains.com/idea/
如果是學生的話,可以在idea直接申請使用;
如果在GitHub上面有持續維護的開源專案話,也可以進行申請使用;
如果有條件的話,可以支援一下正版。
破解版以及說明
連結:https://pan.baidu.com/s/1v0N0pd20LNbMgsK6ItJnLA
提取碼:qvam
FILE ->Settings->Editor->File Encodings設定以下:
IDE Encondings:IDE編碼 ,設為UTF8
Project Encoding:專案編碼,設為UTF8
Default encoding for properties files:預設檔案編碼,設為UTF8
1.匯入JDK
開啟IDEA之後,點選File →Project Struture ,然後點選SDK,選擇JDK路徑,匯入就行
2.預設JDK
File-Other Settings-> Default Project Structure-> project
選擇JDK版本
3.專案設定JDK
File-Settings-> Build,Execution, Deployment -> Compiler -> Java Compiler
選擇JDK的版本就行
1.開啟-File-Settings 搜尋Maven,然後選擇Maven 安裝目錄和設定路徑。
file->setting->git 輸入git安裝的地址。例如: D:\Program Files\Git\bin\git.exe
1.類註釋模板
建立類的時候會自動建立該註釋!
File-Settings-Editor->File and Code TemPlates
選擇 Includes->File Heather
新增如下:
/**
* @Title: ${PROJECT_NAME}
* @Description:
* @Version:1.0.0
* @Since:jdk1.8
* @author pancm
* @date ${DATE}
*/
使用方法,在IDEA建立一個類,就會自動帶出該註釋,範例如下:
自定義類註釋模板,輸入一個關鍵字(自定義)就可以快速建立!
File-->Settings-->Editor-->Live Templates
新建一個組(Templates Group),名稱隨意(userTemplates)不衝突就行,然後在新建一個模板(Live Templates),Abbreviation 名稱為 m1 。
新增如下:
/**
* @Title: $PROJECT_NAME$
* @Description:
* @Version:1.0.0
* @Since:jdk1.8
* @author pancm
* @Date $date$
**/
然後點選edit variables進行編輯。
方法註釋
File-->Settings-->Editor-->Live Templates
和上面一樣,名稱為m2。
新增如下:
/**
* @Author xxx
* @Description
* @Date $date$
* @Param $param$
* @return $return$
**/
修改 Expand with 為 Enter,然後點選 Edit variables 進行對照,下拉選擇即可。
使用範例,在類上面輸入m1,按回車就出現註釋,在方法上面輸出m2就出現方法的註釋。
注: 由於我是從eclipse轉過來的,因此開始會找一些快捷對比而使用。
idea 與 Eclipse 快捷鍵的區別,上為Eclipse的快捷鍵,下為Idea的快捷鍵
查詢類名
CTRL + SHIFT + R
CTRL + N
查詢JAR包中的類
CTRL + SHIFT + T
兩次 CTRL + N
查詢檔案
CTRL + SHEFT + R
CTRL + SHEFT + N
查詢JAR包中的檔案
CTRL + SHIFT + T
兩次 CTRL + SHEFT + N
查詢類中的方法以及欄位
無
CTRL + SHEFT + ALT + N
查詢那些類呼叫該資源(資源可能是欄位、方法、類)
CTRL + SHIFT + G
ALT + F7 ,快速顯示查詢內容 CTRL + ALT + F7
查詢檔案中的變數
點選變數 CTRL + K :移動
點選變數 CTRL + SHEFT + F7 高亮顯示 F3 : 移動; SHEFT + F3 : 反向移動
定位行數
CTRL + L
CTRL + G
快速生成get set、建構函式等
ALT + SHIFT + S
ALT + INSERT
快速生成try cache
SHIFT + ALT + Z
CTRL + ALT + T 同時還能生成if else 等等其他的東西
快速優化參照包
CTRL + SHIFT + O
CTRL + ALT + O
快速格式化程式碼
CTRL + SHIFT + F
CTRL + ALT + L
重構程式碼
CTRL + F2
SHIFT + F6
顯示類中的變數、方法
CTRL + O
CTRL + F12
快速生產類、方法、欄位註釋
CTRL + SHEFT + J
/** + ENTER
程式碼行 上下移動
ALT + 上下鍵
CTRL + SHIFT + 上下鍵
開啟遊標處的類或方法
F3
CTRL + B, CTRL + ALT + B 進入介面或者抽象類的實現類
其他的快捷鍵:
F4 查詢變數來源
CTRL + 空格 程式碼提示 (和系統輸入法衝突,請在Settings->Keymap->mainmenu -> code ->Completion->basic,右鍵新增自己的快捷鍵)
ALT + 回車 匯入包,自動修正
CTRL + H 檢視類的繼承關係。
CTRL + Q 顯示註釋檔案(跟eclipse滑鼠放到類、方法、欄位顯示的內容一樣)
CTRL + W 選中程式碼,連續按會有其他效果
CTRL + U 檢視當前類的父類別以及介面,
CTRL + ALT + U 檢視類UML圖
CTRL + SHIFT + U 切換大小寫
CTRL + P 方法引數提示,可以看到這個方法有哪些多型方法
SHIFT + ALT + INSERT 豎編輯模式
File -> Settings ->Editor ->General -> Appearance =>Show line numbers選中
File -> Settings -> Keymap -> Main menu -> Edit ->Find =>修改Find…和Replace…分別改為Ctrl+F 和Ctrl+R
File -> Settings ->Eidtor->General->Code Completion => Case sensitive completion 改為none
在Main menu->code->completion-> basic修改為Alt+/
Editor –> Editor Tabs選中Mark modifyied tabs with asterisk
Editor > General 下 Other 區域中的 show quick documentation on mouse move
tools -> ssh start session
填寫地址、賬號密碼登入即可
ftp 使用
setting -> deployment 增加ftp/sftp 然後填寫地址、賬號密碼登入即可
匯出:
File- -->Export Settings ->選擇匯出目錄,會出現一個settings.jar的檔案
匯入方法:
File->Import Settings ->選擇需要匯入的settings.jar即可
右鍵setting -General -Auto Import
idea有個麻煩的點是執行一個專案,必須全部都不能報錯,因此在偵錯階段,可以這樣修改執行。
第一步
第二步
忽略註釋錯誤:
忽略spring mapping 無法注入問題
java工程引入jar包跟eclipse有點不同,選中工具列上"檔案"--->"Project Structure"--->選擇「Libraries」--->點選「+」--->"Java"--->選擇自己需要的jar包即可。
點選Run-Edit Configurations...
點選左側「+」,選擇Tomcat Server--Local,
在Tomcat Server -> Unnamed -> Server -> Application server專案下,點選 Configuration ,找到本地 Tomcat 伺服器,再點選 OK按鈕。
Settings > Maven > Importing > Import maven project automatically
pom檔案設定:
需要新增:
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>${tk.mybatis.boot.version}</version>
</dependency>
<!-- mybatis-generator-core 反向生成java程式碼,解決dtd 標紅的問題-->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.5</version>
</dependency>
Source設定
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<verbose>true</verbose>
<overwrite>true</overwrite>
<configurationFile>src/main/resources/generator/generatorConfig.xml</configurationFile>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.connector.version}</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>3.4.3</version>
</dependency>
</dependencies>
</plugin>
</plugins>
Idea設定:
命令: mybatis-generator:generate -e
線上安裝
File-Settings-Pluigin
輸入要搜尋的外掛
離線安裝
File-Settings-Pluigin -Install plugin from disk
選擇離線下載的外掛
Lombok Plugin 簡化程式碼
Statistic 程式碼統計
CheckStyle 程式碼格式檢查(可以自己/公司指令碼)
FindBugs bugs外掛
SonarLint bugs外掛
grep Console 控制檯外掛
.ignore git 檔案提交過濾
CodeGlance 右側檔案結構圖
Background Image Plus 設定背景圖片: view -> Set Backgroup Image
Key promoter 快捷鍵提示,將滑鼠放上去的時候會有提示
Markdown support 編輯Markdown檔案 .md 檔案
Maven Helper maven外掛,開啟該pom檔案的Dependency Analyzer檢視
GsonFormat 將json轉換為object
JRebel for IntelliJ 是一款熱部署外掛
AceJump 代替滑鼠的軟體,按快捷鍵進入 AceJump 模式後(預設是 Ctrl+J)
javaDoc 註釋外掛
Free MyBatis plugin Mybatis外掛,可以自由跳轉到對應的mapping.xml中
MyBatisX //mybatis 的增強外掛, 在介面中寫一個方法, 可以根據這個方法在mapper.xml中自動生成DML語句, 前提是這個mapper.xml 得先建好且指定了介面的名稱空間
idea-mybatis-generator //mybatis的程式碼生成器,可以將資料庫表生成實體類和對應mapper
Translation 翻譯軟體
SonarLint 程式碼質量管理工具
SequenceDiagram 可以根據程式碼呼叫鏈路自動生成時序圖,右鍵 --> Sequence Diagaram 即可調出。
Maven Helper 檢視maven直接參照的關係進行排除, 安裝後 IDEA 中開啟 pom.xml 檔案時,就會多出一個 "Dependency Analyzer" 索引標籤。
Maven search 快速查詢maven依賴,支援模糊查詢,需要連線網路
GenerateAllSetter 一鍵通過new物件生成
EasyCode 快速生成程式碼
注:這是我在開發某個專案使用的模板,並非通用所有專案,僅做參考。EasyCode官方自帶有一套模板,初學者可以使用這套,熟悉之後可以在進行自定義。
•基於IntelliJ IDEA開發的程式碼生成外掛,支援自定義任意模板(Java,html,js,xml)。
•只要是與資料庫相關的程式碼都可以通過自定義模板來生成。支援資料庫型別與java型別對映關係設定。
•支援同時生成生成多張表的程式碼。每張表有獨立的設定資訊。完全的個性化定義,規則由你設定
路徑: File -> Settings->Plugins
輸入: /vendor:"Easy Code Office Website" 進行搜尋然後進安裝。
安裝完成之後需要重啟IEDA。
外掛安裝之後建議先設定作者
路徑:File -> Settings->Other Setting
範例圖:
設定完作者之後,點選Template Setting,然後點選右邊的+,建立一個分組名稱,這個名稱隨意,不重複就行,這裡就設定MyGroup,然後點選左邊的+號進行新增模板:
1.dao模板
PowerShell
##定義初始變數
#set($tableName = $tool.append($tableInfo.name, "Dao"))
##設定回撥
$!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}.model.$!{tableInfo.name};
import $!{tableInfo.savePackageName}.vo.$!{tableInfo.name}VO;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* @Title: $!{tableInfo.comment}($!{tableInfo.name})表資料庫存取層
* @Description:
* @Version:1.0.0
* @Since:jdk1.8
* @author $author
* @date $!time.currTime()
*/
@Mapper
public interface $!{tableName} {
/**
* 通過ID查詢單條資料
*
* @param $!pk.name 主鍵
* @return 範例物件
*/
$!{tableInfo.name}VO queryById($!pk.shortType $!pk.name);
/**
* 通過實體查詢一條資料
*
* @param $!tool.firstLowerCase($!{tableInfo.name})VO 範例物件
* @return 物件列表
*/
$!{tableInfo.name}VO findOne($!{tableInfo.name}VO $!tool.firstLowerCase($!{tableInfo.name})VO);
/**
* 通過實體作為篩選條件查詢
*
* @param $!tool.firstLowerCase($!{tableInfo.name})VO 範例物件
* @return 物件列表
*/
List<$!{tableInfo.name}VO> queryAll($!{tableInfo.name}VO $!tool.firstLowerCase($!{tableInfo.name})VO);
/**
* 新增資料
*
* @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 影響行數
*/
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);
}
2.entity模板
Kotlin
##引入宏定義
$!define
#set($tableName = $tool.append($tableInfo.name, "VO"))
##設定回撥
$!callback.setFileName($tool.append($tableName, ".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/vo"))
#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}vo;
##使用全域性變數實現預設包匯入
$!autoImport
import java.io.Serializable;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Title: $!{tableInfo.comment}($!{tableInfo.name})請求響應物件
* @Description:
* @Version:1.0.0
* @Since:jdk1.8
* @author $author
* @date $!time.currTime()
*/
@ApiModel(value = "$!{tableInfo.name}", description = "$!{tableInfo.comment}")
@Data
public class $!{tableInfo.name}VO extends BasePage implements Serializable {
private static final long serialVersionUID = $!tool.serial();
#foreach($column in $tableInfo.fullColumn)
#if(${column.comment})/**
* ${column.comment}
*/#end
@ApiModelProperty(value = "${column.comment}")
private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
#end
@Override
public String toString(){
return JSONObject.toJSONString(this);
}
}
3.service模板
PowerShell
##定義初始變數
#set($tableName = $tool.append("I",$tableInfo.name, "Service"))
##設定回撥
$!callback.setFileName($tool.append($tableName, ".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;
$!autoImport
import $!{tableInfo.savePackageName}.vo.$!{tableInfo.name}VO;
import java.util.List;
/**
* @Title: $!{tableInfo.comment}($!{tableInfo.name})表服務介面
* @Description:
* @Version:1.0.0
* @Since:jdk1.8
* @author $author
* @date $!time.currTime()
*/
public interface $!{tableName} {
/**
* 通過ID查詢單條資料
*
* @param $!pk.name 主鍵
* @return 範例物件
*/
$!{tableInfo.name}VO queryById($!pk.shortType $!pk.name);
/**
* 通過實體作為篩選條件查詢
*
* @param $!tool.firstLowerCase($!{tableInfo.name})VO 範例物件
* @return 物件列表
*/
ApiResult list($!{tableInfo.name}VO $!tool.firstLowerCase($!{tableInfo.name})VO);
/**
* 新增資料
*
* @param $!tool.firstLowerCase($!{tableInfo.name})VO 範例物件
* @return 範例物件
*/
int insert($!{tableInfo.name}VO $!tool.firstLowerCase($!{tableInfo.name})VO);
/**
* 修改資料
*
* @param $!tool.firstLowerCase($!{tableInfo.name})VO 範例物件
* @return 範例物件
*/
int update($!{tableInfo.name}VO $!tool.firstLowerCase($!{tableInfo.name})VO);
/**
* 通過主鍵刪除資料
*
* @param $!pk.name 主鍵
* @return 是否成功
*/
boolean deleteById($!pk.shortType $!pk.name);
}
4.serviceImpl 模板
PowerShell
##定義初始變數
#set($tableName = $tool.append($tableInfo.name, "ServiceImpl"))
##設定回撥
$!callback.setFileName($tool.append($tableName, ".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;
$!autoImport
import $!{tableInfo.savePackageName}.vo.$!{tableInfo.name}VO;
import $!{tableInfo.savePackageName}.model.$!{tableInfo.name};
import $!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Dao;
import $!{tableInfo.savePackageName}.service.I$!{tableInfo.name}Service;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.springframework.stereotype.Service;
import org.springframework.beans.BeanUtils;
import javax.annotation.Resource;
import java.util.List;
/**
* @Title: $!{tableInfo.comment}($!{tableInfo.name})表服務實現類
* @Description:
* @Version:1.0.0
* @Since:jdk1.8
* @author $author
* @date $!time.currTime()
*/
@Service("$!tool.firstLowerCase($!{tableInfo.name})Service")
public class $!{tableName} implements I$!{tableInfo.name}Service {
@Resource
private $!{tableInfo.name}Dao $!tool.firstLowerCase($!{tableInfo.name})Dao;
/**
* 通過ID查詢單條資料
*
* @param $!pk.name 主鍵
* @return 範例物件
*/
@Override
public $!{tableInfo.name}VO queryById($!pk.shortType $!pk.name) {
return this.$!{tool.firstLowerCase($!{tableInfo.name})}Dao.queryById($!pk.name);
}
/**
* 根據條件查詢
*
* @return 範例物件的集合
*/
@Override
public ApiResult list($!{tableInfo.name}VO $!{tool.firstLowerCase($!{tableInfo.name})}) {
int pageNum = $!{tool.firstLowerCase($!{tableInfo.name})}.getPageNum();
int pageSize = $!{tool.firstLowerCase($!{tableInfo.name})}.getPageSize();
Page page = PageHelper.startPage(pageNum, pageSize);
List<$!{tableInfo.name}VO> result = $!{tool.firstLowerCase($!{tableInfo.name})}Dao.queryAll($!{tool.firstLowerCase($!{tableInfo.name})});
return ApiResult.success(new PageResult<>(page.getTotal(), result, pageSize, pageNum));
}
/**
* 新增資料
*
* @param $!tool.firstLowerCase($!{tableInfo.name})VO 範例物件
* @return 範例物件
*/
@Override
public int insert($!{tableInfo.name}VO $!tool.firstLowerCase($!{tableInfo.name})VO) {
$!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}) = new $!{tableInfo.name}();
BeanUtils.copyProperties($!tool.firstLowerCase($!{tableInfo.name})VO,$!tool.firstLowerCase($!{tableInfo.name}));
return $!{tool.firstLowerCase($!{tableInfo.name})}Dao.insert($!tool.firstLowerCase($!{tableInfo.name}));
}
/**
* 修改資料
*
* @param $!tool.firstLowerCase($!{tableInfo.name})VO 範例物件
* @return 範例物件
*/
@Override
public int update($!{tableInfo.name}VO $!tool.firstLowerCase($!{tableInfo.name})VO) {
$!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}) = new $!{tableInfo.name}();
BeanUtils.copyProperties($!tool.firstLowerCase($!{tableInfo.name})VO,$!tool.firstLowerCase($!{tableInfo.name}));
return $!{tool.firstLowerCase($!{tableInfo.name})}Dao.update($!tool.firstLowerCase($!{tableInfo.name}));
}
/**
* 通過主鍵刪除資料
*
* @param $!pk.name 主鍵
* @return 是否成功
*/
@Override
public boolean deleteById($!pk.shortType $!pk.name) {
return this.$!{tool.firstLowerCase($!{tableInfo.name})}Dao.deleteById($!pk.name) > 0;
}
}
5.controller模板
Kotlin
##定義初始變數
#set($tableName = $tool.append($tableInfo.name, "Controller"))
##設定回撥
$!callback.setFileName($tool.append($tableName, ".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}.vo.$!{tableInfo.name}VO;
import $!{tableInfo.savePackageName}.service.I$!{tableInfo.name}Service;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
/**
* @Title: $!{tableInfo.comment}($!{tableInfo.name})表控制層
* @Description:
* @Version:1.0.0
* @Since:jdk1.8
* @author $author
* @date $!time.currTime()
*/
@Api(tags = "$!{tableInfo.comment}($!{tableInfo.name})")
@RestController
@RequestMapping("$!tool.firstLowerCase($tableInfo.name)")
public class $!{tableName} {
/**
* 服務物件
*/
@Autowired
private I$!{tableInfo.name}Service $!tool.firstLowerCase($tableInfo.name)Service;
/**
* 新增一條資料
*
* @param $!tool.firstLowerCase($tableInfo.name)VO 實體類
* @return Response物件
*/
@ApiOperation(value = "$!{tableInfo.comment}新增",notes = "$!{tableInfo.comment}新增")
@RequestMapping(value = "save", method = RequestMethod.POST)
public ApiResult insert(@RequestBody $!{tableInfo.name}VO $!tool.firstLowerCase($tableInfo.name)VO, HttpServletRequest httpRequest) {
int result = $!{tool.firstLowerCase($tableInfo.name)}Service.insert($!tool.firstLowerCase($tableInfo.name)VO);
if (result > 0) {
return ApiResult.success();
}
return ApiResult.error("新增失敗");
}
/**
* 修改一條資料
*
* @param $!tool.firstLowerCase($tableInfo.name)VO 實體類
* @return Response物件
*/
@ApiOperation(value = "$!{tableInfo.comment}修改",notes = "$!{tableInfo.comment}修改")
@RequestMapping(value = "edit", method = RequestMethod.POST)
public ApiResult update(@RequestBody $!{tableInfo.name}VO $!tool.firstLowerCase($tableInfo.name)VO, HttpServletRequest httpRequest) {
$!{tool.firstLowerCase($tableInfo.name)}Service.update($!tool.firstLowerCase($tableInfo.name)VO);
return ApiResult.success();
}
/**
* 刪除一條資料
*
* @param $!tool.firstLowerCase($tableInfo.name)VO 引數物件
* @return Response物件
*/
@ApiOperation(value = "$!{tableInfo.comment}刪除",notes = "$!{tableInfo.comment}刪除")
@RequestMapping(value = "del", method = RequestMethod.POST)
public ApiResult delete(@RequestBody $!{tableInfo.name}VO $!tool.firstLowerCase($tableInfo.name)VO, HttpServletRequest httpRequest) {
$!{tool.firstLowerCase($tableInfo.name)}Service.deleteById($!{tool.firstLowerCase($tableInfo.name)}VO.getId());
return ApiResult.success();
}
/**
* 分頁查詢
*
*/
@ApiOperation(value = "$!{tableInfo.comment}查詢",notes = "$!{tableInfo.comment}查詢")
@RequestMapping(value = "list", method = RequestMethod.POST)
public ApiResult list(@RequestBody $!{tableInfo.name}VO $!tool.firstLowerCase($tableInfo.name)VO) {
return $!{tool.firstLowerCase($tableInfo.name)}Service.list($!tool.firstLowerCase($tableInfo.name)VO);
}
/**
* 詳情查詢
*
*/
@ApiOperation(value = "$!{tableInfo.comment}詳情",notes = "$!{tableInfo.comment}詳情")
@RequestMapping(value = "view", method = RequestMethod.GET)
public ApiResult view( @RequestParam("id") Long id) {
return ApiResult.success($!{tool.firstLowerCase($tableInfo.name)}Service.queryById(id));
}
}
6.mapper模板
HTML
##引入mybatis支援
$!mybatisSupport
##設定儲存名稱與儲存位置
$!callback.setFileName($tool.append($!{tableInfo.name}, "Mapper.xml"))
$!callback.setSavePath($tool.append($modulePath, "/src/main/resources/guard/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}.vo.$!{tableInfo.name}VO" 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="findOne" 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>
limit 1
</select>
<!--通過實體作為篩選條件查詢-->
<select id="queryAll" 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>
<!--新增所有列-->
<insert id="insert" keyProperty="$!pk.name" useGeneratedKeys="true">
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>
<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>
<!--通過主鍵修改資料-->
<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>
7.model模板
Kotlin
##引入宏定義
$!define
##使用宏定義設定回撥(儲存位置與檔案字尾)
#save("/model", ".java")
##使用宏定義設定包字尾
#setPackageSuffix("model")
##使用全域性變數實現預設包匯入
$!autoImport
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;
/**
* @Title: $!{tableInfo.comment}($!{tableInfo.name})實體類
* @Description:
* @Version:1.0.0
* @Since:jdk1.8
* @author $author
* @date $!time.currTime()
*/
@Data
@Table(name = "$tableInfo.obj.name")
public class $!{tableInfo.name} implements Serializable {
private static final long serialVersionUID = $!tool.serial();
#foreach($column in $tableInfo.fullColumn)
#if(${column.comment})/**
* ${column.comment}
*/#end
@Column(name = "$column.obj.name")
private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
#end
@Override
public String toString(){
return JSONObject.toJSONString(this);
}
}
1.前提
該外掛使用IDEA連線資料庫,若未連線資料庫,則需手動新增資料庫.
MySql資料庫新增範例:
點選IDEA右側的database,點選+號,選擇DataSource->MySQL,需要MySql驅動的jar,可以從maven倉庫裡面選擇對應的jar。
範例圖:
2.使用
連線mysql之後,選擇對應的表,這裡就選擇db_version,右鍵該表,選擇EasyCode->Generate Code,然後選擇剛剛建立的組(MyGroup),選擇生成程式碼的路徑,這裡到了com.xxx.xxx即可,如果有不存在的package,會自動建立,點選ok自動生成程式碼。再次做同樣的點選可以選擇覆蓋響應程式碼。
1.資料新增
2.分頁查詢
3.資料修改
操作: 'File->Project Structure'
修改jdk的版本
解法:
修改專案下 .idea\workspace.xml
,找到標籤 <component name="PropertiesComponent">
, 在標籤里加一行 <property name="dynamic.classpath" value="true" />
是因為使用了外掛ideavim,開啟file -> settings 點選 Plugins 然後再右邊搜尋方塊輸入IdeaVim,出來結果後將後面核取方塊中得勾去掉就可以了
關於IDEA,在很久之前就開始使用了,主要是因為使用eclipse間歇先崩潰,有幾次程式碼沒有及時儲存導致心態炸裂,所以就開始使用IDEA,因為個人習慣,使用一項新的東西,就會進行記錄,因此就有了此手記。
一首很好聽的古風曲~
原創不易,如果感覺不錯,希望給個推薦!您的支援是我寫作的最大動力!
版權宣告:
作者:虛無境
部落格園出處:http://www.cnblogs.com/xuwujing
CSDN出處:http://blog.csdn.net/qazwsxpcm
個人部落格出處:https://xuwujing.github.io/