entity
##引入宏定义
$!define
##使用宏定义设置回调(保存位置与文件后缀)
#save("/pojo/entity", ".java")
##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
#set($pkname = $tableInfo.pkColumn.get(0).obj.name)
#end
##使用宏定义设置包后缀
#setPackageSuffix("pojo.entity")
##使用全局变量实现默认包导入
$!autoImport
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
##使用宏定义实现类注释信息
#tableComment("实体类")
@Data
public class $!{tableInfo.name} implements Serializable {
#foreach($column in $tableInfo.fullColumn)
#if(${column.comment})
/**
* ${column.comment}
*/
#else
/**
*
*/
#end
#if($column.obj.name==$pkname)
#end
private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
#end
## #foreach($column in $tableInfo.fullColumn)
##使用宏定义实现get,set方法
## #getSetMethod($column)
## #end
}
dao
##定义初始变量
#set($tableName = $tool.append($tableInfo.name, "Mapper"))
##设置回调
$!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}.pojo.entity.$!{tableInfo.name};
import java.util.List;
/**
* $!{tableInfo.comment}($!{tableInfo.name})表数据库访问层
*
* @author $!author
* @since $!time.currTime()
*/
public interface $!{tableName}{
/**
* 查询列表
* @author $!author
* @since $!time.currTime()
* @param param 查询参数
* @return 列表数据
*/
List<$!{tableInfo.name}> queryAll($!{tableInfo.name} param);
/**
* 查询详情
* @author $!author
* @since $!time.currTime()
* @param id 查询参数
* @return 详情
*/
$!{tableInfo.name} selectByPrimaryKey(String id);
/**
* 保存
* @author $!author
* @since $!time.currTime()
* @param param 保存数据
* @return 保存条目
*/
int insert($!{tableInfo.name} param);
/**
* 保存
* @author $!author
* @since $!time.currTime()
* @param param 保存数据
* @return 保存条目
*/
int insertSelective($!{tableInfo.name} param);
/**
* 批量保存
* @author $!author
* @since $!time.currTime()
* @param entities 保存数据
* @return 保存条目
*/
int insertBatch(List<$!{tableInfo.name}> list);
/**
* 修改
* @author $!author
* @since $!time.currTime()
* @param param 修改数据
* @return 修改数量
*/
int updateByPrimaryKeySelective($!{tableInfo.name} param);
/**
* 修改
* @author $!author
* @since $!time.currTime()
* @param param 修改数据
* @return 修改数量
*/
int updateByPrimaryKey($!{tableInfo.name} param);
/**
* 批量修改
* @author $!author
* @since $!time.currTime()
* @param entities 保存数据
* @return 保存条目
*/
int updateByBatch(List<$!{tableInfo.name}> list);
/**
* 删除
* @author $!author
* @since $!time.currTime()
* @param id 主键ID
* @return int 删除数量
*/
int deleteByPrimaryKey(String id);
/**
* 批量修改
* @author $!author
* @since $!time.currTime()
* @param entities 保存数据
* @return 保存条目
*/
int deleteByBatch(List<$!{tableInfo.name}> list);
}
service
##定义初始变量
#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;
import com.wbs.common.utils.Response.Result;
import $!{tableInfo.savePackageName}.pojo.entity.$!{tableInfo.name};
import $!{tableInfo.savePackageName}.pojo.dto.$!{tableInfo.name}DTO;
import java.util.List;
/**
* $!{tableInfo.comment}($!{tableInfo.name})表服务接口
*
* @author $!author
* @since $!time.currTime()
*/
public interface $!{tableName} {
/**
* 通过ID查询单条数据
*
* @param $!pk.name 主键
* @return 实例对象
*/
$!{tableInfo.name}VO queryById($!pk.shortType $!pk.name);
/**
* 批量查询
*
* @param param 实例对象
* @return 实例对象
*/
Result queryAll($!{tableInfo.name}DTO param);
/**
* 新增数据
*
* @param param 实例对象
* @return 实例对象
*/
Result insert($!{tableInfo.name}DTO param);
/**
* 修改数据
*
* @param param 实例对象
* @return 实例对象
*/
Result update($!{tableInfo.name}DTO param);
/**
* 通过主键删除数据
*
* @param $!pk.name 主键
* @return 是否成功
*/
Result delete($!pk.shortType $!pk.name);
}
serviceImpl
##定义初始变量
#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}.pojo.dto.$!{tableInfo.name}DTO;
import $!{tableInfo.savePackageName}.pojo.vo.$!{tableInfo.name}VO;
import $!{tableInfo.savePackageName}.pojo.entity.$!{tableInfo.name};
import $!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Mapper;
import $!{tableInfo.savePackageName}.convert.$!{tableInfo.name}Converter;
import $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;
import com.wbs.common.base.service.impl.BaseServiceImpl;
import org.springframework.stereotype.Service;
import com.wbs.common.utils.UUIDUtil;
import lombok.extern.slf4j.Slf4j;
import com.wbs.common.utils.Response.Result;
import com.wbs.common.utils.page.PageResult;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
* $!{tableInfo.comment}($!{tableInfo.name})表服务实现类
*
* @author $!author
* @since $!time.currTime()
*/
@Slf4j
@Service("$!tool.firstLowerCase($!{tableInfo.name})Service")
public class $!{tableName} extends BaseServiceImpl implements $!{tableInfo.name}Service {
@Resource
private $!{tableInfo.name}Mapper $!tool.firstLowerCase($!{tableInfo.name})Mapper;
@Resource
private $!{tableInfo.name}Converter $!tool.firstLowerCase($!{tableInfo.name})Converter;
/**
* 通过ID查询单条数据
*
* @param $!pk.name 主键
* @return 实例对象
*/
@Override
public $!{tableInfo.name}VO queryById($!pk.shortType $!pk.name) {
return $!{tool.firstLowerCase($!{tableInfo.name})}Converter.copyVoFromEntity($!{tool.firstLowerCase($!{tableInfo.name})}Mapper.selectByPrimaryKey($!pk.name),new $!{tableInfo.name}VO());
}
/**
* 查询多条数据
*
* @param param
* @return 对象列表
*/
@Override
public Result queryAll($!{tableInfo.name}DTO param) {
//处理分页
PageHelper.startPage(param.getPageNum(), param.getPageSize());
$!{tableInfo.name} $!{tool.firstLowerCase($!{tableInfo.name})}=new $!{tableInfo.name}();
$!{tool.firstLowerCase($!{tableInfo.name})}Converter.copyEntityFromDto(param,$!{tool.firstLowerCase($!{tableInfo.name})});
List<$!{tableInfo.name}> list = $!{tool.firstLowerCase($!{tableInfo.name})}Mapper.queryAll(param);
PageResult pageResult = PageResult.pageResult($!{tool.firstLowerCase($!{tableInfo.name})}Converter.copyList(list));
return Result.success(pageResult);
}
/**
* 新增数据
*
* @param param 实例对象
* @return 实例对象
*/
@Override
public Result insert($!{tableInfo.name}DTO param) {
param.setId(UUIDUtil.getUuidNumber());
param.setCreateDate(getCreateDate());
param.setCreateUser("admin");
$!{tableInfo.name} $!{tool.firstLowerCase($!{tableInfo.name})}=new $!{tableInfo.name}();
$!{tool.firstLowerCase($!{tableInfo.name})}Converter.copyEntityFromDto(param,$!{tool.firstLowerCase($!{tableInfo.name})});
$!{tool.firstLowerCase($!{tableInfo.name})}Mapper.insertSelective(param);
return Result.ok();
}
/**
* 修改数据
*
* @param param 实例对象
* @return 实例对象
*/
@Override
public Result update($!{tableInfo.name}DTO param) {
param.setLastUpdateDate(getCreateDate());
param.setLastUpdateUser("admin");
$!{tableInfo.name} $!{tool.firstLowerCase($!{tableInfo.name})}=new $!{tableInfo.name}();
$!{tool.firstLowerCase($!{tableInfo.name})}Converter.copyEntityFromDto(param,$!{tool.firstLowerCase($!{tableInfo.name})});
$!{tool.firstLowerCase($!{tableInfo.name})}Mapper.updateByPrimaryKeySelective(param);
return Result.ok();
}
/**
* 通过主键删除数据
*
* @param $!pk.name 主键
* @return 是否成功
*/
@Override
public Result delete($!pk.shortType $!pk.name) {
$!{tool.firstLowerCase($!{tableInfo.name})}Mapper.deleteByPrimaryKey($!pk.name);
return Result.ok();
}
}
controller
##定义初始变量
#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}.pojo.entity.$!{tableInfo.name};
import $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
* $!{tableInfo.comment}($!{tableInfo.name})表控制层
*
* @author $!author
* @since $!time.currTime()
*/
@RestController
@RequestMapping("$!tool.firstLowerCase($tableInfo.name)")
public class $!{tableName} {
/**
* 服务对象
*/
@Resource
private $!{tableInfo.name}Service $!tool.firstLowerCase($tableInfo.name)Service;
/**
* 通过主键查询单条数据
*
* @param id 主键
* @return 单条数据
*/
@GetMapping("queryById")
public $!{tableInfo.name} queryById($!pk.shortType id) {
return $!{tool.firstLowerCase($tableInfo.name)}Service.queryById(id);
}
}
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))
#set($pkType = $tableInfo.pkColumn.get(0).ext.jdbcType)
#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}Mapper">
<resultMap type="$!{tableInfo.savePackageName}.pojo.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>
<!--查询单个-->
<select id="selectByPrimaryKey" resultMap="$!{tableInfo.name}Map">
select
<include refid="Base_Column_List"/>
from $!tableInfo.obj.name
where $!pk.obj.name = #{$!pk.name ,jdbcType=$!pkType}
</select>
<!--通过实体作为筛选条件查询-->
<select id="queryAll" resultMap="$!{tableInfo.name}Map">
select
<include refid="Base_Column_List"/>
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,jdbcType=$!column.ext.jdbcType}
</if>
#end
</where>
</select>
<!--新增所有列-->
<insert id="insert"parameterType="$!{tableInfo.savePackageName}.pojo.entity.$!{tableInfo.name}">
insert into $!{tableInfo.obj.name}(
#foreach($column in $tableInfo.fullColumn)
$!column.obj.name#if($velocityHasNext),
#end#end
)
values (
#foreach($column in $tableInfo.fullColumn)
#{$!{column.name},jdbcType="$!column.ext.jdbcType"}#if($velocityHasNext),
#end#end
)
</insert>
<!--新增所有列-->
<insert id="insertSelective" parameterType="$!{tableInfo.savePackageName}.pojo.entity.$!{tableInfo.name}">
insert into $!{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>
<insert id="insertBatch" parameterType="java.util.List">
insert into $!{tableInfo.obj.name}(
#foreach($column in $tableInfo.fullColumn)
$!column.obj.name#if($velocityHasNext),
#end#end)
values
<foreach collection="entities" item="entity" separator=",">
(
#foreach($column in $tableInfo.fullColumn)
#{entity.$!{column.name},jdbcType=$!column.ext.jdbcType}#if($velocityHasNext),
#end#end)
</foreach>
</insert>
<!--通过主键修改数据-->
<update id="updateByPrimaryKeySelective" parameterType="$!{tableInfo.savePackageName}.pojo.entity.$!{tableInfo.name}">
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="$pkType"}
</update>
<!--通过主键修改数据-->
<update id="updateByPrimaryKey" parameterType="$!{tableInfo.savePackageName}.pojo.entity.$!{tableInfo.name}">
update $!{tableInfo.obj.name} set
#foreach($column in $tableInfo.otherColumn)
$!column.obj.name = #{$!column.name,jdbcType=$!column.ext.jdbcType},
#end
where $!pk.obj.name = #{$!pk.name,jdbcType=$pkType}
</update>
<!--批量修改数据-->
<update id="updateByBatch" parameterType="java.util.List">
begin
<foreach collection="list" item="item" index="index" open="" close=";" separator=";">
update $!{tableInfo.obj.name}
<set>
#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,jdbcType=$!column.ext.jdbcType},
</if>
#end
</set>
where $!pk.obj.name = #{item.$!pk.name,jdbcType="$pkType"}
</foreach>
end;
</update>
<!--通过主键删除-->
<delete id="deleteByPrimaryKey" parameterType="java.lang.String">
delete from $!{tableInfo.obj.name}
where $!pk.obj.name = #{$!pk.name,jdbcType=$pkType}
</delete>
<!--通过主键批量删除-->
<delete id="deleteByBatch" parameterType="java.util.List">
begin
<foreach collection="list" item="item" index="index" open="" close=";" separator=";">
delete from $!{tableInfo.obj.name}
where $!pk.obj.name = #{item.$!pk.name,jdbcType=$pkType}
</foreach>
end;
</delete>
</mapper>
dto
##引入宏定义
$!define
##使用宏定义设置回调(保存位置与文件后缀)
#save("/pojo/dto", "DTO.java")
##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
#set($pkname = $tableInfo.pkColumn.get(0).obj.name)
#end
##使用宏定义设置包后缀
#setPackageSuffix("pojo.dto")
##使用全局变量实现默认包导入
$!autoImport
import com.wbs.common.base.dto.BaseDTO;
import lombok.Data;
import java.util.Date;
##使用宏定义实现类注释信息
#tableComment("实体类")
@Data
public class $!{tableInfo.name}DTO extends BaseDTO {
#foreach($column in $tableInfo.fullColumn)
#if(${column.comment})
/**
* ${column.comment}
*/
#else
/**
*
*/
#end
#if($column.obj.name==$pkname)
#end
private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
#end
## #foreach($column in $tableInfo.fullColumn)
##使用宏定义实现get,set方法
## #getSetMethod($column)
## #end
}
vo
##引入宏定义
$!define
##使用宏定义设置回调(保存位置与文件后缀)
#save("/pojo/vo", "VO.java")
##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
#set($pkname = $tableInfo.pkColumn.get(0).obj.name)
#end
##使用宏定义设置包后缀
#setPackageSuffix("pojo.vo")
##使用全局变量实现默认包导入
$!autoImport
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
##使用宏定义实现类注释信息
#tableComment("实体类")
@Data
public class $!{tableInfo.name}VO implements Serializable {
#foreach($column in $tableInfo.fullColumn)
#if(${column.comment})
/**
* ${column.comment}
*/
#else
/**
*
*/
#end
#if($column.obj.name==$pkname)
#end
private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
#end
## #foreach($column in $tableInfo.fullColumn)
##使用宏定义实现get,set方法
## #getSetMethod($column)
## #end
}
converter
##引入宏定义
$!define
##使用宏定义设置包后缀
#setPackageSuffix("convert")
##使用全局变量实现默认包导入
$!autoImport
import lombok.Data;
import org.mapstruct.Mapper;
import org.mapstruct.MappingTarget;
import $!{tableInfo.savePackageName}.pojo.dto.$!{tableInfo.name}DTO;
import $!{tableInfo.savePackageName}.pojo.vo.$!{tableInfo.name}VO;
import $!{tableInfo.savePackageName}.pojo.entity.$!{tableInfo.name};
import java.util.List;
##使用宏定义实现类注释信息
#tableComment("convert")
@Mapper(componentModel = "spring",uses = {$!{tableInfo.name}Converter.class})
public class $!{tableInfo.name}Converter{
/**
* 拷贝对象
* @param $!{tool.firstLowerCase($tableInfo.name)}DTO 要拷贝的对象
* @param $!{tool.firstLowerCase($tableInfo.name)} 返回转化的对象
*/
void copyEntityFromDto($!{tableInfo.name}DTO $!{tool.firstLowerCase($tableInfo.name)}DTO, @MappingTarget $!{tableInfo.name} $!{tool.firstLowerCase($tableInfo.name)} );
/**
* 拷贝对象
* @param $!{tool.firstLowerCase($tableInfo.name)} 要拷贝的对象
* @param $!{tool.firstLowerCase($tableInfo.name)}VO 返回转化的对象
*/
void copyVoFromEntity($!{tableInfo.name} $!{tool.firstLowerCase($tableInfo.name)} , @MappingTarget $!{tableInfo.name}VO $!{tool.firstLowerCase($tableInfo.name)}VO);
/**
* 拷贝对象集合
* @param list 要拷贝的对象集合
* @return 返回转化的对象集合
*/
List<$!{tableInfo.name}VO> copyList(List<$!{tableInfo.name}> list);
}