1.获取源码

源码是捐赠方式获取,详细请QQ联系我 :)

2.实现效果

3.项目源码

只挑重点讲,详细请看源码。

3.1 字典管理

字典管理这里分为字典的编码和名称和字典数据的增删改查。

  • 前端页面:
  1. <div class="layui-row" id="editDict" style="display:none;">
  2. <div class="layui-col-md10">
  3. <form class="layui-form layui-from-pane" id="saveDict" style="margin-top:20px">
  4. <input type="text" name="id" id="id" hidden="hidden">
  5. <div class="layui-form-item">
  6. <label class="layui-form-label">字典编码</label>
  7. <div class="layui-input-inline">
  8. <input type="text" name="code" id="code" required lay-verify="required" autocomplete="off"
  9. class="layui-input">
  10. </div>
  11. </div>
  12. <div class="layui-form-item">
  13. <label class="layui-form-label">字典名称</label>
  14. <div class="layui-input-inline">
  15. <input type="text" name="name" id="name" required lay-verify="required" autocomplete="off"
  16. class="layui-input">
  17. </div>
  18. </div>
  19. <div class="layui-form-item" id="check">
  20. <div class="layui-input-block">
  21. <button class="layui-btn layui-btn-submit " lay-submit="" lay-filter="saveDict">保存</button>
  22. <!--<button type="reset" class="layui-btn layui-btn-primary">重置</button>-->
  23. </div>
  24. </div>
  25. </form>
  26. </div>
  27. </div>
  • 后端代码:

  1. /**
  2. * 保存(新增/修改)
  3. *
  4. * @param entity
  5. * @return
  6. */
  7. @PostMapping("/save")
  8. public Result<String> modify(@RequestBody Dict entity) {
  9. String code = entity.getCode();
  10. int count = dictService.checkCode(entity);
  11. if(count>0){
  12. return ResultUtil.fail("编码重复!");
  13. }
  14. if(entity.getId()!=null){
  15. dictService.modify(entity);
  16. }else{
  17. dictService.add(entity);
  18. }
  19. return ResultUtil.ok();
  20. }
  21. @Transactional
  22. @PostMapping("/remove")
  23. public Result<String> remove(@RequestBody Long[] ids) {
  24. // 判断字典是否被用
  25. Dict dict=null;
  26. int count=0;
  27. for (int i = 0; i < ids.length; i++) {
  28. dict = dictService.get(ids[i]);
  29. count = dictService.checkUsed(ids[i]);
  30. if(count>0){
  31. return ResultUtil.fail("字典:"+dict.getCode()+"已被模板使用,无法删除!");
  32. }
  33. }
  34. for (int i = 0; i < ids.length; i++) {
  35. dictDataService.removeByDictId(ids[i]);
  36. }
  37. dictService.removes(ids);
  38. return ResultUtil.ok();
  39. }
  40. @GetMapping("/get")
  41. public Result<Dict> get(@RequestParam("id") Long id) {
  42. Dict entity = dictService.get(id);
  43. return ResultUtil.ok(entity);
  44. }
  45. @PostMapping("/list")
  46. public ResultBean<List<Dict>> getPageResult(
  47. @RequestParam(required = false) String code,
  48. @RequestParam(required = false) String name,
  49. @RequestParam(defaultValue = "1") Integer page,
  50. @RequestParam(defaultValue = "10") Integer limit) {
  51. Map<String, Object> param = new HashMap<>();
  52. // 计算起始行号
  53. int offset = (page - 1) * limit;
  54. int rows = limit;
  55. param.put("code",code);
  56. param.put("name",name);
  57. param.put("offset", offset);
  58. param.put("rows", rows);
  59. // 统计记录数
  60. int totalRows = dictService.count(param);
  61. // 获取当前页结果集
  62. List<Dict> entities = dictService.getPageResult(param);
  63. ResultBean result = new ResultBean(0, "查询成功", totalRows, entities);
  64. return result;
  65. }

3.2 模板管理

模板管理主要是定义学生信息的导入模板。支持动态扩展,注意一点需要模板列和学生信息列名保持一致。

  • 前端代码
  1. <!--编辑表单-->
  2. <div class="layui-row" id="editTemplate" style="display:none;">
  3. <div class="layui-col-md10">
  4. <form class="layui-form layui-from-pane" id="saveTemplate" style="margin-top:20px">
  5. <input type="text" name="id" id="id" hidden="hidden">
  6. <div class="layui-form-item">
  7. <label class="layui-form-label">模板编码</label>
  8. <div class="layui-input-inline">
  9. <input type="text" name="code" id="code" required lay-verify="required" autocomplete="off"
  10. class="layui-input">
  11. </div>
  12. </div>
  13. <div class="layui-form-item">
  14. <label class="layui-form-label">模板名称</label>
  15. <div class="layui-input-inline">
  16. <input type="text" name="name" id="name" required lay-verify="required" autocomplete="off"
  17. class="layui-input">
  18. </div>
  19. </div>
  20. <div class="layui-form-item">
  21. <label class="layui-form-label">内容类型</label>
  22. <div class="layui-input-inline">
  23. <select id="contentType" name="contentType" lay-verify="required">
  24. <option value="学生信息">学生信息</option>
  25. <option value="班级信息">班级信息</option>
  26. <option value="教师信息">教师信息</option>
  27. </select>
  28. </div>
  29. </div>
  30. <div class="layui-form-item">
  31. <label class="layui-form-label">是否默认</label>
  32. <div class="layui-input-inline">
  33. <input type="checkbox" id="isDefault" name="isDefault" lay-skin="switch" lay-filter="isDefaultCheck" lay-text="ON|OFF">
  34. </div>
  35. </div>
  36. <div class="layui-form-item" id="check">
  37. <div class="layui-input-block">
  38. <button class="layui-btn layui-btn-submit " lay-submit="" lay-filter="saveTemplate">保存</button>
  39. <button type="reset" class="layui-btn layui-btn-primary">重置</button>
  40. </div>
  41. </div>
  42. </form>
  43. </div>
  44. </div>
  • 后端代码
  1. /**
  2. * 保存(新增/修改)
  3. *
  4. * @param entity
  5. * @return
  6. */
  7. @PostMapping("/save")
  8. public Result<String> modify(@RequestBody Template entity) {
  9. String code = entity.getCode();
  10. int count = templateService.checkCode(entity);
  11. if(count>0){
  12. return ResultUtil.fail("编码重复!");
  13. }
  14. if(entity.getId()!=null){
  15. templateService.modify(entity);
  16. }else{
  17. templateService.add(entity);
  18. }
  19. return ResultUtil.ok();
  20. }
  21. @Transactional
  22. @PostMapping("/remove")
  23. public Result<String> remove(@RequestBody Long[] ids) {
  24. // 默认模板不能删除
  25. Template template = null;
  26. for (int i = 0; i < ids.length; i++) {
  27. template = templateService.get(ids[i]);
  28. if(template.getIsDefault()==1){
  29. return ResultUtil.fail("模板:"+template.getCode()+"是默认模板,无法删除!");
  30. }
  31. templateDataService.removeByTemplateId(ids[i]);
  32. }
  33. // 继续删除
  34. for (int i = 0; i < ids.length; i++) {
  35. templateDataService.removeByTemplateId(ids[i]);
  36. }
  37. templateService.removes(ids);
  38. return ResultUtil.ok();
  39. }
  40. @GetMapping("/get")
  41. public Result<Template> get(@RequestParam("id") Long id) {
  42. Template entity = templateService.get(id);
  43. return ResultUtil.ok(entity);
  44. }
  45. @PostMapping("/list")
  46. public ResultBean<List<Template>> getPageResult(
  47. @RequestParam(required = false) String code,
  48. @RequestParam(required = false) String name,
  49. @RequestParam(defaultValue = "1") Integer page,
  50. @RequestParam(defaultValue = "10") Integer limit) {
  51. Map<String, Object> param = new HashMap<>();
  52. // 计算起始行号
  53. int offset = (page - 1) * limit;
  54. int rows = limit;
  55. param.put("code",code);
  56. param.put("name",name);
  57. param.put("offset", offset);
  58. param.put("rows", rows);
  59. // 统计记录数
  60. int totalRows = templateService.count(param);
  61. // 获取当前页结果集
  62. List<Template> entities = templateService.getPageResult(param);
  63. ResultBean result = new ResultBean(0, "查询成功", totalRows, entities);
  64. return result;
  65. }

源码是捐赠方式获取,详细请QQ联系我 :)

Spring Boot学生信息管理系统项目实战-2.字典管理和模板管理的更多相关文章

  1. 一步一步学Spring Boot 2 微服务项目实战 - 黄文毅-2018年8月第一次印刷

    properties 配置文件的优先级高于.yml .在properties文件中配置了server.port=8080 同时在.yml中配置了server.port=8090  Spring Boo ...

  2. C语言学生信息管理系统项目源码

    #include   //包含printf().scanf().gets().puts().getchar()函数 #include   //包含malloc()函数 #include   //包含s ...

  3. 【Python毕业设计】基于Python+Flask+MySQL的学生信息管理系统(附完整源码)

    1.项目说明基于python+Flask+mysql的学生信息管理系统项目实战 项目需要安装pycharm专业版,mysql数据库以及项目所需的所有模块创建数据库名称db_online_notes,然 ...

  4. 基于Spring MVC + Spring + MyBatis的【学生信息管理系统】

    资源下载:https://download.csdn.net/download/weixin_44893902/45603211 练习点设计: 模糊查询.删除.新增 一.语言和环境 实现语言:JAVA ...

  5. [项目分享]JSP+Servlet+JDBC实现的学生信息管理系统

    本文存在视频版本,请知悉 项目简介 项目来源于:https://gitee.com/liu_xu111/JavaWeb01 这次分享一个学生管理系统,我感觉这是程序员在大学时期的毕设和课程设计选择最多 ...

  6. Node.js小项目——学生信息管理系统

    这是迄今为止第一次接触后端的东西,是一个很小的项目,但是对于前端学习入门很好.我是先学了VUE框架再学的Node,学起来比较轻松,不过每个人都有自己的学习方法️ 一.项目描述 学生信息管理系统,可以实 ...

  7. Spring Boot构建的Web项目如何在服务端校验表单输入

    本文首发于个人网站:Spring Boot构建的Web项目如何在服务端校验表单输入 这个例子用于演示在Spring Boot应用中如何验证Web 应用的输入,我们将会建立一个简单的Spring MVC ...

  8. spring boot 和shiro的代码实战demo

    spring boot和shiro的代码实战 首先说明一下,这里不是基础教程,需要有一定的shiro知识,随便百度一下,都能找到很多的博客叫你基础,所以这里我只给出代码. 官方文档:http://sh ...

  9. Python基础案例练习:制作学生信息管理系统

    一.前言 学生信息管理系统,相信大家或多或少都有做过 最近看很多学生作业都是制作一个学生信息管理系统 于是,今天带大家做一个简单的学生信息管理系统 二.开发环境: 我用到的开发环境 Python 3. ...

  10. struts2学生信息管理系统篇章①

    最近在看java1234分享的一个Struts2的学生信息管理系统的知识.因为本身java没什么底子.所以就没有什么好的技术去解决问题.一直在百度,不懂就百度.这样子下来其实也能学到一些东西,过阵子等 ...

随机推荐

  1. HttpClient获取不到最新的系统代理

    默认情况下,HttpClient是默认采用系统代理,但是,如果你在程序运行过程中,手动修改系统代理,对于HttpClient是无效的,它依然会用老的代理去访问. 解决方法 使用下面的代码,你可以自己实 ...

  2. IL合集二

    引言 在第一篇关于IL的文章中,我们写了一些IL的相加,创建对象,循环以及实现TryCatch的一些功能,接下来,为大家带上后续关于IL的更新,其中包括,类型转换,以及条件判断,还有定义字段,定义属性 ...

  3. [转帖]goproxy 使用说明

    Go 版本要求 建议您使用 Go 1.13 及以上版本, 可以在这里下载最新的 Go 稳定版本. 配置 Goproxy 环境变量 Bash (Linux or macOS) export GOPROX ...

  4. [转帖]Linux—微服务启停shell脚本编写模板

    https://www.jianshu.com/p/1e1080a39dc5 run.sh #!/bin/bash if [ -s java.pid ] then echo "重复启动,退出 ...

  5. 【转帖】8.JVM双亲委派机制(面试常问)

    目录 1.什么是双亲委派机制? 2.双亲委派机制的优势 3.沙箱安全机制 1.什么是双亲委派机制? 双亲委派机制工作原理:(面试) 1.如果一个类加载器收到了类加载请求,它并不会自己先去加载,而是把这 ...

  6. Python学习之四_部分battery的学习

    Python学习之四_部分battery的学习 CentOS升级pip的方法 yum install python3 之后, 一般centos的版本都很低, 有时候很多module 是无法安装的. 一 ...

  7. [转帖]台积电3nm成功量产,稳了吗?

    https://docs.pingcode.com/info/13836.html?p=13836 2023-01-19 资讯 21 原标题:台积电3纳米成功量产:未来与三星仍将决战鳍式场效晶体管(F ...

  8. Pytest 源码解读 [1] - [pluggy] 核心设计理念浅读

    背景: Pytest 是一个功能强大的 Python 测试框架,它使用了一个名为 "pluggy" 的插件系统来扩展其功能.在 Pytest 的源码中,pluggy 模块负责实现插 ...

  9. Windows7 SP1 安装.NET Framework4失败

    系统版本是Windows7旗舰版,已经安装了SP1补丁,但还是无法安装.NET Framework4或者4.5,提示安装失败. 这时可以安装.NET Framework4.8的开发包,我这里安装开发包 ...

  10. 【Docker内容大集合】Docker从认识到实践再到底层原理大汇总

    前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助. 高质量博客汇总https://blog.cs ...