代码生成器,生成统一返回result的内容的controller模板
作者:互联网
1.controller.java.vm 代码:
package ${package.Controller}; import ${package.Parent}.common.Result; //导入自定义的Result import cn.hutool.core.io.IoUtil; //导包 import cn.hutool.poi.excel.ExcelReader; //导包 import cn.hutool.poi.excel.ExcelUtil; //导包 import cn.hutool.poi.excel.ExcelWriter; //导包 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; //导包 import com.baomidou.mybatisplus.core.metadata.IPage; //导包 import com.baomidou.mybatisplus.extension.plugins.pagination.Page; //导包 import org.springframework.web.bind.annotation.*; //导包 import org.springframework.web.multipart.MultipartFile; //导包 import javax.annotation.Resource; //导包 import javax.servlet.ServletOutputStream; //导包 import javax.servlet.http.HttpServletResponse; //导包 import java.io.InputStream; //导包 import java.net.URLEncoder; //导包 import java.util.List; //导包 import ${package.Service}.${table.serviceName}; //导包, 相当于import com.example.demo.service.SpiderdataSpiderxrmmwService; /*其中${package.Service}就等于 com.example.demo.service,${table.serviceName}就等于SpiderdataSpiderxrmmwService*/ import ${package.Entity}.${entity}; //导包,相当于导入 import com.example.demo.entity.SpiderdataSpiderxrmmw; /*其中${package.Entity}就等于com.example.demo.entity,${entity}就等于SpiderdataSpiderxrmmw,一种Java的模板引擎语法*/ #if(${restControllerStyle}) import org.springframework.web.bind.annotation.RestController; #else import org.springframework.stereotype.Controller; #end #if(${superControllerClassPackage}) import ${superControllerClassPackage}; #end /** * <p> * $!{table.comment} 前端控制器 * </p> * * @author ${author} * @since ${date} */ #if(${restControllerStyle}) @RestController #else @Controller #end @RequestMapping("#if(${package.ModuleName})/${package.ModuleName}#end/#if(${controllerMappingHyphenStyle})${controllerMappingHyphen}#else${table.entityPath}#end") #if(${kotlin}) class ${table.controllerName}#if(${superControllerClass}) : ${superControllerClass}()#end #else #if(${superControllerClass}) public class ${table.controllerName} extends ${superControllerClass} { #else public class ${table.controllerName} { #end @Resource private ${table.serviceName} ${table.entityPath}Service; /*导Service的包,table.serviceName就是spiderdataSpiderxrmmwService,对应之前的如下内容 @Autowired private SpiderdataSpiderxrmmwService spiderdataSpiderxrmmwService; //使用@Autowired引入spiderdataSpiderxrmmwService类*/ //新增和修改接口 @PostMapping public Result save(@RequestBody ${entity} ${table.entityPath}){ //新增或者更新 return Result.success(${table.entityPath}Service.saveOrUpdate(${table.entityPath})); } //删除接口 @DeleteMapping("/{id}") public Result delete(@PathVariable Integer id){ return Result.success(${table.entityPath}Service.removeById(id)); //${table.entityPath} 就等于spiderdataSpiderxrmmw,只是换成一个变量,变成活的,可以自动变更的 } //查询所有内容接口 @GetMapping() public Result findAll(){ return Result.success(${table.entityPath}Service.list()); //返回查询到的所有数据 } //根据id查询 @GetMapping("/{id}") public Result findOne(@PathVariable Integer id){ return Result.success(${table.entityPath}Service.getById(id)); //返回查询到指定id的数据 } //分页查询 @GetMapping("/page") public Result findPage(@RequestParam Integer pageNum,@RequestParam Integer pageSize){ //此处没有写查询条件逻辑,因为太活了,所有不在模板中写了 IPage<${entity}> page = new Page<>(pageNum,pageSize); //新建一个page QueryWrapper<${entity}> queryWrapper = new QueryWrapper<>(); //新建一个queryWrapper /* 加判断逻辑 if(!"".equals(img_people)){ //表示如果该字段不为空值,则再进行查询 queryWrapper.like("img_people",img_people); //返回包含img_people的内容,其中column,为数据库中真实的字段名字,img_people,而非entity包中定义的别名imgpeople } if(!"".equals(img_title)){ //表示如果该字段不为空值,则再进行查询 queryWrapper.like("img_title",img_title); } if(!"".equals(splider_img_url)){ //表示如果该字段不为空值,则再进行查询 queryWrapper.like("splider_img_url",splider_img_url); }*/ queryWrapper.orderByDesc("id"); //通过id倒序显示 return Result.success(${table.entityPath}Service.page(page,queryWrapper)); //返回分页 } //批量删除接口 @PostMapping("/del/batch") //传入的参数为批量的id值列表 [1,2,3,...] public Result deleteBatch(@RequestBody List<Integer> ids){ return Result.success(${table.entityPath}Service.removeBatchByIds(ids)); } //导出接口 @GetMapping("/export") public void export(HttpServletResponse response) throws Exception{ //从数据库查出所有的数据 List<${entity}> list = ${table.entityPath}Service.list(); //通过工具类创建writer 写出到磁盘路径 //内存操作,写出到浏览器 ExcelWriter writer = ExcelUtil.getWriter(true); // //自定义标题别名 。导出的时候,不起别名,就可以获取到一个英文的模板 // writer.addHeaderAlias("spliderimgurl","照片url"); // writer.addHeaderAlias("imgtitle","照片标题"); // writer.addHeaderAlias("imgpeople","照片人名"); //一次性写出list内的对象到excel,使用默认样式,强制输出标题 writer.write(list,true); //把list对象写入到writer中 //设置浏览器响应的格式,基本上都是固定的,且必须要设置 response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8"); String fileName = URLEncoder.encode("${table.entityPath}","UTF-8"); //直接用${table.entityPath}作为导出文件的名字,可以修改为自己需要的中文,如:用户信息 response.setHeader("Content-Disposition","attachment;filename="+fileName+".xls"); ServletOutputStream out=response.getOutputStream(); //获取数据流 writer.flush(out, true); //把writer中的内容刷新到数据流中 out.close(); // 关闭writer,释放内存 writer.close(); //此处记得关闭输出Servlet流 IoUtil.close(out); } //导入接口 @PostMapping("/import") public Result imp(MultipartFile file) throws Exception{ //返回一个布尔值 InputStream inputStream=file.getInputStream(); //获取流文件内容 ExcelReader reader=ExcelUtil.getReader(inputStream); //第一种方式,通过javabean的方式读取Excel内的对象,要求导入的表头要是英文,和导出的英文字段要一致 // 比较推荐这种方法 List<${entity}> list = reader.readAll(${entity}.class); //定义一个SpiderdataSpiderxrmmw 用于接收读取到的内容 System.out.println(list); //保持数据到数据库 //${table.entityPath}Service.save(one); //save方法,插入单个 ${table.entityPath}Service.saveBatch(list) ; //saveBatch方法批量插入 return Result.success(true); //返回一个true,表示插入成功 } } #end
2.D:\myvuep\demo\src\main\java\com\example\demo\common 文件夹下的 Result.java的代码:
package com.example.demo.common; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; //接口统一返回包装类 //建立一个统一的包装类 //添加一些统一的定义,用来返回给前端,从而进行判断 @Data @NoArgsConstructor @AllArgsConstructor public class Result { private String code; private String msg; private Object data; //无数据的成功返回定义,即无参构造 public static Result success(){ return new Result(Constants.CODE_200,"",null); } //有数据的返回成功的定义,即有参构造 public static Result success(Object data){ return new Result(Constants.CODE_200,"",data); } //错误的返回定义,可以自定义返回的code和msg内容 public static Result error(String code,String msg){ return new Result(code,msg,null); } //定义一个默认的错误,直接报系统错误 public static Result error(){ return new Result(Constants.CODE_500,"系统错误",null); } }
3.生成的UsersUserprofileController.java 的内容:
package com.example.demo.controller; import com.example.demo.common.Result; //导入自定义的Result import cn.hutool.core.io.IoUtil; //导包 import cn.hutool.poi.excel.ExcelReader; //导包 import cn.hutool.poi.excel.ExcelUtil; //导包 import cn.hutool.poi.excel.ExcelWriter; //导包 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; //导包 import com.baomidou.mybatisplus.core.metadata.IPage; //导包 import com.baomidou.mybatisplus.extension.plugins.pagination.Page; //导包 import org.springframework.web.bind.annotation.*; //导包 import org.springframework.web.multipart.MultipartFile; //导包 import javax.annotation.Resource; //导包 import javax.servlet.ServletOutputStream; //导包 import javax.servlet.http.HttpServletResponse; //导包 import java.io.InputStream; //导包 import java.net.URLEncoder; //导包 import java.util.List; //导包 import com.example.demo.service.IUsersUserprofileService; //导包, 相当于import com.example.demo.service.SpiderdataSpiderxrmmwService; /*其中com.example.demo.service就等于 com.example.demo.service,IUsersUserprofileService就等于SpiderdataSpiderxrmmwService*/ import com.example.demo.entity.UsersUserprofile; //导包,相当于导入 import com.example.demo.entity.SpiderdataSpiderxrmmw; /*其中com.example.demo.entity就等于com.example.demo.entity,UsersUserprofile就等于SpiderdataSpiderxrmmw,一种Java的模板引擎语法*/ import org.springframework.web.bind.annotation.RestController; /** * <p> * 前端控制器 * </p> * * @author baomidou * @since 2022-07-16 */ @RestController @RequestMapping("/users-userprofile") public class UsersUserprofileController { @Resource private IUsersUserprofileService usersUserprofileService; /*导Service的包,table.serviceName就是spiderdataSpiderxrmmwService,对应之前的如下内容 @Autowired private SpiderdataSpiderxrmmwService spiderdataSpiderxrmmwService; //使用@Autowired引入spiderdataSpiderxrmmwService类*/ //新增和修改接口 @PostMapping public Result save(@RequestBody UsersUserprofile usersUserprofile){ //新增或者更新 return Result.success(usersUserprofileService.saveOrUpdate(usersUserprofile)); } //删除接口 @DeleteMapping("/{id}") public Result delete(@PathVariable Integer id){ return Result.success(usersUserprofileService.removeById(id)); //usersUserprofile 就等于spiderdataSpiderxrmmw,只是换成一个变量,变成活的,可以自动变更的 } //查询所有内容接口 @GetMapping() public Result findAll(){ return Result.success(usersUserprofileService.list()); //返回查询到的所有数据 } //根据id查询 @GetMapping("/{id}") public Result findOne(@PathVariable Integer id){ return Result.success(usersUserprofileService.getById(id)); //返回查询到指定id的数据 } //分页查询 @GetMapping("/page") public Result findPage(@RequestParam Integer pageNum,@RequestParam Integer pageSize){ //此处没有写查询条件逻辑,因为太活了,所有不在模板中写了 IPage<UsersUserprofile> page = new Page<>(pageNum,pageSize); //新建一个page QueryWrapper<UsersUserprofile> queryWrapper = new QueryWrapper<>(); //新建一个queryWrapper /* 加判断逻辑 if(!"".equals(img_people)){ //表示如果该字段不为空值,则再进行查询 queryWrapper.like("img_people",img_people); //返回包含img_people的内容,其中column,为数据库中真实的字段名字,img_people,而非entity包中定义的别名imgpeople } if(!"".equals(img_title)){ //表示如果该字段不为空值,则再进行查询 queryWrapper.like("img_title",img_title); } if(!"".equals(splider_img_url)){ //表示如果该字段不为空值,则再进行查询 queryWrapper.like("splider_img_url",splider_img_url); }*/ queryWrapper.orderByDesc("id"); //通过id倒序显示 return Result.success(usersUserprofileService.page(page,queryWrapper)); //返回分页 } //批量删除接口 @PostMapping("/del/batch") //传入的参数为批量的id值列表 [1,2,3,...] public Result deleteBatch(@RequestBody List<Integer> ids){ return Result.success(usersUserprofileService.removeBatchByIds(ids)); } //导出接口 @GetMapping("/export") public void export(HttpServletResponse response) throws Exception{ //从数据库查出所有的数据 List<UsersUserprofile> list = usersUserprofileService.list(); //通过工具类创建writer 写出到磁盘路径 //内存操作,写出到浏览器 ExcelWriter writer = ExcelUtil.getWriter(true); // //自定义标题别名 。导出的时候,不起别名,就可以获取到一个英文的模板 // writer.addHeaderAlias("spliderimgurl","照片url"); // writer.addHeaderAlias("imgtitle","照片标题"); // writer.addHeaderAlias("imgpeople","照片人名"); //一次性写出list内的对象到excel,使用默认样式,强制输出标题 writer.write(list,true); //把list对象写入到writer中 //设置浏览器响应的格式,基本上都是固定的,且必须要设置 response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8"); String fileName = URLEncoder.encode("usersUserprofile","UTF-8"); //直接用usersUserprofile作为导出文件的名字,可以修改为自己需要的中文,如:用户信息 response.setHeader("Content-Disposition","attachment;filename="+fileName+".xls"); ServletOutputStream out=response.getOutputStream(); //获取数据流 writer.flush(out, true); //把writer中的内容刷新到数据流中 out.close(); // 关闭writer,释放内存 writer.close(); //此处记得关闭输出Servlet流 IoUtil.close(out); } //导入接口 @PostMapping("/import") public Result imp(MultipartFile file) throws Exception{ //返回一个布尔值 InputStream inputStream=file.getInputStream(); //获取流文件内容 ExcelReader reader=ExcelUtil.getReader(inputStream); //第一种方式,通过javabean的方式读取Excel内的对象,要求导入的表头要是英文,和导出的英文字段要一致 // 比较推荐这种方法 List<UsersUserprofile> list = reader.readAll(UsersUserprofile.class); //定义一个SpiderdataSpiderxrmmw 用于接收读取到的内容 System.out.println(list); //保持数据到数据库 //usersUserprofileService.save(one); //save方法,插入单个 usersUserprofileService.saveBatch(list) ; //saveBatch方法批量插入 return Result.success(true); //返回一个true,表示插入成功 } }
4.
标签:代码生成,img,controller,导包,Result,table,import,public,result 来源: https://www.cnblogs.com/jingzaixin/p/16484991.html