EasyCode 模板 .vm文件

用到swagger、mybatis plus,xml的sql自己修改

controller.java.vm

##定义初始变量
#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.$!{tableInfo.name};
import com.jxn.other.result.Result;
import $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.alibaba.fastjson.JSONObject;
import java.util.Objects;

import org.springframework.beans.factory.annotation.Autowired;
 
/**
 * @Author $!author
 * @Desc $!{tableInfo.comment}($!{tableInfo.name})表控制层
 * @Date $!time.currTime()
 */
@Api(tags = "$!{tableInfo.comment}")
@Slf4j
@RestController
@RequestMapping("/$!tool.firstLowerCase($tableInfo.name)")
public class $!{tableName} {
    @Autowired
    private $!{tableInfo.name}Service $!tool.firstLowerCase($tableInfo.name)Service;
 
    @ApiOperation("$!{tableInfo.comment}-搜索、分页查询")
    @DynamicParameters(name = "data", properties ={
            @DynamicParameter(name = "pageNo", value = "页码", example = "1", required = true),
            @DynamicParameter(name = "pageSize", value = "条数", example = "10", required = true),
    })
    @PostMapping("/search$!{tableInfo.name}")
    public Result search$!{tableInfo.name}(@RequestBody JSONObject data) {
        try {
            return $!{tool.firstLowerCase($tableInfo.name)}Service.search$!{tableInfo.name}(data);
        }catch (Exception e){
            e.printStackTrace();
            return Result.fail("操作失败");
        }
    }

    @ApiOperation("$!{tableInfo.comment}-根据ID查详情")
    @DynamicParameters(name = "data", properties ={
            @DynamicParameter(name = "$!{tableInfo.name}Id", value = "id", example = "1", required = true),
    })
    @PostMapping("/$!{tableInfo.name}Detail")
    public Result $!{tableInfo.name}Detail(Integer $!{tool.firstLowerCase($tableInfo.name)}Id) {
        try {
            return $!{tool.firstLowerCase($tableInfo.name)}Service.$!{tool.firstLowerCase($tableInfo.name)}Detail($!{tool.firstLowerCase($tableInfo.name)}Id);
        }catch (Exception e){
            e.printStackTrace();
            return Result.fail("操作失败");
        }
    }

    @ApiOperation("$!{tableInfo.comment}-新增数据")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "name", value = "名称", defaultValue = "1", required = true),
            @ApiImplicitParam(name = "phone", value = "手机号", defaultValue = "10", required = true),
    })
    @PostMapping("/insert$!{tableInfo.name}")
    public Result insert$!{tableInfo.name}(@RequestBody $!{tableInfo.name} $!{tool.firstLowerCase($tableInfo.name)}) {
        try {
            return $!{tool.firstLowerCase($tableInfo.name)}Service.insert$!{tableInfo.name}($!{tool.firstLowerCase($tableInfo.name)});
        }catch (Exception e){
            e.printStackTrace();
            return Result.fail("操作失败");
        }
    }

    @ApiOperation("$!{tableInfo.comment}-编辑数据")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "name", value = "名称", defaultValue = "1", required = true),
            @ApiImplicitParam(name = "phone", value = "手机号", defaultValue = "10", required = true),
    })
    @PostMapping("/update$!{tableInfo.name}")
    public Result update$!{tableInfo.name}(@RequestBody $!{tableInfo.name} $!{tool.firstLowerCase($tableInfo.name)}) {
        try {
            if(Objects.isNull($!{tool.firstLowerCase($tableInfo.name)}.getId())){
                return Result.fail("id不能为空");
            }
            return $!{tool.firstLowerCase($tableInfo.name)}Service.update$!{tableInfo.name}($!{tool.firstLowerCase($tableInfo.name)});
        }catch (Exception e){
            e.printStackTrace();
            return Result.fail("操作失败");
        }
    }

    @ApiOperation("$!{tableInfo.comment}-删除数据")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "$!{tableName}Id", value = "id", defaultValue = "1", required = true),
    })
    @GetMapping("/delete$!{tableInfo.name}")
    public Result delete$!{tableInfo.name}(Integer $!{tableInfo.comment}Id) {
        try {
        return $!{tool.firstLowerCase($tableInfo.name)}Service.delete$!{tableInfo.name}($!{tableInfo.comment}Id);
        }catch (Exception e){
            e.printStackTrace();
            return Result.fail("操作失败");
        }
    }
 
}

service.java.vm

##定义初始变量
#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 $!{tableInfo.savePackageName}.pojo.$!{tableInfo.name};
import com.alibaba.fastjson.JSONObject;
import com.jxn.other.result.Result;

/**
 * $!{tableInfo.comment}($!{tableInfo.name})表服务接口
 *
 * @author $!author
 * @since $!time.currTime()
 */
public interface $!{tableName} {

    /**
     * 搜索、分页查询
     *
     * @param data 筛选条件
     * @param 
     * @return 查询结果
     */
    Result search$!{tableInfo.name}(JSONObject data);

    /**
     * 通过ID查询单条数据详情
     *
     * @param $!pk.name 主键
     * @return 实例对象
     */
    Result $!tool.firstLowerCase($!{tableInfo.name})Detail ($!pk.shortType $!pk.name);
    
    /**
     * 新增数据
     *
     * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
     * @return 实例对象
     */
    Result insert$!{tableInfo.name}($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));

    /**
     * 修改数据
     *
     * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
     * @return 实例对象
     */
    Result update$!{tableInfo.name}($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));

    /**
     * 通过主键删除数据
     *
     * @param $!pk.name 主键
     * @return 是否成功
     */
    Result delete$!{tableInfo.name} ($!pk.shortType $!pk.name);

}

serviceImpl.java.vm

##定义初始变量
#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.$!{tableInfo.name};
import $!{tableInfo.savePackageName}.mapper.$!{tableInfo.name}Mapper;
import $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;
import org.springframework.stereotype.Service;
import com.jxn.other.result.Result;
import org.springframework.beans.factory.annotation.Autowired;

/**
 * $!{tableInfo.comment}($!{tableInfo.name})表服务实现类
 *"$!tool.firstLowerCase($!{tableInfo.name})Service"
 * @author $!author
 * @since $!time.currTime()
 */
@Service()
public class $!{tableName} implements $!{tableInfo.name}Service {
    @Autowired
    private $!{tableInfo.name}Mapper $!tool.firstLowerCase($!{tableInfo.name})Mapper;

    /**
     * 分页查询
     *
     * @param data 筛选条件
     * @return 查询结果
     */
    @Override
    public Result search$!{tableInfo.name}( JSONObject data ) {
        Integer pageNo=data.getInteger("pageNo");
        Integer pageSize=data.getInteger("pageSize");
        PageHelper.startPage(pageNo, pageSize);
        List<$!{tableInfo.name}> list = $!{tool.firstLowerCase($tableInfo.name)}Mapper.search$!{tableInfo.name}();
        PageInfo<$!{tableInfo.name}> info = new PageInfo<>(list);
        return Result.ok(info);
        }

    /**
     * 通过ID查询单条数据详情
     *
     * @param $!pk.name 主键
     * @return 实例对象
     */
    @Override
    public Result $!{tool.firstLowerCase($tableInfo.name)}Detail ($!pk.shortType $!pk.name) {
        $!{tableInfo.name} $!{tool.firstLowerCase($!{tableInfo.name})}=$!{tool.firstLowerCase($!{tableInfo.name})}Mapper.$!{tool.firstLowerCase($tableInfo.name)}Detail ($!pk.name);
        return Result.ok();
    }
    
    /**
     * 新增数据
     *
     * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
     * @return 实例对象
     */
    @Override
    public Result insert$!{tableInfo.name}($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})) {
        $!{tool.firstLowerCase($!{tableInfo.name})}Mapper.insert$!{tableInfo.name} ($!tool.firstLowerCase($!{tableInfo.name}));
        return Result.ok();
    }

    /**
     * 修改数据
     *
     * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
     * @return 实例对象
     */
    @Override
    public Result update$!{tableInfo.name}($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})) {
        $!{tool.firstLowerCase($!{tableInfo.name})}Mapper.update$!{tableInfo.name}($!tool.firstLowerCase($!{tableInfo.name}));
        return Result.ok();
    }

    /**
     * 通过主键删除数据
     *
     * @param $!pk.name 主键
     * @return 是否成功
     */
    @Override
    public Result delete$!{tableInfo.name}($!pk.shortType $!pk.name) {
         $!{tool.firstLowerCase($!{tableInfo.name})}Mapper.delete$!{tableInfo.name}($!pk.name);
         return Result.ok();
    }
}

mapper.java.vm

##定义初始变量
#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))
    #set($pk = $tableInfo.pkColumn.get(0))
#end

#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}mapper;

import $!{tableInfo.savePackageName}.pojo.$!{tableInfo.name};
import org.apache.ibatis.annotations.Mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;

/**
 * $!{tableInfo.comment}($!{tableInfo.name})表数据库访问层
 *
 * @author $!author
 * @since $!time.currTime()
 */
@Mapper
public interface $!{tableName} extends BaseMapper<$!{tableInfo.name}> {

    /**
     * 搜索list
     *
     * @param $!pk.name 主键
     * @return 实例对象
     */
    List<$!{tableInfo.name}> search$!tool.firstLowerCase($!{tableInfo.name}) ();
    
    /**
     * 通过ID查询单条数据
     *
     * @param $!pk.name 主键
     * @return 实例对象
     */
    $!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})Detail ($!pk.shortType $!pk.name);

    /**
     * 新增数据
     *
     * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
     * @return 影响行数
     */
    int insert$!{tableInfo.name}(@Param("$!tool.firstLowerCase($!{tableInfo.name})") $!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));

    /**
     * 修改数据
     *
     * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
     * @return 影响行数
     */
    int update$!{tableInfo.name}(@Param("$!tool.firstLowerCase($!{tableInfo.name})") $!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));

    /**
     * 通过主键删除数据
     *
     * @param $!pk.name 主键
     * @return 影响行数
     */
    int delete$!{tableInfo.name}($!pk.shortType $!pk.name);

}

mapper.xml.vm 

##引入mybatis支持
$!{mybatisSupport.vm}

##设置保存名称与保存位置
$!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}.pojo.$!{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>

    <!--查询单个-->
    <select id="$!tool.firstLowerCase($!{tableInfo.name})Detail" resultMap="$!{tableInfo.name}Map">
        select
          #allSqlColumn()

        from $!tableInfo.obj.name
        where $!pk.obj.name = #{$!pk.name}
    </select>

    <!--查询指定行数据-->
    <select id="queryAllByLimit" resultMap="$!{tableInfo.name}Map">
        select
          #allSqlColumn()

        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>

    <!--统计总行数-->
    <select id="count" resultType="java.lang.Long">
        select count(1)
        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$!{tableInfo.name}" keyProperty="$!pk.name" useGeneratedKeys="true">
        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>

    <insert id="insertBatch" keyProperty="$!pk.name" useGeneratedKeys="true">
        insert into $!{tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)
        values
        <foreach collection="entities" item="pojo" separator=",">
        (#foreach($column in $tableInfo.otherColumn)#{pojo.$!{column.name}}#if($velocityHasNext), #end#end)
        </foreach>
    </insert>

    <insert id="insertOrUpdateBatch" keyProperty="$!pk.name" useGeneratedKeys="true">
        insert into $!{tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)
        values
        <foreach collection="entities" item="pojo" separator=",">
            (#foreach($column in $tableInfo.otherColumn)#{pojo.$!{column.name}}#if($velocityHasNext), #end#end)
        </foreach>
        on duplicate key update
        #foreach($column in $tableInfo.otherColumn)$!column.obj.name = values($!column.obj.name)#if($velocityHasNext),
        #end#end

    </insert>

    <!--通过主键修改数据-->
    <update id="update$!{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},
            </if>
#end
        </set>
        where $!pk.obj.name = #{$!pk.name}
    </update>

    <!--通过主键删除-->
    <delete id="delete$!{tableInfo.name}">
        delete from $!{tableInfo.obj.name} where $!pk.obj.name = #{$!pk.name}
    </delete>

</mapper>

pojo.java.vm

##引入宏定义
$!{define.vm}
##使用宏定义设置回调(保存位置与文件后缀)
#save("/pojo", ".java")
##使用宏定义设置包后缀
#setPackageSuffix("pojo")
##使用全局变量实现默认包导入
$!{autoImport.vm}
import java.io.Serializable;
##使用宏定义实现类注释信息
#tableComment("实体类")
@TableName("$tableInfo.name")
@ApiModel(value = "$!{tableInfo.comment}")
public class $!{tableInfo.name} implements Serializable {
    #foreach($column in $tableInfo.pkColumn )
        #if(${column.comment})
        @TableId(value = "$tableInfo.pkColumn", type = IdType.AUTO)
        #break
        #end
    #end
    #foreach($column in $tableInfo.fullColumn)
        #if(${column.comment})
        /**
         * ${column.comment}
         */#end
        @ApiModelProperty(value = "$!column.name")
        private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
    #end

    #foreach($column in $tableInfo.fullColumn)
        ##使用宏定义实现get,set方法
        #getSetMethod($column)
    #end
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值