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

奋斗吧
奋斗吧
擅长邻域:未填写

标签: 我自己常用的模板(不断更新) jQuery博客 51CTO博客

2023-05-01 18:24:04 310浏览

我自己常用的模板(不断更新),application.yml​​​​​​​server:port:80servlet:context-path:/#项目的上


application.yml 

我自己常用的模板(不断更新)_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分页

@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>  ',
                '<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.location.href = "/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

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

@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";
    }

 


好博客就要一起分享哦!分享海报

此处可发布评论

评论(0展开评论

暂无评论,快来写一下吧

展开评论

您可能感兴趣的博客

客服QQ 1913284695