目錄
Alibaba Java Coding Guidelines
Free MyBatis plugin 插件的簡單介紹:
在寫MyBatis項目的時候,我們經常會在DAO和Mapper.xml中來回切換進行代碼編寫,當方法較多,代碼較爲繁雜的時候,要定位到對應的方法,以及查看DAO中方法是否在Mapper.xml中定了,這個事情就比較繁瑣,這個時候就體現了這個插件的作用。接下來我們可以看看Free MyBatis plugin插件可以幫我們做什麼事情。
1.在Idea中安裝 Free MyBatis plugin:打開Idea -->Configure--->Plugins--->Browse repositories
搜索Mybaits --->找到Free MyBtais plugin -->點擊右側的Install 等待片刻後提示安裝成功,重啓Idea即可。
codehelper.generator 簡介:
可以根據POJO實體類,一鍵生成DAO接口,Mapper.xml文件,Service類,以及POJO 對應的SQL腳本(目前只支撐MySQL)。注意,該插件只會生成5個方法(insert,insertList,update,select,delete),當然在Mapper.xml中,sql語句都是使用動態SQL完成的,非常實用。接下來看看它的安裝及應用。
安裝過程和Free MyBatis plugin差不多,安裝完畢後同樣需要重啓。重新打開後可以看到在Tools工具欄下多瞭如下選項:
插件安裝完畢後我們就可以來使用了,只需要對應的POJO類,但是注意,在當前類中一定要有一個字段叫id,類型不限制。
接下來在項目的根目錄下建立一個屬性文件(codehelper.properties),內容如下,具體作用就是用於指定要操作的實體類(pojo)有那些,以及生成的dao,service,mapper,sql存放的路徑。
#配置多個pojos,以 | 分隔
pojos=Dept|Emp
#Sql文件的charset配置
charset=utf8
#mysql Engine
sqlEngine=InnoDB
#配置各個文件的路徑
mapper.path=src/main/resources/mybatis/mappers
dao.path=src/main/java/com/zt/dao
service.path=src/main/java/com/zt/service
sql.path=src/main/resources/sql
### 配置各個java類型的sql關鍵字
int=NUMBER(12) NOT NULL DEFAULT -1
double=NUMBER(14,4) NOT NULL DEFAULT -1
java.lang.String=VARCHAR2(50) NOT NULL DEFAULT ''
java.lang.Integer=NUMBER(12) NOT NULL DEFAULT -1
·詳細配置請參考: ·https://github.com/zhengjunbase/codehelper.generator
做好以上操作後,選擇Tools-->CodeHelper--->GenDaoCode,一鍵生成對應的代碼。點擊之後會彈出如下窗口表示生成的文件有那些,點擊OK即可。
生成後的Mapper.xml文件:
<?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="com.zt.dao.DeptDao">
<!--auto generated Code-->
<resultMap id="AllColumnMap" type="com.zt.pojo.Dept">
<result column="id" property="id"/>
<result column="dept_no" property="deptNo"/>
<result column="dname" property="dname"/>
<result column="loc" property="loc"/>
</resultMap>
<!--auto generated Code-->
<sql id="all_column">
id,
dept_no,
dname,
loc
</sql>
<!--auto generated Code-->
<insert id="insert">
INSERT INTO dept
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="pojo.id != null"> id, </if>
<if test="pojo.deptNo != null"> dept_no, </if>
<if test="pojo.dname != null"> dname, </if>
<if test="pojo.loc != null"> loc, </if>
</trim>
VALUES
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="pojo.id != null"> #{pojo.id}, </if>
<if test="pojo.deptNo != null"> #{pojo.deptNo}, </if>
<if test="pojo.dname != null"> #{pojo.dname}, </if>
<if test="pojo.loc != null"> #{pojo.loc}, </if>
</trim>
</insert>
<!--auto generated Code-->
<insert id="insertList">
INSERT INTO dept(
<include refid="all_column"/>
)VALUES
<foreach collection="pojos" item="pojo" index="index" separator=",">
(
#{pojo.id},
#{pojo.deptNo},
#{pojo.dname},
#{pojo.loc}
)
</foreach>
</insert>
<!--auto generated Code-->
<update id="update">
UPDATE dept
<set>
<if test="pojo.id != null"> id = #{pojo.id}, </if>
<if test="pojo.deptNo != null"> dept_no = #{pojo.deptNo}, </if>
<if test="pojo.dname != null"> dname = #{pojo.dname}, </if>
<if test="pojo.loc != null"> loc = #{pojo.loc} </if>
</set>
WHERE id = #{pojo.id}
</update>
<!--auto generated Code-->
<select id="select" resultMap="AllColumnMap">
SELECT <include refid="all_column"/>
FROM dept
<where>
<if test="pojo.id != null"> AND id = #{pojo.id} </if>
<if test="pojo.deptNo != null"> AND dept_no = #{pojo.deptNo} </if>
<if test="pojo.dname != null"> AND dname = #{pojo.dname} </if>
<if test="pojo.loc != null"> AND loc = #{pojo.loc} </if>
</where>
LIMIT 1000
</select>
<!--auto generated Code-->
<delete id="delete">
DELETE FROM dept where id = #{pojo.id}
</delete>
</mapper>
生成的DAO文件:
package com.zt.dao;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import com.zt.pojo.Dept;
public interface DeptDao {
int insert(@Param("pojo") Dept pojo);
int insertList(@Param("pojos") List< Dept> pojo);
List<Dept> select(@Param("pojo") Dept pojo);
int update(@Param("pojo") Dept pojo);
}
生成的Service文件:
package com.zt.service;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import com.zt.pojo.Dept;
import com.zt.dao.DeptDao;
@Service
public class DeptService {
@Resource
private DeptDao deptDao;
public int insert(Dept pojo){
return deptDao.insert(pojo);
}
public int insertList(List< Dept> pojos){
return deptDao.insertList(pojos);
}
public List<Dept> select(Dept pojo){
return deptDao.select(pojo);
}
public int update(Dept pojo){
return deptDao.update(pojo);
}
}
生成的SQL文件:
-- auto Generated on 2018-04-03 11:41:56
-- DROP TABLE IF EXISTS `dept`;
CREATE TABLE dept(
`id` INTEGER(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
`dept_no` NUMBER(12) NOT NULL DEFAULT -1 COMMENT 'deptNo',
`dname` VARCHAR2(50) NOT NULL DEFAULT '' COMMENT 'dname',
`loc` VARCHAR2(50) NOT NULL DEFAULT '' COMMENT 'loc',
PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT 'dept';
grep console
控制檯彩色日誌, 可以自定義info, error 等等這些日誌等級的輸出顏色 自定義日誌顏色,idea控制檯可以彩色顯示各種級別的log,安裝完成後,在console中右鍵就能打開。
並且可以設置不同的日誌級別的顯示樣式。
Translation
翻譯插件
選中要翻譯的文本,鼠標右鍵或者快簡介Ctrl+Shift+Y 也可以
Alibaba Java Coding Guidelines
阿里巴巴代碼規範檢查插件,當然規範可以參考《阿里巴巴Java開發手冊》。
CamelCase
將不是駝峯格式的名稱,快速轉成駝峯格式,安裝好後,選中要修改的名稱,按快捷鍵shift+alt+u。
GenerateAllSetter
一鍵調用一個對象的所有set方法並且賦予默認值 在對象字段多的時候非常方便,在做項目時,每層都有各自的實體對象需要相互轉換,但是考慮BeanUtil.copyProperties()等這些工具的弊端,有些地方就需要手動的賦值時,有這個插件就會很方便,創建完對象後在變量名上面按Alt+Enter就會出來 generate all setter選項。
Rainbow Brackets
彩虹括號
MyBatis Log Plugin
把 mybatis 輸出的sql日誌還原成完整的sql語句。 將日誌輸出的sql語句中的問號 ? 替換成真正的參數值。可以選擇格式化sql 需要配合mybatis的開啓sql語句打印控制檯的配置如下:
<settings>
<!--打印sql語句-->
<setting name="logImpl" value="STDOUT_LOGGING" />
</settings>
自定義主題樣式
自定義IDEA工具欄
效果如圖所示
設置打開多個文件顯示在多行tab上
自定義快捷鍵
Code->Surround With... try..catch ..
Code->Completion->Basic 代碼提示
Code-->Generate... 代碼生成
Other-->new ... 新建文件/文件夾...