• idea中dataBase模板生成


     controller.java.vm

    1. ##定义初始变量
    2. #set($tableName = $tool.append($tableInfo.name, "Controller"))
    3. ##设置回调
    4. $!callback.setFileName($tool.append($tableName, ".java"))
    5. $!callback.setSavePath($tool.append($tableInfo.savePath, "/controller"))
    6. ##拿到主键
    7. #if(!$tableInfo.pkColumn.isEmpty())
    8. #set($pk = $tableInfo.pkColumn.get(0))
    9. #end
    10. #if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}controller;
    11. import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};
    12. import $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;
    13. import org.springframework.data.domain.Page;
    14. import org.springframework.data.domain.PageRequest;
    15. import org.springframework.http.ResponseEntity;
    16. import org.springframework.web.bind.annotation.*;
    17. import javax.annotation.Resource;
    18. /**
    19. * $!{tableInfo.comment}($!{tableInfo.name})表控制层
    20. *
    21. * @author $!author
    22. * @since $!time.currTime()
    23. */
    24. @RestController
    25. @RequestMapping("$!tool.firstLowerCase($tableInfo.name)")
    26. public class $!{tableName} {
    27. /**
    28. * 服务对象
    29. */
    30. @Resource
    31. private $!{tableInfo.name}Service $!tool.firstLowerCase($tableInfo.name)Service;
    32. /**
    33. * 分页查询
    34. *
    35. * @param $!{tool.firstLowerCase($tableInfo.name)} 筛选条件
    36. * @param pageRequest 分页对象
    37. * @return 查询结果
    38. */
    39. @GetMapping
    40. public ResponseEntity> queryByPage($!{tableInfo.name} $!{tool.firstLowerCase($tableInfo.name)}, PageRequest pageRequest) {
    41. return ResponseEntity.ok(this.$!{tool.firstLowerCase($tableInfo.name)}Service.queryByPage($!{tool.firstLowerCase($tableInfo.name)}, pageRequest));
    42. }
    43. /**
    44. * 通过主键查询单条数据
    45. *
    46. * @param id 主键
    47. * @return 单条数据
    48. */
    49. @GetMapping("{id}")
    50. public ResponseEntity<$!{tableInfo.name}> queryById(@PathVariable("id") $!pk.shortType id) {
    51. return ResponseEntity.ok(this.$!{tool.firstLowerCase($tableInfo.name)}Service.queryById(id));
    52. }
    53. /**
    54. * 新增数据
    55. *
    56. * @param $!{tool.firstLowerCase($tableInfo.name)} 实体
    57. * @return 新增结果
    58. */
    59. @PostMapping
    60. public ResponseEntity<$!{tableInfo.name}> add($!{tableInfo.name} $!{tool.firstLowerCase($tableInfo.name)}) {
    61. return ResponseEntity.ok(this.$!{tool.firstLowerCase($tableInfo.name)}Service.insert($!{tool.firstLowerCase($tableInfo.name)}));
    62. }
    63. /**
    64. * 编辑数据
    65. *
    66. * @param $!{tool.firstLowerCase($tableInfo.name)} 实体
    67. * @return 编辑结果
    68. */
    69. @PutMapping
    70. public ResponseEntity<$!{tableInfo.name}> edit($!{tableInfo.name} $!{tool.firstLowerCase($tableInfo.name)}) {
    71. return ResponseEntity.ok(this.$!{tool.firstLowerCase($tableInfo.name)}Service.update($!{tool.firstLowerCase($tableInfo.name)}));
    72. }
    73. /**
    74. * 删除数据
    75. *
    76. * @param id 主键
    77. * @return 删除是否成功
    78. */
    79. @DeleteMapping
    80. public ResponseEntity deleteById($!pk.shortType id) {
    81. return ResponseEntity.ok(this.$!{tool.firstLowerCase($tableInfo.name)}Service.deleteById(id));
    82. }
    83. }

    entity.java.vm

    1. ##引入宏定义
    2. $!{define.vm}
    3. ##使用宏定义设置回调(保存位置与文件后缀)
    4. #save("/model", ".java")
    5. ##使用宏定义设置包后缀
    6. #setPackageSuffix("model")
    7. ##使用全局变量实现默认包导入
    8. $!{autoImport.vm}
    9. import javax.persistence.*;
    10. import io.swagger.annotations.ApiModelProperty;
    11. import lombok.*;
    12. ##使用宏定义实现类注释信息
    13. #tableComment("$!{tableInfo.comment}")
    14. @Data
    15. @Builder
    16. @AllArgsConstructor
    17. @NoArgsConstructor
    18. @Table(name = "$!{tableInfo.obj.name}")
    19. public class $!{tableInfo.name} {
    20. #if(${tableInfo.pkColumn})
    21. @Id
    22. #end
    23. #foreach($column in $tableInfo.fullColumn)
    24. #if(${column.comment})/**
    25. * ${column.comment}
    26. */#end
    27. @Column(name = "$!column.obj.name")
    28. @ApiModelProperty(value ="${column.comment}")
    29. private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
    30. #end
    31. }

     dao.java.vm 

    1. ##引入mybatis支持
    2. $!{mybatisSupport.vm}
    3. ##设置保存名称与保存位置
    4. $!callback.setFileName($tool.append($!{tableInfo.name}, "Dao.xml"))
    5. $!callback.setSavePath($tool.append($modulePath, "/src/main/resources/mapper"))
    6. ##拿到主键
    7. #if(!$tableInfo.pkColumn.isEmpty())
    8. #set($pk = $tableInfo.pkColumn.get(0))
    9. #end
    10. "1.0" encoding="UTF-8"?>
    11. mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    12. <mapper namespace="$!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Dao">
    13. <resultMap type="$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}" id="$!{tableInfo.name}Map">
    14. #foreach($column in $tableInfo.fullColumn)
    15. <result property="$!column.name" column="$!column.obj.name" jdbcType="$!column.ext.jdbcType"/>
    16. #end
    17. resultMap>
    18. <select id="queryById" resultMap="$!{tableInfo.name}Map">
    19. select
    20. #allSqlColumn()
    21. from $!tableInfo.obj.name
    22. where $!pk.obj.name = #{$!pk.name}
    23. select>
    24. <select id="queryAllByLimit" resultMap="$!{tableInfo.name}Map">
    25. select
    26. #allSqlColumn()
    27. from $!tableInfo.obj.name
    28. <where>
    29. #foreach($column in $tableInfo.fullColumn)
    30. <if test="$!column.name != null#if($column.type.equals("java.lang.String")) and $!column.name != ''#end">
    31. and $!column.obj.name = #{$!column.name}
    32. if>
    33. #end
    34. where>
    35. limit #{pageable.offset}, #{pageable.pageSize}
    36. select>
    37. <select id="count" resultType="java.lang.Long">
    38. select count(1)
    39. from $!tableInfo.obj.name
    40. <where>
    41. #foreach($column in $tableInfo.fullColumn)
    42. <if test="$!column.name != null#if($column.type.equals("java.lang.String")) and $!column.name != ''#end">
    43. and $!column.obj.name = #{$!column.name}
    44. if>
    45. #end
    46. where>
    47. select>
    48. <insert id="insert" keyProperty="$!pk.name" useGeneratedKeys="true">
    49. insert into $!{tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)
    50. values (#foreach($column in $tableInfo.otherColumn)#{$!{column.name}}#if($velocityHasNext), #end#end)
    51. insert>
    52. <insert id="insertBatch" keyProperty="$!pk.name" useGeneratedKeys="true">
    53. insert into $!{tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)
    54. values
    55. <foreach collection="entities" item="entity" separator=",">
    56. (#foreach($column in $tableInfo.otherColumn)#{entity.$!{column.name}}#if($velocityHasNext), #end#end)
    57. foreach>
    58. insert>
    59. <insert id="insertOrUpdateBatch" keyProperty="$!pk.name" useGeneratedKeys="true">
    60. insert into $!{tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end)
    61. values
    62. <foreach collection="entities" item="entity" separator=",">
    63. (#foreach($column in $tableInfo.otherColumn)#{entity.$!{column.name}}#if($velocityHasNext), #end#end)
    64. foreach>
    65. on duplicate key update
    66. #foreach($column in $tableInfo.otherColumn)$!column.obj.name = values($!column.obj.name)#if($velocityHasNext),
    67. #end#end
    68. insert>
    69. <update id="update">
    70. update $!{tableInfo.obj.name}
    71. <set>
    72. #foreach($column in $tableInfo.otherColumn)
    73. <if test="$!column.name != null#if($column.type.equals("java.lang.String")) and $!column.name != ''#end">
    74. $!column.obj.name = #{$!column.name},
    75. if>
    76. #end
    77. set>
    78. where $!pk.obj.name = #{$!pk.name}
    79. update>
    80. <delete id="deleteById">
    81. delete from $!{tableInfo.obj.name} where $!pk.obj.name = #{$!pk.name}
    82. delete>
    83. mapper>

      service.java.vm

    1. ##定义初始变量
    2. #set($tableName = $tool.append($tableInfo.name, "Service"))
    3. ##设置回调
    4. $!callback.setFileName($tool.append($tableName, ".java"))
    5. $!callback.setSavePath($tool.append($tableInfo.savePath, "/service"))
    6. ##拿到主键
    7. #if(!$tableInfo.pkColumn.isEmpty())
    8. #set($pk = $tableInfo.pkColumn.get(0))
    9. #end
    10. #if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}service;
    11. import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};
    12. import org.springframework.data.domain.Page;
    13. import org.springframework.data.domain.PageRequest;
    14. /**
    15. * $!{tableInfo.comment}($!{tableInfo.name})表服务接口
    16. *
    17. * @author $!author
    18. * @since $!time.currTime()
    19. */
    20. public interface $!{tableName} {
    21. /**
    22. * 通过ID查询单条数据
    23. *
    24. * @param $!pk.name 主键
    25. * @return 实例对象
    26. */
    27. $!{tableInfo.name} queryById($!pk.shortType $!pk.name);
    28. /**
    29. * 分页查询
    30. *
    31. * @param $!tool.firstLowerCase($!{tableInfo.name}) 筛选条件
    32. * @param pageRequest 分页对象
    33. * @return 查询结果
    34. */
    35. Page<$!{tableInfo.name}> queryByPage($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}), PageRequest pageRequest);
    36. /**
    37. * 新增数据
    38. *
    39. * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
    40. * @return 实例对象
    41. */
    42. $!{tableInfo.name} insert($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));
    43. /**
    44. * 修改数据
    45. *
    46. * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
    47. * @return 实例对象
    48. */
    49. $!{tableInfo.name} update($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));
    50. /**
    51. * 通过主键删除数据
    52. *
    53. * @param $!pk.name 主键
    54. * @return 是否成功
    55. */
    56. boolean deleteById($!pk.shortType $!pk.name);
    57. }

     serviceImpl.java.vm

    1. ##定义初始变量
    2. #set($tableName = $tool.append($tableInfo.name, "ServiceImpl"))
    3. ##设置回调
    4. $!callback.setFileName($tool.append($tableName, ".java"))
    5. $!callback.setSavePath($tool.append($tableInfo.savePath, "/service/impl"))
    6. ##拿到主键
    7. #if(!$tableInfo.pkColumn.isEmpty())
    8. #set($pk = $tableInfo.pkColumn.get(0))
    9. #end
    10. #if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}service.impl;
    11. import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};
    12. import $!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Dao;
    13. import $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;
    14. import org.springframework.stereotype.Service;
    15. import org.springframework.data.domain.Page;
    16. import org.springframework.data.domain.PageImpl;
    17. import org.springframework.data.domain.PageRequest;
    18. import javax.annotation.Resource;
    19. /**
    20. * $!{tableInfo.comment}($!{tableInfo.name})表服务实现类
    21. *
    22. * @author $!author
    23. * @since $!time.currTime()
    24. */
    25. @Service("$!tool.firstLowerCase($!{tableInfo.name})Service")
    26. public class $!{tableName} implements $!{tableInfo.name}Service {
    27. @Resource
    28. private $!{tableInfo.name}Dao $!tool.firstLowerCase($!{tableInfo.name})Dao;
    29. }

     mapper.xml.vm

    1. ##定义初始变量
    2. #set($tableName = $tool.append($tableInfo.name, "Dao"))
    3. ##设置回调
    4. $!callback.setFileName($tool.append($tableName, ".java"))
    5. $!callback.setSavePath($tool.append($tableInfo.savePath, "/dao"))
    6. ##拿到主键
    7. #if(!$tableInfo.pkColumn.isEmpty())
    8. #set($pk = $tableInfo.pkColumn.get(0))
    9. #end
    10. #if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}dao;
    11. import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};
    12. import org.apache.ibatis.annotations.Param;
    13. import org.springframework.data.domain.Pageable;
    14. import java.util.List;
    15. /**
    16. * $!{tableInfo.comment}($!{tableInfo.name})表数据库访问层
    17. *
    18. * @author $!author
    19. * @since $!time.currTime()
    20. */
    21. public interface $!{tableName} {
    22. /**
    23. * 通过ID查询单条数据
    24. *
    25. * @param $!pk.name 主键
    26. * @return 实例对象
    27. */
    28. $!{tableInfo.name} queryById($!pk.shortType $!pk.name);
    29. /**
    30. * 查询指定行数据
    31. *
    32. * @param $!tool.firstLowerCase($!{tableInfo.name}) 查询条件
    33. * @param pageable 分页对象
    34. * @return 对象列表
    35. */
    36. List<$!{tableInfo.name}> queryAllByLimit($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}), @Param("pageable") Pageable pageable);
    37. /**
    38. * 统计总行数
    39. *
    40. * @param $!tool.firstLowerCase($!{tableInfo.name}) 查询条件
    41. * @return 总行数
    42. */
    43. long count($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));
    44. /**
    45. * 新增数据
    46. *
    47. * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
    48. * @return 影响行数
    49. */
    50. int insert($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));
    51. /**
    52. * 批量新增数据(MyBatis原生foreach方法)
    53. *
    54. * @param entities List<$!{tableInfo.name}> 实例对象列表
    55. * @return 影响行数
    56. */
    57. int insertBatch(@Param("entities") List<$!{tableInfo.name}> entities);
    58. /**
    59. * 批量新增或按主键更新数据(MyBatis原生foreach方法)
    60. *
    61. * @param entities List<$!{tableInfo.name}> 实例对象列表
    62. * @return 影响行数
    63. * @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常,请自行校验入参
    64. */
    65. int insertOrUpdateBatch(@Param("entities") List<$!{tableInfo.name}> entities);
    66. /**
    67. * 修改数据
    68. *
    69. * @param $!tool.firstLowerCase($!{tableInfo.name}) 实例对象
    70. * @return 影响行数
    71. */
    72. int update($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));
    73. /**
    74. * 通过主键删除数据
    75. *
    76. * @param $!pk.name 主键
    77. * @return 影响行数
    78. */
    79. int deleteById($!pk.shortType $!pk.name);
    80. }

  • 相关阅读:
    DM工作笔记-DATEADD(指定日期添加n个时间段)函数和其他时间函数
    Handler原理
    LeetCode 2897. 对数组执行操作使平方和最大【贪心,位运算,哈希表】2301
    linux 性能分析perf
    bat文件批量打开应用程序/快捷方式
    Drools实战
    NFT 的潜力:扩展的艺术品鉴定证书
    全真模拟题!PMP提分必练
    Qt-QTransform-内存结构-仿射变换-工作原理-C++
    分布式文件存储系统Minio实战
  • 原文地址:https://blog.csdn.net/xnian_/article/details/132857250