一:下载安装
给大家推荐一个工具,EasyCode。可以帮我们快速开发。避免我们去写一些枯燥的CRUD操作,直接上手干,先去插件市场进行安装
作者配置
安装完毕后,进行下面配置,此处配置作者
以下为几个模板文件
二:生成后的代码
好了 我们下看下生成后的代码如下所示,这边我提前配置了一个result统一返回类,所以controller返回都是result
2.1 Result
package com.example.demo.common; /** * @Auther: fxw * @Date: 2022/11/23 21:25 * @Description: 统一返回类 */ public class Result<T> { public Integer code; public String message; public T data; public Result(Integer code, String message) { this.code = code; this.message = message; } public Result(Integer code, String message, T data) { this.code = code; this.message = message; this.data = data; } public static Result ok() { return new Result(200, "success"); } public static Result error() { return new Result(500, "error"); } public static <T> Result ok(T data) { return new Result(200, "success", data); } public static <T> Result error(T data) { return new Result(500, "error", data); } }
2.2 contoller
package com.example.demo.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.api.ApiController; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.example.demo.entity.Category; import com.example.demo.service.CategoryService; import org.springframework.web.bind.annotation.*; import com.example.demo.common.Result; import javax.annotation.Resource; import java.io.Serializable; import java.util.List; /** * 商品分类(Category)表控制层 * * @Author fxw * @Date 2022-11-23 21:24:54 */ @RestController @RequestMapping("category") public class CategoryController extends ApiController { /** * 服务对象 */ @Resource private CategoryService categoryService; /** * 分页查询所有数据 * * @param page 分页对象 * @param category 查询实体 * @return 所有数据 */ @GetMapping public Result selectAll(Page<Category> page, Category category) { IPage<Category> data = this.categoryService.page(page, new QueryWrapper<>(category)); return Result.ok(data); } /** * 通过主键查询单条数据 * * @param id 主键 * @return 单条数据 */ @GetMapping("{id}") public Result selectOne(@PathVariable Serializable id) { return Result.ok(categoryService.getById(id)); } /** * 新增数据 * * @param category 实体对象 * @return 新增结果 */ @PostMapping public Result insert(@RequestBody Category category) { boolean result = this.categoryService.save(category); if (!result) { Result.error(); } return Result.ok(); } /** * 修改数据 * * @param category 实体对象 * @return 修改结果 */ @PutMapping public Result update(@RequestBody Category category) { boolean result = this.categoryService.updateById(category); if (!result) { Result.error(); } return Result.ok(); } /** * 删除数据 * * @param idList 主键结合 * @return 删除结果 */ @DeleteMapping public Result delete(@RequestParam("idList") List<Long> idList) { boolean result = this.categoryService.removeByIds(idList); if (!result) { Result.error(); } return Result.ok(); } }
2.3 mapper.java
package com.example.demo.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.example.demo.entity.Category; /** * 商品分类(Category)表数据库访问层 * * @Author fxw * @Date 2022-11-23 21:24:55 */ public interface CategoryMapper extends BaseMapper<Category> { }
2.4 entity
package com.example.demo.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableId; import java.io.Serializable; import lombok.Data; /** * 商品分类(Category)表实体类 * * @Author fxw * @Date 2022-11-23 21:24:55 */ @TableName(value = "category") @Data public class Category implements Serializable { @TableField(exist = false) private static final long serialVersionUID = 1L; /** * 主键 分类id主键 */ @TableId(value = "category_id", type = IdType.AUTO) private Integer categoryId; /** * 分类名称 分类名称 */ @TableField(value = "category_name") private String categoryName; /** * 分类层级 分类得类型, * 1:一级大分类 * 2:二级分类 * 3:三级小分类 */ @TableField(value = "category_level") private Integer categoryLevel; /** * 父层级id 父id 上一级依赖的id,1级分类则为0,二级三级分别依赖上一级 */ @TableField(value = "parent_id") private Integer parentId; /** * 图标 logo */ @TableField(value = "category_icon") private String categoryIcon; /** * 分类图 */ @TableField(value = "category_pic") private String categoryPic; }
2.5 service
package com.example.demo.service; import com.baomidou.mybatisplus.extension.service.IService; import com.example.demo.entity.Category; /** * 商品分类(Category)表服务接口 * * @Author fxw * @Date 2022-11-23 21:42:19 */ public interface CategoryService extends IService<Category> { }
2.6 service.impl
package com.example.demo.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.example.demo.mapper.CategoryMapper; import com.example.demo.entity.Category; import com.example.demo.service.CategoryService; import org.springframework.stereotype.Service; /** * 商品分类(Category)表服务实现类 * * @Author fxw * @Date 2022-11-23 21:42:19 */ @Service("categoryService") public class CategoryServiceImpl extends ServiceImpl<CategoryMapper, Category> implements CategoryService { }
2.7 mapper.xml
<?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="com.example.demo.mapper.CategoryMapper"> <resultMap type="com.example.demo.entity.Category" id="CategoryMap"> <result property="categoryId" column="category_id" jdbcType="INTEGER" /> <result property="categoryName" column="category_name" jdbcType="VARCHAR" /> <result property="categoryLevel" column="category_level" jdbcType="INTEGER" /> <result property="parentId" column="parent_id" jdbcType="INTEGER" /> <result property="categoryIcon" column="category_icon" jdbcType="VARCHAR" /> <result property="categoryPic" column="category_pic" jdbcType="VARCHAR" /> </resultMap> </mapper>
三:具体配置如下
3.1 controller.java.vm
##导入宏定义 $!{define.vm} ##设置表后缀(宏定义) #setTableSuffix("Controller") ##保存文件(宏定义) #save("/controller", "Controller.java") ##包路径(宏定义) #setPackageSuffix("controller") ##定义服务名 #set($serviceName = $!tool.append($!tool.firstLowerCase($!tableInfo.name), "Service")) ##定义实体对象名 #set($entityName = $!tool.firstLowerCase($!tableInfo.name)) import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.api.ApiController; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import $!{tableInfo.savePackageName}.entity.$!tableInfo.name; import $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service; import org.springframework.web.bind.annotation.*; import com.example.demo.common.Result; import javax.annotation.Resource; import java.io.Serializable; import java.util.List; ##表注释(宏定义) #tableComment("表控制层") @RestController @RequestMapping("$!tool.firstLowerCase($!tableInfo.name)") public class $!{tableName} extends ApiController { /** * 服务对象 */ @Resource private $!{tableInfo.name}Service $!{serviceName}; /** * 分页查询所有数据 * * @param page 分页对象 * @param $!entityName 查询实体 * @return 所有数据 */ @GetMapping public Result selectAll(Page<$!tableInfo.name> page, $!tableInfo.name $!entityName) { IPage<$!tableInfo.name> data =this.$!{serviceName}.page(page, new QueryWrapper<>($!entityName)); return Result.ok(data); } /** * 通过主键查询单条数据 * * @param id 主键 * @return 单条数据 */ @GetMapping("{id}") public Result selectOne(@PathVariable Serializable id) { return Result.ok( $!{serviceName}.getById(id)); } /** * 新增数据 * * @param $!entityName 实体对象 * @return 新增结果 */ @PostMapping public Result insert(@RequestBody $!tableInfo.name $!entityName) { boolean result = this.$!{serviceName}.save($!entityName); if (!result) { Result.error(); } return Result.ok(); } /** * 修改数据 * * @param $!entityName 实体对象 * @return 修改结果 */ @PutMapping public Result update(@RequestBody $!tableInfo.name $!entityName) { boolean result = this.$!{serviceName}.updateById($!entityName); if (!result) { Result.error(); } return Result.ok(); } /** * 删除数据 * * @param idList 主键结合 * @return 删除结果 */ @DeleteMapping public Result delete(@RequestParam("idList") List<Long> idList) { boolean result = this.$!{serviceName}.removeByIds(idList); if (!result) { Result.error(); } return Result.ok(); } }
3.2 dao.java.vm
##导入宏定义 $!{define.vm} ##设置表后缀(宏定义) #setTableSuffix("Mapper") ##保存文件(宏定义) #save("/mapper", "Mapper.java") ##包路径(宏定义) #setPackageSuffix("mapper") import com.baomidou.mybatisplus.core.mapper.BaseMapper; import $!{tableInfo.savePackageName}.entity.$!tableInfo.name; ##表注释(宏定义) #tableComment("表数据库访问层") public interface $!{tableName} extends BaseMapper<$!tableInfo.name> { }
3.3 entity.java.vm
##导入宏定义 $!{define.vm} ##保存文件(宏定义) #save("/entity", ".java") ##包路径(宏定义) #setPackageSuffix("entity") ##自动导入包(全局变量) $!{autoImport.vm} import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableId; import java.io.Serializable; import lombok.Data; ##表注释(宏定义) #tableComment("表实体类") @Data @TableName(value ="$!{tableInfo.obj.name}") public class $!{tableInfo.name} implements Serializable { @TableField(exist = false) private static final long serialVersionUID = 1L; #foreach($column in $tableInfo.pkColumn) #if(${column.comment})/** * ${column.comment} */#end @TableId(value = "$!{column.obj.name}" , type = IdType.AUTO) private $!{tool.getClsNameByFullName($column.type)} $!{column.name}; #end #foreach($column in $tableInfo.otherColumn) #if(${column.comment})/**${column.comment}*/#end #if(!($column.name.equals('deleted')||$column.name.equals('updateTime')||$column.name.equals('createTime')))@TableField(value = "$!{column.obj.name}")#end #if($column.name.equals('createTime')) /** 创建时间 */ @TableField(value = "$!{column.obj.name}" , fill = FieldFill.INSERT)#end #if($column.name.equals('updateTime')) /** 修改时间 */ @TableField(value = "$!{column.obj.name}" , fill = FieldFill.INSERT_UPDATE)#end #if($column.name.equals('deleted'))@TableLogic #end private $!{tool.getClsNameByFullName($column.type)} $!{column.name}; #end }
3.4 service.java.vm
##导入宏定义 $!{define.vm} ##设置表后缀(宏定义) #setTableSuffix("Service") ##保存文件(宏定义) #save("/service", "Service.java") ##包路径(宏定义) #setPackageSuffix("service") import com.baomidou.mybatisplus.extension.service.IService; import $!{tableInfo.savePackageName}.entity.$!tableInfo.name; ##表注释(宏定义) #tableComment("表服务接口") public interface $!{tableName} extends IService<$!tableInfo.name> { }
3.5 serviceImpl.java.vm
##导入宏定义 $!{define.vm} ##设置表后缀(宏定义) #setTableSuffix("ServiceImpl") ##保存文件(宏定义) #save("/service/impl", "ServiceImpl.java") ##包路径(宏定义) #setPackageSuffix("service.impl") import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import $!{tableInfo.savePackageName}.mapper.$!{tableInfo.name}Mapper; import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name}; import $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service; import org.springframework.stereotype.Service; ##表注释(宏定义) #tableComment("表服务实现类") @Service("$!tool.firstLowerCase($tableInfo.name)Service") public class $!{tableName} extends ServiceImpl<$!{tableInfo.name}Mapper, $!{tableInfo.name}> implements $!{tableInfo.name}Service { }
3.6 mapper.xml.vm
##引入mybatis支持 $!{mybatisSupport.vm} ##设置保存名称与保存位置 $!callback.setFileName($tool.append($!{tableInfo.name}, "Dao.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.obj.name" jdbcType="$!column.ext.jdbcType"/> #end </resultMap> </mapper>
四:一键生成
4.1 连接数据库
此处连接需要生成的数据库然后进行操作
4.2 具体操作
右击选择EasyCode点击GenerateCode
选中选择点击ok就完成了 注意我们的controller.java.vm中的包名路径就好了,具体如下图所示