1、Global Configjava
-一、init文件web
##去掉表的tbl_前綴 #if($tableInfo.obj.name.startsWith("tbl_")) $!tableInfo.setName($tool.getClassName($tableInfo.obj.name.substring(4))) #end ##實現動態排除列 #set($temp = $tool.newHashSet("createTime","creator","updateTime","updator","delFlag")) #foreach($item in $temp) #set($newList = $tool.newArrayList()) #foreach($column in $tableInfo.fullColumn) #if($column.name!=$item) ##帶有反回值的方法調用時使用$tool.call來消除返回值 $tool.call($newList.add($column)) #end #end ##從新保存 $tableInfo.setFullColumn($newList) #end ##對importList進行篡改 #set($temp = $tool.newHashSet()) #foreach($column in $tableInfo.fullColumn) #if(!$column.type.startsWith("java.lang.")) ##帶有反回值的方法調用時使用$tool.call來消除返回值 $tool.call($temp.add($column.type)) #end #end ##覆蓋 #set($importList = $temp)
-二、define文件spring
##定義設置表名後綴的宏定義,調用方式:#setTableSuffix("Test") #macro(setTableSuffix $suffix) #set($tableName = $!tool.append($tableInfo.name, $suffix)) #end ##定義設置包名後綴的宏定義,調用方式:#setPackageSuffix("Test") #macro(setPackageSuffix $suffix) #if($suffix!="")package #end#if($tableInfo.savePackageName!="")$!{tableInfo.savePackageName}.#{end}$!suffix; #end ##定義直接保存路徑與文件名簡化的宏定義,調用方式:#save("/entity", ".java") #macro(save $path $fileName) $!callback.setSavePath($tool.append($tableInfo.savePath, $path)) $!callback.setFileName($tool.append($tableInfo.name, $fileName)) #end ##定義表註釋的宏定義,調用方式:#tableComment("註釋信息") #macro(tableComment $desc) /** * @Author Lee_Finn * @Date $!time.currTime() * @Desc null */ #end ##定義GET,SET方法的宏定義,調用方式:#getSetMethod($column) #macro(getSetMethod $column) public $!{tool.getClsNameByFullName($column.type)} get$!{tool.firstUpperCase($column.name)}() { return $!{column.name}; } public void set$!{tool.firstUpperCase($column.name)}($!{tool.getClsNameByFullName($column.type)} $!{column.name}) { this.$!{column.name} = $!{column.name}; } #end
-三、autoImport文件sql
##自動導入包(僅導入實體屬性須要的包,一般用於實體類) #foreach($import in $importList) import $!import; #end
-四、mybatisSupport文件數據庫
##針對Mybatis 進行支持,主要用於生成xml文件 #foreach($column in $tableInfo.fullColumn) ##儲存列類型 $tool.call($column.ext.put("sqlType", $tool.getField($column.obj.dataType, "typeName"))) #if($tool.newHashSet("java.lang.String").contains($column.type)) #set($jdbcType="VARCHAR") #elseif($tool.newHashSet("java.lang.Boolean", "boolean").contains($column.type)) #set($jdbcType="BOOLEAN") #elseif($tool.newHashSet("java.lang.Byte", "byte").contains($column.type)) #set($jdbcType="BYTE") #elseif($tool.newHashSet("java.lang.Integer", "int", "java.lang.Short", "short").contains($column.type)) #set($jdbcType="INTEGER") #elseif($tool.newHashSet("java.lang.Long", "long").contains($column.type)) #set($jdbcType="LONG INTEGER") #elseif($tool.newHashSet("java.lang.Float", "float", "java.lang.Double", "double").contains($column.type)) #set($jdbcType="NUMERIC") #elseif($tool.newHashSet("java.util.Date", "java.sql.Timestamp", "java.time.Instant", "java.time.LocalDateTime", "java.time.OffsetDateTime", " java.time.ZonedDateTime").contains($column.type)) #set($jdbcType="TIMESTAMP") #elseif($tool.newHashSet("java.sql.Date", "java.time.LocalDate").contains($column.type)) #set($jdbcType="TIMESTAMP") #else ##其餘類型 #set($jdbcType="OTHER") #end $tool.call($column.ext.put("jdbcType", $jdbcType)) #end ##定義宏,查詢全部列 #macro(allSqlColumn)#foreach($column in $tableInfo.fullColumn)$column.obj.name#if($velocityHasNext), #end#end#end
2、Template Settingapache
-一、entity.javamybatis
##引入宏定義 $!define $!init ##使用宏定義設置回調(保存位置與文件後綴) #save("/entity", ".java") ##使用宏定義設置包後綴 #setPackageSuffix("entity") ##使用全局變量實現默認包導入 $!autoImport import java.io.Serializable; import com.qf.total.relatedVo.BaseModel; ##使用宏定義實現類註釋信息 #tableComment("實體類") public class $!{tableInfo.name} extends BaseModel implements Serializable { private static final long serialVersionUID = $!tool.serial(); #foreach($column in $tableInfo.fullColumn) #if(${column.comment}) /** * ${column.comment} */#end private $!{tool.getClsNameByFullName($column.type)} $!{column.name}; #end #foreach($column in $tableInfo.fullColumn) ##使用宏定義實現get,set方法 #getSetMethod($column) #end }
-二、dao.java文件app
##引入宏定義 $!init ##定義初始變量 #set($tableName = $tool.append($tableInfo.name, "Mapper")) ##設置回調 $!callback.setFileName($tool.append($tableName, ".java")) $!callback.setSavePath($tool.append($tableInfo.savePath, "/mapper")) ##拿到主鍵 #if(!$tableInfo.pkColumn.isEmpty()) #set($pk = $tableInfo.pkColumn.get(0)) #end #if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}mapper; import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name}; import org.apache.ibatis.annotations.Param; import java.util.List; /** * @author $!author * @Date $!time.currTime() * @Desc null */ public interface $!{tableName} { /** * 經過$tool.append($!pk.name)查詢 * * @param $!pk.name * @return */ public $!{tableInfo.name} get$!{tableInfo.name}ById($!pk.shortType $!pk.name); /** * 經過對象查詢 * * @param $!tool.firstLowerCase($!{tableInfo.name}) * @return */ public List<$!{tableInfo.name}> getAll$!{tableInfo.name}s($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})); /** * 經過id更改對象 * * @param $!tool.firstLowerCase($!{tableInfo.name}) * @return */ public int update$!{tableInfo.name}ById($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})); /** * 批量更改對象 * * @param $!tool.firstLowerCase($!{tableInfo.name})s * @return */ public int update$!{tableInfo.name}List(List<$!{tableInfo.name}> $!tool.firstLowerCase($!{tableInfo.name})s); /** * 經過$tool.append($!pk.name)刪除 * * @param $!pk.name * @return */ public int delete$!{tableInfo.name}ById($!pk.shortType $!pk.name); /** * 經過$tool.append($!pk.name,"s")批量刪除 * * @param $tool.append($!pk.name,"s") * @return */ public int delete$!{tableInfo.name}ByIds($!pk.shortType $tool.append($!pk.name,"s")); /** * 新增數據 * * @param $!tool.firstLowerCase($!{tableInfo.name}) * @return */ public int insert$!{tableInfo.name}($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})); /** * 批量新增數據 * * @param $!tool.firstLowerCase($!{tableInfo.name})s * @return */ public int insert$!{tableInfo.name}List(List<$!{tableInfo.name}> $!tool.firstLowerCase($!{tableInfo.name})s); }
-三、service.javaide
##引入宏定義 $!init ##定義初始變量 #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; import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name}; import java.util.List; /** * @author $!author * @Date $!time.currTime() * @Desc null */ public interface $!{tableName} { /** * 經過$tool.append($!pk.name)查詢 * * @param $!pk.name * @return */ public $!{tableInfo.name} get$!{tableInfo.name}ById($!pk.shortType $!pk.name) throws Exception; /** * 經過對象查詢 * * @param $!tool.firstLowerCase($!{tableInfo.name}) * @return */ public List<$!{tableInfo.name}> getAll$!{tableInfo.name}s($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})) throws Exception; /** * 經過id更改對象 * * @param $!tool.firstLowerCase($!{tableInfo.name}) * @return */ public int update$!{tableInfo.name}ById($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})) throws Exception; /** * 批量更改對象 * * @param $!tool.firstLowerCase($!{tableInfo.name})s * @return */ public int update$!{tableInfo.name}List(List<$!{tableInfo.name}> $!tool.firstLowerCase($!{tableInfo.name})s) throws Exception; /** * 經過$tool.append($!pk.name)刪除 * * @param $!pk.name * @return */ public int delete$!{tableInfo.name}ById($!pk.shortType $!pk.name) throws Exception; /** * 經過$tool.append($!pk.name,"s")批量刪除 * * @param $tool.append($!pk.name,"s") * @return */ public int delete$!{tableInfo.name}ByIds($!pk.shortType $tool.append($!pk.name,"s")) throws Exception; /** * 新增數據 * * @param $!tool.firstLowerCase($!{tableInfo.name}) * @return */ public int insert$!{tableInfo.name}($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})) throws Exception; /** * 批量新增數據 * * @param $!tool.firstLowerCase($!{tableInfo.name})s * @return */ public int insert$!{tableInfo.name}List(List<$!{tableInfo.name}> $!tool.firstLowerCase($!{tableInfo.name})s) throws Exception; }
-4、serviceImpl文件this
##引入宏定義 $!init ##定義初始變量 #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; import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name}; import $!{tableInfo.savePackageName}.mapper.$!{tableInfo.name}Mapper; import $!{tableInfo.savePackageName}.service.I$!{tableInfo.name}Service; import org.springframework.stereotype.Service; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; import com.qf.commons.utils.UUIDGenerateUtil; import javax.annotation.Resource; import java.util.List; import java.util.Date; /** * @author $!author * @Date $!time.currTime() * @Desc null */ @Service public class $!{tableName} implements I$!{tableInfo.name}Service { @Resource private $!{tableInfo.name}Mapper $!tool.firstLowerCase($!{tableInfo.name})Mapper; @Override public $!{tableInfo.name} get$!{tableInfo.name}ById($!pk.shortType $!pk.name) throws Exception{ if(StringUtils.isNotBlank($!pk.name)){ return this.$!{tool.firstLowerCase($!{tableInfo.name})}Mapper.get$!{tableInfo.name}ById($!pk.name); }else { return null; } } @Override public List<$!{tableInfo.name}> getAll$!{tableInfo.name}s($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})) throws Exception{ if(null != $!tool.firstLowerCase($!{tableInfo.name})){ return this.$!{tool.firstLowerCase($!{tableInfo.name})}Mapper.getAll$!{tableInfo.name}s($!tool.firstLowerCase($!{tableInfo.name})); }else{ return null; } } @Override public int update$!{tableInfo.name}ById($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})) throws Exception{ if(null != $!tool.firstLowerCase($!{tableInfo.name})){ return $!{tool.firstLowerCase($!{tableInfo.name})}Mapper.update$!{tableInfo.name}ById($!tool.firstLowerCase($!{tableInfo.name})); }else { return 0; } } @Override public int update$!{tableInfo.name}List(List<$!{tableInfo.name}> $!tool.firstLowerCase($!{tableInfo.name})s) throws Exception{ if(CollectionUtils.isNotEmpty($!tool.firstLowerCase($!{tableInfo.name})s)){ for($!{tableInfo.name} temp : $!tool.firstLowerCase($!{tableInfo.name})s){ temp.setUpdateTime(new Date()); } return $!{tool.firstLowerCase($!{tableInfo.name})}Mapper.update$!{tableInfo.name}List($!tool.firstLowerCase($!{tableInfo.name})s); }else { return 0; } } @Override public int delete$!{tableInfo.name}ById($!pk.shortType $!pk.name) throws Exception{ if(StringUtils.isNotBlank($!pk.name)){ return $!{tool.firstLowerCase($!{tableInfo.name})}Mapper.delete$!{tableInfo.name}ById($!pk.name); }else{ return 0; } } @Override public int delete$!{tableInfo.name}ByIds($!pk.shortType $tool.append($!pk.name,"s")) throws Exception{ if(StringUtils.isNotBlank($tool.append($!pk.name,"s"))){ return $!{tool.firstLowerCase($!{tableInfo.name})}Mapper.delete$!{tableInfo.name}ByIds($tool.append($!pk.name, "s")); }else{ return 0; } } @Override public int insert$!{tableInfo.name}($!{tableInfo.name} temp) throws Exception{ if(null != temp){ temp.setCreateTime(new Date()); temp.setUpdateTime(new Date()); if (StringUtils.isBlank(temp.getId())){ temp.setId(UUIDGenerateUtil.generate()); } return $!{tool.firstLowerCase($!{tableInfo.name})}Mapper.insert$!{tableInfo.name}(temp); }else{ return 0; } } @Override public int insert$!{tableInfo.name}List(List<$!{tableInfo.name}> $!tool.firstLowerCase($!{tableInfo.name})s) throws Exception{ if(CollectionUtils.isNotEmpty($!tool.firstLowerCase($!{tableInfo.name})s)){ for($!{tableInfo.name} temp : $!tool.firstLowerCase($!{tableInfo.name})s){ temp.setCreateTime(new Date()); temp.setUpdateTime(new Date()); if (StringUtils.isBlank(temp.getId())){ temp.setId(UUIDGenerateUtil.generate()); } } return $!{tool.firstLowerCase($!{tableInfo.name})}Mapper.insert$!{tableInfo.name}List($!tool.firstLowerCase($!{tableInfo.name})s); }else { return 0; } } }
-五、controller.java文件
##引入宏定義 $!init ##定義初始變量 #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}.entity.$!{tableInfo.name}; import $!{tableInfo.savePackageName}.service.I$!{tableInfo.name}Service; import org.springframework.web.bind.annotation.*; import org.springframework.stereotype.Controller; import javax.annotation.Resource; /** * @author $!author * @Date $!time.currTime() * @Desc null */ @Controller @RequestMapping("$!tool.firstLowerCase($tableInfo.name)") public class $!{tableName} { /** * 服務對象 */ @Resource private I$!{tableInfo.name}Service $!tool.firstLowerCase($tableInfo.name)Service; }
-六、mapper.xml
##引入宏定義 $!init ##引入mybatis支持 $!mybatisSupport ##設置保存名稱與保存位置 $!callback.setFileName($tool.append($!{tableInfo.name}, "Mapper.xml")) $!callback.setSavePath($tool.append($modulePath, "/src/main/resources/mapperFiles")) ##拿到主鍵 #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}.mapper.$!{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> <!--要查詢顯示的字段--> <sql id="Base_Column_List"> #allSqlColumn() </sql> <!--要條件查詢的字段--> <sql id="Column_Query"> #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 </sql> <!--要更新的字段一--> <sql id="Column_Update_One"> #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 </sql> <!--要更新的字段二--> <sql id="Column_Update_Two"> #foreach($column in $tableInfo.otherColumn) <if test="item.$!column.name != null#if($column.type.equals("java.lang.String")) and item.$!column.name != ''#end"> $!column.obj.name = #{item.$!column.name}, </if> #end </sql> <!--要新增的字段--> <sql id="Column_Set"> #foreach($column in $tableInfo.fullColumn) <if test="$!column.name != null#if($column.type.equals("java.lang.String")) and $!column.name != ''#end"> $!column.obj.name, </if> #end </sql> <!--要賦值的字段--> <sql id="Column_Value_One"> #foreach($column in $tableInfo.fullColumn) <if test="$!column.name != null#if($column.type.equals("java.lang.String")) and $!column.name != ''#end"> #{$!column.name}, </if> #end </sql> <!--要賦值的字段二--> <sql id="Column_Value_Two"> #foreach($column in $tableInfo.fullColumn) <if test="item.$!column.name != null#if($column.type.equals("java.lang.String")) and item.$!column.name != ''#end"> #{item.$!column.name}, </if> #end </sql> <!--經過$tool.append($!pk.name)查詢--> <select id="get$!{tableInfo.name}ById" resultMap="$!{tableInfo.name}Map"> select <include refid="Base_Column_List"/> from $!tableInfo.obj.name where $!pk.obj.name = #{$!pk.name} </select> <!--經過對象查詢--> <select id="getAll$!{tableInfo.name}s" parameterType="$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}" resultMap="$!{tableInfo.name}Map"> select <include refid="Base_Column_List"/> from $!tableInfo.obj.name where 1=1 <include refid="Column_Query"/> </select> <!--經過id更改對象--> <update id="update$!{tableInfo.name}ById" parameterType="$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}"> update $!tableInfo.obj.name <set> <include refid="Column_Update_One"/> </set> where $!pk.obj.name = #{$!pk.name} </update> <!--批量更改對象--> <update id="update$!{tableInfo.name}List" parameterType="java.util.List"> <foreach collection="list" item="item" separator=";"> update $!tableInfo.obj.name <set> <include refid="Column_Update_Two"/> </set> </foreach> </update> <!--經過$tool.append($!pk.name)刪除--> <delete id="delete$!{tableInfo.name}ById"> delete from $!{tableInfo.obj.name} where $!pk.obj.name = #{$!pk.name} </delete> <!--經過$tool.append($!pk.name,"s")批量刪除--> <delete id="delete$!{tableInfo.name}ByIds"> delete from $!{tableInfo.obj.name} where $!pk.obj.name in ($tool.append($!pk.name,"s")) </delete> <!--新增數據--> <insert id="insert$!{tableInfo.name}" parameterType="$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}"> insert into $!{tableInfo.obj.name} <trim prefix="(" suffix=")" suffixOverrides=","> <include refid="Column_Set"/> </trim> <trim prefix="values (" suffix=")" suffixOverrides=","> <include refid="Column_Value_One"/> </trim> </insert> <!--批量新增數據--> <insert id="insert$!{tableInfo.name}List" parameterType="java.util.List"> insert into $!{tableInfo.obj.name} <trim prefix="(" suffix=")" suffixOverrides=","> <include refid="Column_Set"/> </trim> values <foreach collection="list" item="item" index="index" separator=","> <trim prefix="(" suffix=")" suffixOverrides=","> <include refid="Column_Value_Two"/> </trim> </foreach> </insert> </mapper>
EasyCode 實時調試不瞭解決方法:重啓Idea,點擊關聯的數據庫刷新一下就能夠了