其他分享
首页 > 其他分享> > 代码生成器,生成统一返回result的内容的controller模板

代码生成器,生成统一返回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