IDEA插件EasyCode及MyBatis最优配置步骤详解
作者:混〔IT〕的小学生 发布时间:2023-11-09 03:19:19
标签:idea,插件,EasyCode,MyBatis,配置
具体安装步骤,不再赘述,仅附上个人工作、学习中的对 EasyCode 的详细配置。
插件链接地址:https://gitee.com/makejava/EasyCode
Type Mapper
varchar(\(\d+\))?java.lang.String
char(\(\d+\))?java.lang.String
textjava.lang.String
decimal(\(\d+\))?java.lang.Double
decimal(\(\d+,\d+\))?java.lang.Double
integerjava.lang.Integer
int(\(\d+\))?java.lang.Integer
int4java.lang.Integer
int8java.lang.Long
bigint(\(\d+\))?java.lang.Long
datetime(\(\d+\))?java.time.LocalDateTime
timestampjava.time.LocalDateTime
booleanjava.lang.Boolean
tinyint(\(\d+\))?java.lang.Integer
smallint(\(\d+\))?java.lang.Integer
double(\(\d+\))?java.lang.Double
double(\(\d+,\d+\))?java.lang.Double
Template Setting
entity.java
##初始化定义
$!init
##引入宏定义
$!define
##使用宏定义设置回调(保存位置与文件后缀)
#save("/entity", ".java")
##使用宏定义设置包后缀
#setPackageSuffix("entity")
##使用全局变量实现默认包导入
$!autoImport
import java.io.Serializable;
##使用宏定义实现类注释信息
#tableComment("实体类")
public class $!{tableInfo.name} 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
public $!{tableInfo.name}() {
}
public $!{tableInfo.name}(#foreach($column in $tableInfo.fullColumn)$!{tool.getClsNameByFullName($column.type)} $!column.name #if($velocityCount != $tableInfo.fullColumn.size()), #end#end) {
#foreach($column in $tableInfo.fullColumn) this.$!column.name = $!column.name;#end
}
#foreach($column in $tableInfo.fullColumn)
##使用宏定义实现get,set方法
#getSetMethod($column)
#end
@Override
public String toString() {
StringBuilder str = new StringBuilder();
str.append("$!{tableInfo.name}{");
#foreach( $column in $tableInfo.fullColumn )
str.append("$!column.name=").append(this.$!column.name)#if( $foreach.hasNext ).append(", ")#end;
#end
str.append('}');
return str.toString();
}
}
DTO.java
##导入宏定义
$!define
##保存文件(宏定义)
#save("/dto", "DTO.java")
##包路径(宏定义)
#setPackageSuffix("dto")
##自动导入包(全局变量)
$!autoImport
##import com.baomidou.mybatisplus.extension.activerecord.Model;
import java.io.Serializable;
import lombok.Data;
##import com.baomidou.mybatisplus.annotation.IdType;
##import com.baomidou.mybatisplus.annotation.TableId;
##表注释(宏定义)
#tableComment("DTO")
@Data
public class $!{tableInfo.name}DTO 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
}
mapper.java
##定义初始变量
#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.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
#set($time=$!time.currTime())
#set($time=$time.substring(0,11))
#set($time=$time.replace("-","/"))
/**
* <p>
* $!{tableInfo.comment}($!{tableInfo.name})表数据库访问层
* </p>
*
* @author:$!author
* @date:$!time
*/
@Mapper
public interface $!{tableName} {
/**
* 通过ID查询单条数据
*
* @param $!pk.name 主键
* @return 实例对象
*/
$!{tableInfo.name} queryById($!pk.shortType $!pk.name);
/**
* 通过实体作为筛选条件查询
*
* @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
* @return 对象列表
*/
List<$!{tableInfo.name}> queryAll($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));
/**
* 通过实体作为筛选条件查询条数
*
* @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
* @return 条数
*/
int queryAllCount($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));
/**
* 新增数据
*
* @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
* @return 影响行数
*/
int insert($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));
/**
* 新增选择列
*
* @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
* @return 影响行数
*/
int insertSelective($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));
/**
* 修改数据
*
* @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
* @return 影响行数
*/
int update($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));
/**
* 通过主键删除数据
*
* @param $!pk.name 主键
* @return 影响行数
*/
int deleteById($!pk.shortType $!pk.name);
/**
* 批量新增
* @param recordList
* @return 影响行数
*/
int batchInsert(@Param("recordList") List<$!{tableInfo.name}> recordList);
/**
* 批量修改
* @param recordList
* @return 影响行数
*/
int batchUpdate(@Param("recordList") List<$!{tableInfo.name}> recordList);
/**
* 根据主键批量删除
* @param ids 主键s
* @return 影响行数
*/
int batchDelete(@Param("ids") String[] ids);
}
serviceImpl.java
##初始化定义
$!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}.mapper.$!{tableInfo.name}Mapper;
import $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Autowired;
#set($time=$!time.currTime())
#set($time=$time.substring(0,11))
#set($time=$time.replace("-","/"))
/**
* <p>
* $!{tableInfo.comment}($!{tableInfo.name})表服务实现类
* </p>
*
* @author:$!author
* @date:$!time
*/
@Service("/$!tool.firstLowerCase($!{tableInfo.name})Service")
public class $!{tableName} implements $!{tableInfo.name}Service {
@Autowired
private $!{tableInfo.name}Mapper $!tool.firstLowerCase($!{tableInfo.name})Mapper;
}
service.java
##定义初始变量
#set($tableName = $tool.append($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;
#set($time=$!time.currTime())
#set($time=$time.substring(0,11))
#set($time=$time.replace("-","/"))
/**
* <p>
* $!{tableInfo.comment}($!{tableInfo.name})表服务接口
* </p>
*
* @author:$!author
* @date:$!time
*/
public interface $!{tableName} {
}
controller.java
##定义初始变量
#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}.service.$!{tableInfo.name}Service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
#set($time=$!time.currTime())
#set($time=$time.substring(0,11))
#set($time=$time.replace("-","/"))
/**
* <p>
* $!{tableInfo.comment}($!{tableInfo.name})表控制层
* </p>
*
* @author:$!author
* @date:$!time
*/
@RestController
@RequestMapping("/$!tool.firstLowerCase($tableInfo.name)")
public class $!{tableName} {
@Autowired
private $!{tableInfo.name}Service $!tool.firstLowerCase($tableInfo.name)Service;
}
mysql-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}.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.name" jdbcType="$!column.ext.jdbcType"/>
#end
</resultMap>
<!-- 伪列 -->
<sql id="columns">
#foreach($column in $tableInfo.fullColumn)
a.$!column.obj.name AS $!column.name #if($velocityCount != $tableInfo.fullColumn.size()),#end
#end
</sql>
<!-- 查询条件 -->
<sql id="whereSql">
<where>
#foreach($column in $tableInfo.fullColumn)
<if test="$!column.name != null#if($column.type.equals("java.lang.String")) and $!column.name != ''#end">
and a.$!column.obj.name = #{$!column.name}
</if>
#end
</where>
</sql>
<!-- 通过ID查询单条数据 -->
<select id="queryById" resultType="$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}">
select
<include refid="columns"/>
from $!{tableInfo.obj.parent.name}.$!tableInfo.obj.name a
where a.$!pk.obj.name = #{$!pk.name}
</select>
<!-- 通过实体作为筛选条件查询 -->
<select id="queryAll" resultType="$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}">
select
<include refid="columns"/>
from $!{tableInfo.obj.parent.name}.$!tableInfo.obj.name a
<include refid="whereSql" />
</select>
<!-- 通过实体作为筛选条件查询条数 -->
<select id="queryAllCount" resultType="java.lang.Integer">
select
count(1)
from $!{tableInfo.obj.parent.name}.$!tableInfo.obj.name a
<include refid="whereSql" />
</select>
<!-- 新增数据 -->
<insert id="insert" keyProperty="$!pk.name" useGeneratedKeys="true">
insert into $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name}(#foreach($column in $tableInfo.fullColumn)$!column.obj.name#if($velocityHasNext), #end#end)
values (#foreach($column in $tableInfo.fullColumn)#{$!{column.name}}#if($velocityHasNext), #end#end)
</insert>
<!-- 新增选择列 -->
<insert id="insertSelective" 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#if($column.type.equals("java.lang.String")) and $!column.name != ''#end">
$!column.obj.name,
</if>
#end
</trim>
<trim prefix="values (" suffix=")" suffixOverrides="," >
#foreach($column in $tableInfo.fullColumn)
<if test="$!column.name != null#if($column.type.equals("java.lang.String")) and $!column.name != ''#end">
#{$!column.name,jdbcType=$!column.ext.jdbcType},
</if>
#end
</trim>
</insert>
<!-- 修改数据 -->
<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>
<!-- 通过主键删除数据 -->
<delete id="deleteById">
delete from $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name} where $!pk.obj.name = #{$!pk.name}
</delete>
<!-- 批量新增 -->
<insert id="batchInsert" parameterType="java.util.List">
insert into $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name} (
#foreach($column in $tableInfo.fullColumn)$!column.obj.name#if($velocityHasNext), #end#end
)
values
<foreach collection="recordList" index="index" item="item" separator=",">
(
#foreach($column in $tableInfo.fullColumn)#{item.$!{column.name}}#if($velocityHasNext), #end#end
)
</foreach>
</insert>
<!-- 批量修改 -->
<update id="batchUpdate" parameterType="java.util.List">
update $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name}
<trim prefix="set" suffixOverrides=",">
#foreach($column in $tableInfo.otherColumn)
<trim prefix="$!column.obj.name =case $!pk.obj.name" suffix="end,">
<foreach collection="recordList" index="index" item="item">
<if test="item.$!column.name !=null ">
when #{item.$!pk.name} then #{item.$!column.name}
</if>
<if test="item.$!column.name ==null ">
when #{item.$!pk.name} then $!{tableInfo.obj.name}.$!column.obj.name
</if>
</foreach>
</trim>
#end
</trim>
where $!pk.obj.name in(
<foreach collection="recordList" index="index" item="item" separator=",">
#{item.$!pk.name}
</foreach>
)
</update>
<!-- 根据主键批量删除 -->
<delete id="batchDelete" parameterType="java.lang.String">
delete from $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name} where $!pk.obj.name in (
<foreach collection="ids" index="index" item="item" separator=",">
#{item}
</foreach>
)
</delete>
</mapper>
oracle-mapper.xml
##引入mybatis支持
$!mybatisSupport
##设置保存名称与保存位置
$!callback.setFileName($tool.append($!{tableInfo.name}, "Mapper.xml"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/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}.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.name" jdbcType="$!column.ext.jdbcType"/>
#end
</resultMap>
<!-- 伪列 -->
<sql id="columns">
#foreach($column in $tableInfo.fullColumn)
a.$!column.obj.name AS $!column.name #if($velocityCount != $tableInfo.fullColumn.size()),#end
#end
</sql>
<!-- 查询条件 -->
<sql id="whereSql">
<where>
#foreach($column in $tableInfo.fullColumn)
<if test="$!column.name != null#if($column.type.equals("java.lang.String")) and $!column.name != ''#end">
and a.$!column.obj.name = #{$!column.name}
</if>
#end
</where>
</sql>
<!-- 通过ID查询单条数据 -->
<select id="queryById" resultType="$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}">
select
<include refid="columns"/>
from $!{tableInfo.obj.parent.name}.$!tableInfo.obj.name a
where a.$!pk.obj.name = #{$!pk.name}
</select>
<!-- 通过实体作为筛选条件查询 -->
<select id="queryAll" resultType="$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}">
select
<include refid="columns"/>
from $!{tableInfo.obj.parent.name}.$!tableInfo.obj.name a
<include refid="whereSql" />
</select>
<!-- 通过实体作为筛选条件查询条数 -->
<select id="queryAllCount" resultType="java.lang.Integer">
select
count(1)
from $!{tableInfo.obj.parent.name}.$!tableInfo.obj.name a
<include refid="whereSql" />
</select>
<!-- 新增数据 -->
<insert id="insert" keyProperty="$!pk.name" useGeneratedKeys="true">
insert into $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name}(#foreach($column in $tableInfo.fullColumn)$!column.obj.name#if($velocityHasNext), #end#end)
values (#foreach($column in $tableInfo.fullColumn)#{$!{column.name}}#if($velocityHasNext), #end#end)
</insert>
<!-- 新增选择列 -->
<insert id="insertSelective" 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#if($column.type.equals("java.lang.String")) and $!column.name != ''#end">
$!column.obj.name,
</if>
#end
</trim>
<trim prefix="values (" suffix=")" suffixOverrides="," >
#foreach($column in $tableInfo.fullColumn)
<if test="$!column.name != null#if($column.type.equals("java.lang.String")) and $!column.name != ''#end">
#{$!column.name,jdbcType=$!column.ext.jdbcType},
</if>
#end
</trim>
</insert>
<!-- 修改数据 -->
<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>
<!-- 通过主键删除数据 -->
<delete id="deleteById">
delete from $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name} where $!pk.obj.name = #{$!pk.name}
</delete>
<!-- 批量新增 -->
<insert id="batchInsert" parameterType="java.util.List">
insert into $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name} (
#foreach($column in $tableInfo.fullColumn)$!column.obj.name#if($velocityHasNext), #end#end
)
(
<foreach collection="recordList" index="index" item="item" separator=",">
(
select
#foreach($column in $tableInfo.fullColumn)#{item.$!{column.name}}#if($velocityHasNext), #end#end
from dual
)
</foreach>
)
</insert>
<!-- 批量修改 -->
<update id="batchUpdate" parameterType="java.util.List">
begin
<foreach collection="recordList" index="index" item="item" separator=";">
update $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name}
<set>
#foreach($column in $tableInfo.otherColumn)
$!column.obj.name = #{item.$!column.name}
#end
</set>
where ID = #{item.$!pk.obj.name}
</foreach>
;end;
</update>
<!-- 根据主键批量删除 -->
<delete id="batchDelete" parameterType="java.lang.String">
delete from $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name} where $!pk.obj.name in (
<foreach collection="ids" index="index" item="item" separator=",">
#{item}
</foreach>
)
</delete>
</mapper>
Global Config
init
##初始化区域
##去掉表的t_前缀
#if($tableInfo.obj.name.startsWith("t_"))
$!tableInfo.setName($tool.getClassName($tableInfo.obj.name.substring(2)))
#end
##参考阿里巴巴开发手册,POJO 类中布尔类型的变量,都不要加 is 前缀,否则部分框架解析会引起序列化错误
#foreach($column in $tableInfo.fullColumn)
#if($column.name.startsWith("is") && $column.type.equals("java.lang.Boolean"))
$!column.setName($tool.firstLowerCase($column.name.substring(2)))
#end
#end
##实现动态排除列
#set($temp = $tool.newHashSet("testCreateTime", "otherColumn"))
#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
##(Velocity宏定义)
##定义设置表名后缀的宏定义,调用方式:#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)
#set($time=$!time.currTime())
#set($time=$time.substring(0,11))
#set($time=$time.replace("-","/"))
/**
* <p>
* $!{tableInfo.comment}($!{tableInfo.name})$desc
* </p>
*
* @author:$!author
* @date:$!time
*/
#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}) {
#if(${column.type.equals("java.lang.String")})this.$!{column.name} = $!{column.name}== null ? null : $!{column.name}.trim();
#else this.$!{column.name} = $!{column.name};#end}
#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="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
来源:https://blog.csdn.net/BUG_call110/article/details/103503730


猜你喜欢
- 一、背景我们都知道 http 协议只能浏览器单方面向服务器发起请求获得响应,服务器不能主动向浏览器推送消息。想要实现浏览器的主动推送有两种主
- 1.指针指针就是地址(即一个数据)。2.指针变量2.1概念(1)指针变量是变量,是变量在内存中就会开辟空间,会有自己对应的的地址,有自己的变
- 一、MyBatis Plus 介绍MyBatis Plus 是国内人员开发的 MyBatis 增强工具,在 MyBatis 的基础上只做增强
- 1.设置url-pattern为*.do(最为常见的方式)只要你的请求url中包含配置的url-pattern,该url就可以到达Dispa
- 本文实例为大家分享了Android实现扫描和生成二维码的具体代码,供大家参考,具体内容如下目标效果:该例子可以扫描二维码和条形码,扫描后会将
- 一、文件上传概述实现Web开发中的文件上传功能,需要两步操作:1、在Web页面中添加上传输入项 <form
- Java集合框架集合概念:对象的容器,定义了对多个对象进行操作的常用方法。可实现数组的功能。集合和数组的区别:数组长度固定,集合长度不固定数
- 今天看到,java的NIO里面的SelectionKey,处理完key后,调用keyIterator.remove(); 对Iterator
- 本文实例讲述了Java中final与继承操作。分享给大家供大家参考,具体如下:一 点睛final在Java中被称为终结器。1 在基类的某个方
- 前言本文提供三种不同的解决方式,也是三种不同的情况和思路我的问题是在springboot整合了xxl-job一段时间后出现的。如果你程序里集
- 上移动端的测试课,老师和同学们用的都是eclipse, 只有我一个人用的是idea(用了两款软件之后觉得IDEA更好),真的太难了,配置
- Interval操作符:用于创建Observable,跟TimerTask类似,用于周期性发送信息,是一个可以指定线程的TimerTask首
- 一、需要导入的jar1.commons-collections4-4.1.jar2.poi-3.17-beta1.jar3.poi-ooxm
- 本文实例为大家分享了抢红包源码,供大家参考,具体内容如下1. 正确获取红包流程2. 软件介绍2.1 效果图:2.2 功能介绍2.2.1 账号
- 概要笔者近期做到对天气预报JSON数据解析,在此小记。天气预报接口:http://wthrcdn.etouch.cn/weather_min
- 在学习操作系统这本书的时候,我们使用的是汤小丹老师的《计算机操作系统》接下来我将会使用java语言去实现内部代码。Swap指令最佳置换算法是
- 跨域的产生就是因为浏览器的同源策略。它是浏览器的核心安全功能,所谓的同源,就是指域名,协议,还有端口要相同。传统的方案就是JSONP(前端处
- 1.准备工作首先实现识别数字等字符,我们要知道需要采用OCR (Optical Character Recognition,光学字符识别)来
- 0 实验环境在Android Studio中进行有关代码的编写和界面效果展示。SQLite数据库的图形化工具SQLiteStudio下载网址
- 最近接手了一个需求,要求实现,叮咚买菜。秒杀位置的轮播拆解通过观察发现其实还是挺简单,大致分为1、商品图片的上下轮播2、价格布局渐隐渐现在a