关于 easy code 的配置之前有写过一次,但是里面存在许多的问题,有的当时没解决,有的当时没发现(感觉好坑啊),现在从新写过。
涉及 mybatis 同个标签中执行多条sql语句,因此 mysql(我的数据库)连接 url 需要添加参数 allowMultiQueries=true 。
controller 层下的 api , 可以直接被 Layui.table 数据表格调用渲染表格。
这次的还是存在一个瑕疵,controller 模板下调用的方法在生成 .java 后莫名其妙的丢啦,easy code 基础的模板就没问题,我…因此,controller 模板调用方法时我这里使用了两个“…”,生成 .java 后需要把两个点“…”替换为一个点“.”。
<!--如果sql插入、修改时需要返回主键,mybatis版本必需是3.3.1或以上-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
File | Settings | Other Settings | Easy Code
Type Mapper
columnType | javaType |
---|---|
varchar((\d+))? | java.lang.String |
char((\d+))? | java.lang.String |
text | java.lang.String |
decimal((\d+))? | java.lang.Double |
decimal((\d+,\d+))? | java.lang.Double |
integer | java.lang.Integer |
int((\d+))? | java.lang.Integer |
int4 | java.lang.Integer |
int8 | java.lang.Long |
bigint((\d+))? | java.lang.Long |
datetime | java.til.String |
timestamp | java.util.String |
boolean | java.lang.Boolean |
int((\d+))? unsigned | java.lang.Integer |
tinyint((\d+))? | java.lang.Byte |
smallint((\d+))? | java.lang.Short |
longtext | java.lang.String |
integer((\d+))? | java.lang.Integer |
Template Setting
mapper.xml
##引入mybatis支持
$!mybatisSupport
##引入全局变量
$!init
##设置保存名称与保存位置
$!callback.setFileName($tool.append($!{
tableInfo.name}, "Mapper.xml"))
$!callback.setSavePath($tool.append($modulePath, "/src/main/resources/mapper"))
##表名$!{
tableInfo.obj.parent.name}.$!tableInfo.obj.name
##拿到主键
#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.name}Mapper">
<resultMap id="$!{tableInfo.name}Map" type="$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}">
#foreach($column in $tableInfo.fullColumn)
<result property="$!column.name" column="$!column.obj.name" jdbcType="$!column.ext.jdbcType"/>
#end
</resultMap>
<resultMap id="$!{tableInfo.name}Count" type="java.lang.Integer">
<result column="totalNum" jdbcType="INTEGER"/>
</resultMap>
<resultMap id="$!{tableInfo.name}VoMap" type="java.util.HashMap"/>
<sql id="Base_Column_List" >
#allSqlColumn()
</sql>
<!--总记录数-->
<select id="totalCount" resultType="java.lang.Integer">
select count(*) from $!tableInfo.obj.name
</select>
<!--按主键查找-->
<select id="queryById" resultMap="$!{tableInfo.name}Map">
select
<include refid="Base_Column_List"/>
from $!tableInfo.obj.name
where $!pk.obj.name = #{
$!pk.name, jdbcType=$!pk.ext.jdbcType}
</select>
<!--查询所有-->
<select id="queryAll" resultMap="$!{tableInfo.name}Map">
select
<include refid="Base_Column_List"/>
from $!tableInfo.obj.name
</select>
<!--分页查找-->
<select id="queryListLimit" resultMap="$!{tableInfo.name}Map,$!{tableInfo.name}Count">
select
SQL_CALC_FOUND_ROWS <include refid="Base_Column_List"/>
from $!tableInfo.obj.name
limit #{
page}, #{
limit}
;SELECT FOUND_ROWS() AS totalNum;
</select>
#* <!--通过实体作为筛选条件查询-->
<select id="queryAll" parameterType="$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}" resultMap="$!{tableInfo.name}Map">
select
<include refid="Base_Column_List"></include>
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" parameterType="$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}" keyColumn="$!pk.name" keyProperty="$!pk.name" useGeneratedKeys="true">
insert into $!{
tableInfo.obj.name}
<trim prefix="(" suffix=")" suffixOverrides="," >
#foreach($column in $tableInfo.otherColumn)
<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.otherColumn)
<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 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>
<!--按主键修改-->
<update id="update" parameterType="$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}" keyColumn="$!pk.name" keyProperty="$!pk.name" useGeneratedKeys="true">
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, jdbcType=$!column.ext.jdbcType},</if>
#end
</set>
where $!pk.obj.name = #{
$!pk.name, jdbcType=$!pk.ext.jdbcType}
</update>
<!--按主键删除-->
<delete id="deleteById" parameterType="java.lang.Long">
delete from $!{
tableInfo.obj.name} where $!pk.obj.name = #{
$!pk.name, jdbcType=$!pk.ext.jdbcType}
</delete>
</mapper>
entity.java
##引入全局变量
$!init
##引入宏定义
$!define
##使用宏定义设置回调(保存位置与文件后缀)
#save("/entity", ".java")
##使用宏定义设置包后缀
#setPackageSuffix("entity")
##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
#set($pk = $tableInfo.pkColumn.get(0))
#end
##使用全局变量实现默认包导入
$!autoImport
import java.io.Serializable;
##import javax.persistence.*;
##使用宏定义实现类注释信息
#tableComment("实体类")
##@Entity
##@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
#*
#if($!pk.obj.name == $!column.obj.name)@Id
@GeneratedValue(strategy = GenerationType.IDENTITY, generator = "SELECT LAST_INSERT_ID()")
#else
@Column(name = "$!column.obj.name")
#end*#
private $!{
tool.getClsNameByFullName($column.type)} $!{
column.name};
#end
#foreach($column in $tableInfo.fullColumn)
##使用宏定义实现get,set方法
#getSetMethod($column)
#end