前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >我自己常用的模板(不断更新)

我自己常用的模板(不断更新)

作者头像
CaesarChang张旭
发布2021-01-26 15:31:51
5680
发布2021-01-26 15:31:51
举报
文章被收录于专栏:悟道

application.yml

server: port: 80 servlet: context-path: / #项目的上下文路径 spring: datasource: url: jdbc:mysql://localhost:3306/travel username: root password: root driver-class-name: com.mysql.jdbc.Driver hikari:idle-timeout: 60000 maximum-pool-size: 30 minimum-idle: 10 thymeleaf: cache: false # mybatis plus配置 mybatis-plus: mapper-locations: classpath:/mybatis/*.xml #加载映射文件 type-aliases-package: com.lxs.travel.domain #别名搜索的包 configuration: lazy-loading-enabled: true #打开懒加载 aggressive-lazy-loading: false #关闭积极懒加载

mybatis分页

代码语言:javascript
复制
@Configuration
@MapperScan("com.zx.travel.dao")
public class MybatisPlusConfig {

    @Bean
    public PageInterceptor pageInterceptor(){
        return new PageInterceptor();
    }

}

@RequestMapping("/page") public String page(Route route, @RequestParam(defaultValue = "1") Integer pageNum, @RequestParam(defaultValue = "10") Integer pageSize, Model model) { PageInfo<Route> page = routeService.findPage(route, pageNum, pageSize); model.addAttribute("page", page); //查询所有分类生成下拉框 List<Category> categories = categoryService.find(); model.addAttribute("categories", categories); List<Seller> sellers = sellerService.find(new Seller()); model.addAttribute("sellers", sellers); //用于页面回显 model.addAttribute("route", route); return "route/list"; }

批量删除 @RequestMapping("/deleteChecked") public String deleteChecked(@RequestParam("ids") String[] ids) { JsonResult jsonResult=new JsonResult(); //要删除的id int deleteId=-1; jsonResult.setCode(0); for (String id : ids) { if (id.contains("[")) { deleteId = Integer.parseInt(id.replace("[", "")); } if (id.contains("]")) { deleteId = Integer.parseInt(id.replace("]", "")); } boolean b = questionsService.deleteQuestion(deleteId); if (b == false) { jsonResult.setCode(-1); } } return new Gson().toJson(jsonResult); } <!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org" > <head> <meta charset="utf-8"> <title></title> <link rel="stylesheet" type="text/css" href="../../static/css/show.css" th:href="@{/css/show.css}"/> <link rel="stylesheet" type="text/css" href="../../static/css/list.css" th:href="@{/css/list.css}"/> <link rel="stylesheet" type="text/css" href="../../static/css/reset.css" th:href="@{/css/reset.css}"/> <link href="https://cdn.bootcdn.net/ajax/libs/bootstrap-table/1.17.1/bootstrap-table.min.css" rel="stylesheet"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script> <script src="https://cdn.bootcdn.net/ajax/libs/bootstrap-table/1.17.1/bootstrap-table.min.js"></script> <script src="https://cdn.bootcdn.net/ajax/libs/bootstrap-table/1.17.1/locale/bootstrap-table-zh-CN.min.js"></script> </head> <!--By CaesarChang张旭--> <body> <div id="parent" > <span id="span">问答知识库</span> <button class="btn-info" id="newAdd" >新增+</button> <button class="btn-info">批量导入</button> <button id="deleteChecked" class="btn-info">批量删除</button> </div> <br/> <table id="questions_list"></table> <a href="/downloadExcelTemplate/template1.xlsx" id="downloadBtn">下载模板文件</a> <script> $(function(){ function AddFuncionAlty(value,row,index) { //要创建的按钮 return [ '<button id="TableDelete" type="button" class="btn btn-danger">删除</button>&nbsp;&nbsp;', '<button id="TableEditor" type="button" class="btn btn-default">编辑</button>' ].join("") } window.operateEvents={ //点击事件 "click #TableDelete": (e,value,row,index) => { const myMsg = confirm("确认删除嘛?"); if(myMsg === true) { $.ajax({ url:'/question/deleteQuestion/'+row.id, type: 'get', success: function(data) { if(data.code === -1){ alert("删除失败"); }else { window.location.reload(); } } }); } }, // 捕捉到单条编辑按钮点击事件 "click #TableEditor": (e,value,row,index) => { // 跳转到单条编辑请求 window.kk = "/toUpdate/"+row.id } } $("#questions_list").bootstrapTable({ url:"/question/questionListPage",//数据地址 striped:true,//是否显示行的间隔 pageNumber:1,//初始化加载第几页 pagination:true,//是否分页 sidePagination:'server', pageSize:5, pageList:[5,10,15], queryParamsType:'', queryParams:function(params){ var temp = { pageNum:params.pageNumber, pageSize:params.pageSize }; return temp; }, columns:[ { checkbox:true }, { title:"标准问题", field:"questionName", sortable:false }, { title:"领域", field:"field", sortable:false }, { title:"意图", field:"intention", sortable:false }, { title:"关键词", field:"keywords", sortable:false }, { title:"相似问题", field:"similarQuestion", sortable:false }, { title:"操作", field:"Button", events:operateEvents, //给按钮注册事件 formatter:AddFuncionAlty,//给表格中增加按钮 } ] }); //批量删除界面 $("#deleteChecked").click(()=>{ var rows = $("#questions_list").bootstrapTable('getSelections');// 获得要删除的数据 if (rows.length == 0) {// rows 主要是为了判断是否选中,下面的else内容才是主要 alert("请先选择要删除的记录!"); return; } else { const myMsg = confirm("确认删除嘛?"); if(myMsg === true) { var ids = new Array();// 声明一个数组 $(rows).each(function() {// 通过获得别选中的来进行遍历 ids.push(this.id);// cid为获得到的整条数据中的一列 }); $.ajax({ url :'/question/deleteChecked', data : "ids="+JSON.stringify(ids), type : "post", dataType : "json", success : function(data) { if(data.code==-1){ alert("删除失败") } window.location.reload(); } }); } } }) // 新增数据按钮点击事件 $("#newAdd").click(() => { // TODO 跳转到新增页面 alert("点击成功") }) }); </script> </body> </html>

@RequestMapping("/page") public String page(Route route, @RequestParam(defaultValue = "1") Integer pageNum, @RequestParam(defaultValue = "10") Integer pageSize, Model model) { PageInfo<Route> page = routeService.findPage(route, pageNum, pageSize); model.addAttribute("page", page); //查询所有分类生成下拉框 List<Category> categories = categoryService.find(); model.addAttribute("categories", categories); List<Seller> sellers = sellerService.find(new Seller()); model.addAttribute("sellers", sellers); //用于页面回显 model.addAttribute("route", route); return "route/list"; }

批量上传 @ResponseBody @CrossOrigin @PostMapping("/upload") public JsonResult<Integer> inputQuestions(@RequestParam("file") MultipartFile file, HttpServletRequest request) throws IOException { JsonResult<Integer> jsonResult = new JsonResult<>(); if (file == null) { jsonResult.setCode(201); jsonResult.setMsg("导入文件不能为空!!"); jsonResult.setSuccess(false); jsonResult.setData(0); return jsonResult; } else { InputStream is = file.getInputStream(); String fileName = file.getOriginalFilename(); if (!fileName.matches("^.+\\.(?i)(xls)$") && !fileName.matches("^.+\\.(?i)(xlsx)$")) { jsonResult.setCode(202); jsonResult.setMsg("导入文件格式不正确!!"); jsonResult.setSuccess(false); jsonResult.setData(0); return jsonResult; } else { Workbook wb = null; if (fileName.matches("^.+\\.(?i)(xlsx)$")) { //xlsx格式 wb = new XSSFWorkbook(is); } else { //xls格式 wb = new HSSFWorkbook(is); } if (wb != null) { //读取第一个Sheet Sheet sheet = wb.getSheetAt(0); if (sheet != null) { //最先读取首行 boolean firstRow = true; List<Questions> questionsList = new ArrayList<>(); boolean isThrow = false; // 成功插入数据库的数量 int count = 0; //根据问题名称判断是否重复 // List<String> questionsNameList = questionsService.getQuestionsName(); try { if (sheet.getLastRowNum() > 0) { //开始循环行 for (int i = sheet.getFirstRowNum(); i <= sheet.getLastRowNum(); i++) { Questions questions = new Questions(); Answers answers = new Answers(); questions.setCreateTime(new Date()); Row row = sheet.getRow(i); //首行提取注解 if (firstRow) { if ("标准问题问题文本长度不超过200字".equals(row.getCell(0).getStringCellValue()) && "领域".equals(row.getCell(1).getStringCellValue()) && "意图".equals(row.getCell(2).getStringCellValue()) && "关键词 多个关键词通过;号间隔".equals(row.getCell(3).getStringCellValue()) && "相似问题多个相似问题通过;号间隔".equals(row.getCell(4).getStringCellValue()) && "答案".equals(row.getCell(5).getStringCellValue()) ) { firstRow = false; } else { jsonResult.setCode(203); jsonResult.setMsg("导入文件模板不正确!!"); jsonResult.setSuccess(false); jsonResult.setData(0); return jsonResult; } } else { //忽略空白行 if (row == null || ExcelUtil.isRowEmpty(row)) { continue; } int theRow = i + 1; if (row.getCell(0) != null) { row.getCell(0).setCellType(CellType.STRING); String questionName = row.getCell(0).getStringCellValue(); if (StringUtils.isEmpty(questionName)) { isThrow = true; jsonResult.setMsg("导入失败(第" + theRow + "行,标准问题不能为空)"); throw new RuntimeException("导入失败(第" + theRow + "行,标准问题不能为空)"); } else { questions.setStandardQuestion(questionName); } } else { isThrow = true; jsonResult.setMsg("导入失败(第" + theRow + "行,标准问题不能为空)"); throw new RuntimeException("导入失败(第" + theRow + "行,标准问题不能为空)"); } if (row.getCell(1) != null) { row.getCell(1).setCellType(CellType.STRING); String field = row.getCell(1).getStringCellValue(); if (StringUtils.isEmpty(field)) { isThrow = true; jsonResult.setMsg("导入失败(第" + theRow + "行,领域不能为空)"); throw new RuntimeException("导入失败(第" + theRow + "行,领域不能为空)"); } else { questions.setField(field); } } else { isThrow = true; jsonResult.setMsg("导入失败(第" + theRow + "行,领域不能为空)"); throw new RuntimeException("导入失败(第" + theRow + "行,领域不能为空)"); } if (row.getCell(2) != null) { row.getCell(2).setCellType(CellType.STRING); String intention = row.getCell(2).getStringCellValue(); if (StringUtils.isEmpty(intention)) { isThrow = true; jsonResult.setMsg("导入失败(第" + theRow + "行,意图不能为空)"); throw new RuntimeException("导入失败(第" + theRow + "行,意图不能为空)"); } else { questions.setIntention(intention); } } else { isThrow = true; jsonResult.setMsg("导入失败(第" + theRow + "行,意图不能为空)"); throw new RuntimeException("导入失败(第" + theRow + "行,意图不能为空)"); } if (row.getCell(3) != null) { row.getCell(3).setCellType(CellType.STRING); String keywords = row.getCell(3).getStringCellValue(); if (StringUtils.isEmpty(keywords)) { isThrow = true; jsonResult.setMsg("导入失败(第" + theRow + "行,关键词不能为空)"); throw new RuntimeException("导入失败(第" + theRow + "行,关键词不能为空)"); } else { questions.setKeywords(keywords); } } else { isThrow = true; jsonResult.setMsg("导入失败(第" + theRow + "行,关键词不能为空)"); throw new RuntimeException("导入失败(第" + theRow + "行,关键词不能为空)"); } if (row.getCell(4) != null) { row.getCell(4).setCellType(CellType.STRING); String synonymicQuestions = row.getCell(4).getStringCellValue(); if (StringUtils.isEmpty(synonymicQuestions)) { isThrow = true; jsonResult.setMsg("导入失败(第" + theRow + "行,相似问题不能为空)"); throw new RuntimeException("导入失败(第" + theRow + "行,相似问题不能为空)"); } else { questions.setSynonymicQuestions(synonymicQuestions); } } else { isThrow = true; jsonResult.setMsg("导入失败(第" + theRow + "行,相似问题不能为空)"); throw new RuntimeException("导入失败(第" + theRow + "行,相似问题不能为空)"); } if (row.getCell(5) != null) { row.getCell(5).setCellType(CellType.STRING); String answer = row.getCell(5).getStringCellValue(); if (StringUtils.isEmpty(answer)) { isThrow = true; jsonResult.setMsg("导入失败(第" + theRow + "行,答案不能为空)"); throw new RuntimeException("导入失败(第" + theRow + "行,答案不能为空)"); } else { answers.setContent(answer); } } else { isThrow = true; jsonResult.setMsg("导入失败(第" + theRow + "行,相似问题不能为空)"); throw new RuntimeException("导入失败(第" + theRow + "行,相似问题不能为空)"); } if (questionsService.insert(questions)) { answers.setQueId(questions.getId()); if (answersService.insert(answers)) { count++; } } } } if (count < questionsList.size()) { jsonResult.setCode(204); jsonResult.setMsg("部分数据存储出错!!"); jsonResult.setSuccess(false); } else { jsonResult.setCode(200); jsonResult.setMsg("成功导入模板!!"); jsonResult.setSuccess(true); } jsonResult.setData(count); return jsonResult; } } catch (Exception e) { jsonResult.setCode(205); jsonResult.setMsg("出错!!" + e); jsonResult.setSuccess(false); jsonResult.setData(0); e.printStackTrace(); } } } } } return jsonResult; }

<div> <nav aria-label="Page navigation"> <ul class="pagination"> <li id="first"> <a href="javascript:void(0);"> <span aria-hidden="true">首页</span> </a> </li> <li id="prev"> <a href="javascript:void(0);" aria-label="Previous"> <span aria-hidden="true">上一页</span> </a> </li> <li name="pageNum" th:each="i : ${page.navigatepageNums}" th:class="${i} == ${page.pageNum} ? 'active'"><a href="javascript:void(0);" th:text="${i}"></a></li> <li id="next"> <a href="javascript:void(0);" aria-label="Next"> <span aria-hidden="true">下一页</span> </a> </li> <li id="last"> <a href="javascript:void(0);"> <span aria-hidden="true">末页</span> </a> </li> <span style="font-size: 20px;margin-left: 5px;" th:text="|共条 ${page.total} 记录,共${page.pages}页, 每页行数|"> </span> <select id="setRows"> <option value="5" th:selected="5 == ${page.pageSize}">5</option> <option value="10" th:selected="10 == ${page.pageSize}">10</option> <option value="20" th:selected="20 == ${page.pageSize}">20</option> <option value="30" th:selected="30 == ${page.pageSize}">30</option> </select> </ul> </nav> </div> <!-- TODO 分页js --> <script th:inline="javascript"> //得到初始化变量 var pageNum = [[${page.pageNum}]]; var pages = [[${page.pages}]]; //总页数 var hasNextPage = [[${page.hasNextPage}]];//true:还有下一页 var hasPreviousPage = [[${page.hasPreviousPage}]]; //还有上一页 if (!hasPreviousPage) { $("#prev").addClass("disabled"); $("#first").addClass("disabled"); } if (!hasNextPage) { $("#next").addClass("disabled"); $("#last").addClass("disabled"); } //设置按钮的监听事件 $("#first").click(function () { if (!$("#first").hasClass("disabled")) { $("#pageNum").val(1); $("#qf").submit(); } }); $("#prev").click(function () { if (!$("#prev").hasClass("disabled")) { $("#pageNum").val(pageNum - 1); $("#qf").submit(); } }); $("#next").click(function () { if (!$("#next").hasClass("disabled")) { $("#pageNum").val(pageNum + 1); $("#qf").submit(); } }); $("#last").click(function () { if (!$("#last").hasClass("disabled")) { $("#pageNum").val(pages); $("#qf").submit(); } }); //页码分页 $("li[name='pageNum']").click(function () { if (!$(this).hasClass("active")) { $("#pageNum").val($(this).children("a").html()); $("#qf").submit(); } }); //设置每页行数 $("#setRows").change(function () { $("#pageSize").val($(this).val()); $("#pageNum").val(1); $("#qf").submit(); }); function deleteIs(){ if (!confirm('是否确认删除')) { document.getElementById("deleteHref").href="https://www.baidu.com/"; return false; }} </script>

文件下载: /** * 跳转下载(下载模板 restful的name不同 可以下载不同文件 * By CaesarChang 张旭 * */ @GetMapping(value = "/downloadExcelTemplate/{name}") public void downFrozenTemplate(HttpServletRequest request, HttpServletResponse response,@PathVariable("name") String name) { FileInputStream inputStream =null; ServletOutputStream out=null; try { //设置下载文件名字 String fileName = "模板"+ new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xlsx"; //设置响应字符 response.setCharacterEncoding("UTF-8"); response.setContentType("content-type:octet-stream"); //在文件服务器的路径 String filePath = getClass().getResource("/templates/model/" + name).getPath(); //获取游览器信息 进行类型判断 String userAgent = request.getHeader("User-Agent"); if (userAgent.contains("MSIE") || userAgent.contains("Trident")) { fileName = URLEncoder.encode(fileName, "UTF-8"); } else { // 非IE浏览器的处理: fileName = new String((fileName).getBytes("UTF-8"), "ISO-8859-1"); } //解码(路径里面的中文也会转化) filePath = URLDecoder.decode(filePath, "UTF-8"); //设置响应头信息 response.setHeader("Content-Disposition", "attachment;fileName=" + fileName); //获得输入流 输出流 inputStream = new FileInputStream(filePath); out = response.getOutputStream(); int b = 0; byte[] buffer = new byte[1024]; //写入到缓冲区 while ((b = inputStream.read(buffer)) != -1) { //写到输出流(out)中 out.write(buffer, 0, b); } } catch (IOException e) { e.printStackTrace(); } finally { //关闭 try { inputStream.close(); if (out != null) { out.flush(); out.close(); } } catch (IOException e) { e.printStackTrace(); } } }

UserService

代码语言:javascript
复制
public interface UserService {
    public PageInfo<User> findPage(User condition,int pageNum,int pageSize);

    public List<User> find(User condition);

    public int add(User user);
    public User findById(Integer id);

    public int delete(Integer id);
    public int update(User user);
}

UserServiceImpl

代码语言:javascript
复制
@Service
public class UserServiceImpl  implements UserService {



    @Autowired
    private UserDao userDao;

    @Override
    public PageInfo<User> findPage(User condition, int pageNum, int pageSize) {
        return PageHelper.startPage(pageNum,pageSize).doSelectPageInfo(()->{
            userDao.selectList(Wrappers.<User>query());
        });
    }

    @Override
    public List<User> find(User condition) {
        return userDao.selectList(Wrappers.query());
    }

    @Override
    public int add(User user) {
        return userDao.insert(user);
    }

    @Override
    public User findById(Integer id) {
        return userDao.selectById(id);
    }

    @Override
    public int delete(Integer id) {
        return userDao.deleteById(id);
    }

    @Override
    public int update(User user) {
        return userDao.update(user,Wrappers.<User>update());
    }
}

pom.xml

<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.3.2</version> </dependency> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.1.11</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.46</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.3</version> </dependency>

MybatisPlusConfig @Configuration @MapperScan("com.zx.travel.dao") public class MybatisPlusConfig { @Bean public PageInterceptor pageInterceptor(){ return new PageInterceptor(); } }

SpringBOot日期转换 /** * @Author CaesarChang张旭 * @Date 2020/11/11 8:10 下午 * @Version 1.0 */ import org.springframework.core.convert.converter.Converter; import org.springframework.stereotype.Component; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; @Component public class DateConverterConfig implements Converter<String, Date> { private static final List<String> formarts = new ArrayList<>(4); static { formarts.add("yyyy-MM"); formarts.add("yyyy-MM-dd"); formarts.add("yyyy-MM-dd hh:mm"); formarts.add("yyyy-MM-dd hh:mm:ss"); } @Override public Date convert(String source) { String value = source.trim(); if ("".equals(value)) { return null; } if (source.matches("^\\d{4}-\\d{1,2}$")) { return parseDate(source, formarts.get(0)); } else if (source.matches("^\\d{4}-\\d{1,2}-\\d{1,2}$")) { return parseDate(source, formarts.get(1)); } else if (source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}$")) { return parseDate(source, formarts.get(2)); } else if (source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}:\\d{1,2}$")) { return parseDate(source, formarts.get(3)); } else { throw new IllegalArgumentException("Invalid boolean value '" + source + "'"); } } /*** 格式化日期 * @param dateStr String 字符型日期 * @param format String 格式 * @return Date 日期 */ public Date parseDate(String dateStr, String format) { Date date = null; try { DateFormat dateFormat = new SimpleDateFormat(format); date = dateFormat.parse(dateStr); } catch (Exception e) { } return date; } }

上传图片 import com.baomidou.mybatisplus.extension.api.R; import com.github.pagehelper.PageInfo; import com.zx.travel.bean.Category; import com.zx.travel.bean.Route; import com.zx.travel.bean.RouteImg; import com.zx.travel.bean.Seller; import com.zx.travel.service.CategoryService; import com.zx.travel.service.RouteImgService; import com.zx.travel.service.RouteService; import com.zx.travel.service.SellerService; import org.apache.commons.io.FilenameUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.UUID; /** * @Author CaesarChang张旭 * @Date 2020/11/15 3:08 下午 * @Version 1.0 */ @Controller @RequestMapping("/admin/route") public class RouteController { @Autowired private RouteService routeService; @Autowired private CategoryService categoryService; @Autowired private SellerService sellerService; @Autowired private RouteImgService imgService; /*** 分页 * @param route * @param pageNum * @param pageSize * @param model * @return */ @RequestMapping("/page") public String page(Route route, @RequestParam(defaultValue = "1") Integer pageNum, @RequestParam(defaultValue = "10") Integer pageSize, Model model) { PageInfo<Route> page = routeService.findPage(route, pageNum, pageSize); model.addAttribute("page", page); //查询所有分类生成下拉框 List<Category> categories = categoryService.find(); model.addAttribute("categories", categories); List<Seller> sellers = sellerService.find(new Seller()); model.addAttribute("sellers", sellers); //用于页面回显 model.addAttribute("route", route); return "route/list"; } /*** 删除 * @param id * @return */ @RequestMapping("/delete/{id}") public String delete(@PathVariable("id") Integer id) { routeService.delete(id); return "redirect:/admin/route/page"; } /*** 跳到添加页面 * @param model * @return */ @RequestMapping("/toadd") public String toAdd(Model model) { //查询所有分类生成下拉框 List<Category> categories = categoryService.find(); model.addAttribute("categories", categories); List<Seller> sellers = sellerService.find(new Seller()); model.addAttribute("sellers", sellers); return "route/add"; } /*** 执行添加 * @param route * @param rimageFile * * @param request * * @return * @throws IOException */ @RequestMapping("/doadd") public String doAdd(Route route, @RequestParam("rimageFile") MultipartFile rimageFile, HttpServletRequest request) throws IOException { performRImage(route, rimageFile, request); routeService.add(route); return "redirect:/admin/route/page"; } private void performRImage(Route route, @RequestParam("rimageFile") MultipartFile rimageFile, HttpServletRequest request) throws IOException { //项目的部署目录 + img/product/rimage/ String savePath = request.getServletContext().getRealPath("img/product/rimage/"); //处理随机文件名 String fileName = UUID.randomUUID().toString().replaceAll("-", "") + "." + FilenameUtils.getExtension(rimageFile.getOriginalFilename()); //上传目录如果不存在,先创建 File savePathDir = new File(savePath); if (!savePathDir.exists()) { savePathDir.mkdirs(); } //保存文件 rimageFile.transferTo(new File(savePathDir, fileName)); //设置线路的rimage属性=文件的相对路径 route.setRimage("img/product/rimage/" + fileName); } @RequestMapping("/toupdate/{id}") public String toUpdate(@PathVariable("id") Integer id, Model model) { Route route = routeService.findById(id); model.addAttribute("route", route); //查询所有分类生成下拉框 List<Category> categories = categoryService.find(); model.addAttribute("categories", categories); List<Seller> sellers = sellerService.find(new Seller()); model.addAttribute("sellers", sellers); return "route/update"; } @RequestMapping("/doupdate") public String doUpdate(Route route, @RequestParam("rimageFile") MultipartFile rimageFile, HttpServletRequest request) throws IOException { performRImage(route, rimageFile, request); routeService.update(route); return "redirect:/admin/route/page"; } @RequestMapping("/toimage/{id}") public String toImage(@PathVariable("id") Integer id, Model model) { Route byId = routeService.findById(id); model.addAttribute("route", byId); return "route/image"; } @RequestMapping("/doimage") public String doImage(Integer rid, @RequestParam("bigPicFile") MultipartFile[] bigPicFile, @RequestParam("smallPicFile") MultipartFile[] smallPicFile, HttpServletRequest request) throws Exception { List<String> bigPic = new ArrayList<>(); List<String> smallPic = new ArrayList<>(); String path = request.getServletContext().getRealPath("/"); for (MultipartFile f : bigPicFile) { File bigPath = new File(path + "img\\product\\size4\\"); if (!bigPath.exists()) { bigPath.mkdirs(); } String fileName = UUID.randomUUID().toString().replace("-", "") + "." + FilenameUtils.getExtension(f.getOriginalFilename()); f.transferTo(new File(bigPath, fileName)); bigPic.add("img/product/size4/" + fileName); } for (MultipartFile f : smallPicFile) { File smallPath = new File(path + "img\\product\\size2\\"); if (!smallPath.exists()) { smallPath.mkdirs(); } String fileName = UUID.randomUUID().toString().replace("-", "") + "." + FilenameUtils.getExtension(f.getOriginalFilename()); f.transferTo(new File(smallPath, fileName)); smallPic.add("img/product/size2/" + fileName); } //要添加的图片列表 List<RouteImg> ris = new ArrayList<>(); for (int i=0; i<bigPic.size(); i++) { RouteImg img = new RouteImg(); img.setRid(rid); img.setBigpic(bigPic.get(i)); img.setSmallpic(smallPic.get(i)); ris.add(img); } imgService.saveImg(rid, ris); return "redirect:/admin/route/page"; } }

多选框,删除全部 @RequestMapping("/delete") public String deleteChecked(@RequestParam("ids") Integer[] ids) { for (Integer id : ids) { userService.delete(id); } return "redirect:/admin/user/page"; }

~关注我 带你看更多精品技术和面试必备

在我脑子里泡了这么久 ,可以点个赞吗 ! 累 ,

么么哒!!!!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/11/13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • mybatis分页
  • UserService
  • UserServiceImpl
    • pom.xml
    • ~关注我 带你看更多精品技术和面试必备
    相关产品与服务
    数据保险箱
    数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档