ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

代码生成器,生成统一返回result的内容的controller模板

2022-07-16 19:34:15  阅读:164  来源: 互联网

标签:代码生成 img controller 导包 Result table import public result


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有