IDEA插件Easy Code自定义模板
Posted xiaogblog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IDEA插件Easy Code自定义模板相关的知识,希望对你有一定的参考价值。
一、dao模板
##定义初始变量
#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}.entity.$!{tableInfo.name};
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* $!{tableInfo.comment}($!{tableInfo.name})表数据库访问层
*
* @author xiaoG
* @since $!time.currTime()
*/
public interface $!{tableName} {
/**
* 通过ID查询单条数据
*
* @param $!pk.name 主键
* @return 实例对象
*/
$!{tableInfo.name} findById($!pk.shortType $!pk.name);
/**
* 通过实体不为空的属性作为筛选条件查询
*
* @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
* @return 对象列表
*/
List<$!{tableInfo.name}> findBy$!{tableInfo.name}($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));
/**
* 新增实体属性不为null的列
*
* @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
* @return 影响行数
*/
int insert($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));
/**
* 批量新增所有列,列表长度不能为0,且列表id统一为null或者统一不为null
*
* @param list 实例对象list集合
* @return 影响行数
*/
int insertList(List<$!{tableInfo.name}> list);
/**
* 通过主键修改实体属性不为null的列
*
* @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
* @return 影响行数
*/
int update($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));
/**
* 通过主键修改实体列表,列表长度不能为0
* 注意:当实体属性为null时,对应的列也会别更新为null
*
* @param list 实例对象
* @return 影响行数
*/
int updateBatch(List<$!{tableInfo.name}> list);
/**
* 通过主键删除数据
*
* @param $!pk.name 主键
* @return 影响行数
*/
int deleteById($!pk.shortType $!pk.name);
/**
* 通过实体非空属性批量删除
*
* @param $!tool.firstLowerCase($!{tableInfo.name}) 实体
* @return 影响行数
*/
int deleteBatchBy$!{tableInfo.name}($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));
/**
* 通过主键列表删除,列表长度不能为0
*
* @param list 主键列表
* @return 影响行数
*/
int deleteBatchByIds(List<$!pk.shortType> list);
}
二、mapper.xml模板
##引入mybatis支持
$!mybatisSupport
##设置保存名称与保存位置
$!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.$!{tableInfo.name}" id="$!{tableInfo.name}ResultMap">
#foreach($column in $tableInfo.fullColumn)
<result property="$!column.name" column="$!column.obj.name" jdbcType="$!column.ext.jdbcType"/>
#end
</resultMap>
<sql id="table_field">
#allSqlColumn()
</sql>
<!--通过Id查询单个-->
<select id="findById" resultMap="$!{tableInfo.name}ResultMap">
select
<include refid="table_field" />
from $!{tableInfo.obj.parent.name}.$!tableInfo.obj.name
where $!pk.obj.name = #{$!pk.name}
</select>
<!--通过实体不为空的属性作为筛选条件查询-->
<select id="findBy$!{tableInfo.name}" resultMap="$!{tableInfo.name}ResultMap">
select
<include refid="table_field" />
from $!{tableInfo.obj.parent.name}.$!tableInfo.obj.name
<where>
#foreach($column in $tableInfo.fullColumn)
<if test="$!column.name != null">
and $!column.obj.name = #{$!column.name}
</if>
#end
</where>
</select>
<!--新增实体属性不为null的列-->
<insert id="insert" keyProperty="$!pk.name" useGeneratedKeys="true">
insert into $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name}
<trim prefix="(" suffix=")" suffixOverrides=",">
#foreach($column in $tableInfo.fullColumn)
<if test="$!column.name != null">
$!column.obj.name,
</if>
#end
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
#foreach($column in $tableInfo.fullColumn)
<if test="$!column.name != null">
#{$!column.name},
</if>
#end
</trim>
</insert>
<!--批量新增所有列,列表长度不能为0,且列表id统一为null或者统一不为null-->
<insert id="insertList" keyProperty="$!pk.name" useGeneratedKeys="true" parameterType="list">
insert into $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name}
(<if test="$!pk.name != null">$!pk.obj.name,</if>#foreach($column in $tableInfo.otherColumn)$!{column.obj.name}#if($velocityHasNext), #end#end)
values
<foreach item="item" collection="list" separator="," open="" close="" index="index">
(<if test="$!pk.name != null">#{$!pk.name},</if>#foreach($column in $tableInfo.otherColumn)#{$!{column.name}}#if($velocityHasNext), #end#end)
</foreach>
</insert>
<!--通过主键修改实体属性不为null的列-->
<update id="update">
update $!{tableInfo.obj.parent.name}.$!{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>
<!--通过主键修改实体列表,列表长度不能为0,注意:当实体属性为null时,对应的列也会别更新为null-->
<update id="updateBatch" parameterType="list">
update $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name} set
#foreach($column in $tableInfo.otherColumn)
<foreach item="item" collection="list" separator="," open="" close="" index="index">
$!column.obj.name = CASE
WHEN #{item.$!pk.name} THEN #{item.$!column.name}
END
</foreach>
#end
where $!pk.obj.name in
<foreach item="item" collection="list" separator="," open="(" close=")" index="index">
#{item.$!pk.name}
</foreach>
</update>
<!--通过主键删除-->
<delete id="deleteById">
delete from $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name} where $!pk.obj.name = #{$!pk.name}
</delete>
<!--通过实体非空属性删除-->
<delete id="deleteBatchBy$!{tableInfo.name}">
delete from $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name}
<where>
#foreach($column in $tableInfo.otherColumn)
<if test="$!column.name != null">
and $!column.obj.name = #{$!column.name}
</if>
#end
</where>
</delete>
<!--通过主键列表删除,列表长度不能为0-->
<delete id="deleteBatchByIds" parameterType="list">
delete from $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name} where $!pk.obj.name in
<foreach item="item" collection="list" separator="," open="(" close=")" index="index">
#{item}
</foreach>
</delete>
</mapper>
以上是关于IDEA插件Easy Code自定义模板的主要内容,如果未能解决你的问题,请参考以下文章