1.获取源码

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

2.实现效果

3.项目源码

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

3.1 字典管理

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

  • 前端页面:
<div class="layui-row" id="editDict" style="display:none;">
<div class="layui-col-md10">
<form class="layui-form layui-from-pane" id="saveDict" style="margin-top:20px">
<input type="text" name="id" id="id" hidden="hidden"> <div class="layui-form-item">
<label class="layui-form-label">字典编码</label>
<div class="layui-input-inline">
<input type="text" name="code" id="code" required lay-verify="required" autocomplete="off"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">字典名称</label>
<div class="layui-input-inline">
<input type="text" name="name" id="name" required lay-verify="required" autocomplete="off"
class="layui-input">
</div>
</div> <div class="layui-form-item" id="check">
<div class="layui-input-block">
<button class="layui-btn layui-btn-submit " lay-submit="" lay-filter="saveDict">保存</button>
<!--<button type="reset" class="layui-btn layui-btn-primary">重置</button>-->
</div>
</div>
</form>
</div>
</div>
  • 后端代码:

/**
* 保存(新增/修改)
*
* @param entity
* @return
*/
@PostMapping("/save")
public Result<String> modify(@RequestBody Dict entity) {
String code = entity.getCode();
int count = dictService.checkCode(entity);
if(count>0){
return ResultUtil.fail("编码重复!");
}
if(entity.getId()!=null){
dictService.modify(entity);
}else{
dictService.add(entity);
} return ResultUtil.ok();
} @Transactional
@PostMapping("/remove")
public Result<String> remove(@RequestBody Long[] ids) {
// 判断字典是否被用
Dict dict=null;
int count=0;
for (int i = 0; i < ids.length; i++) {
dict = dictService.get(ids[i]);
count = dictService.checkUsed(ids[i]);
if(count>0){
return ResultUtil.fail("字典:"+dict.getCode()+"已被模板使用,无法删除!");
}
} for (int i = 0; i < ids.length; i++) {
dictDataService.removeByDictId(ids[i]);
} dictService.removes(ids); return ResultUtil.ok();
} @GetMapping("/get")
public Result<Dict> get(@RequestParam("id") Long id) {
Dict entity = dictService.get(id); return ResultUtil.ok(entity);
} @PostMapping("/list")
public ResultBean<List<Dict>> getPageResult(
@RequestParam(required = false) String code,
@RequestParam(required = false) String name,
@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "10") Integer limit) { Map<String, Object> param = new HashMap<>(); // 计算起始行号
int offset = (page - 1) * limit;
int rows = limit; param.put("code",code);
param.put("name",name);
param.put("offset", offset);
param.put("rows", rows); // 统计记录数
int totalRows = dictService.count(param); // 获取当前页结果集
List<Dict> entities = dictService.getPageResult(param); ResultBean result = new ResultBean(0, "查询成功", totalRows, entities); return result; }

3.2 模板管理

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

  • 前端代码
<!--编辑表单-->
<div class="layui-row" id="editTemplate" style="display:none;">
<div class="layui-col-md10">
<form class="layui-form layui-from-pane" id="saveTemplate" style="margin-top:20px">
<input type="text" name="id" id="id" hidden="hidden"> <div class="layui-form-item">
<label class="layui-form-label">模板编码</label>
<div class="layui-input-inline">
<input type="text" name="code" id="code" required lay-verify="required" autocomplete="off"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">模板名称</label>
<div class="layui-input-inline">
<input type="text" name="name" id="name" required lay-verify="required" autocomplete="off"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">内容类型</label>
<div class="layui-input-inline">
<select id="contentType" name="contentType" lay-verify="required">
<option value="学生信息">学生信息</option>
<option value="班级信息">班级信息</option>
<option value="教师信息">教师信息</option>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">是否默认</label>
<div class="layui-input-inline">
<input type="checkbox" id="isDefault" name="isDefault" lay-skin="switch" lay-filter="isDefaultCheck" lay-text="ON|OFF">
</div>
</div> <div class="layui-form-item" id="check">
<div class="layui-input-block">
<button class="layui-btn layui-btn-submit " lay-submit="" lay-filter="saveTemplate">保存</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
</div>
</div>
  • 后端代码
/**
* 保存(新增/修改)
*
* @param entity
* @return
*/
@PostMapping("/save")
public Result<String> modify(@RequestBody Template entity) {
String code = entity.getCode();
int count = templateService.checkCode(entity);
if(count>0){
return ResultUtil.fail("编码重复!");
}
if(entity.getId()!=null){
templateService.modify(entity);
}else{
templateService.add(entity);
} return ResultUtil.ok();
} @Transactional
@PostMapping("/remove")
public Result<String> remove(@RequestBody Long[] ids) {
// 默认模板不能删除
Template template = null;
for (int i = 0; i < ids.length; i++) {
template = templateService.get(ids[i]);
if(template.getIsDefault()==1){
return ResultUtil.fail("模板:"+template.getCode()+"是默认模板,无法删除!");
}
templateDataService.removeByTemplateId(ids[i]);
}
// 继续删除
for (int i = 0; i < ids.length; i++) {
templateDataService.removeByTemplateId(ids[i]);
} templateService.removes(ids); return ResultUtil.ok();
} @GetMapping("/get")
public Result<Template> get(@RequestParam("id") Long id) {
Template entity = templateService.get(id); return ResultUtil.ok(entity);
} @PostMapping("/list")
public ResultBean<List<Template>> getPageResult(
@RequestParam(required = false) String code,
@RequestParam(required = false) String name,
@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "10") Integer limit) { Map<String, Object> param = new HashMap<>(); // 计算起始行号
int offset = (page - 1) * limit;
int rows = limit; param.put("code",code);
param.put("name",name);
param.put("offset", offset);
param.put("rows", rows); // 统计记录数
int totalRows = templateService.count(param); // 获取当前页结果集
List<Template> entities = templateService.getPageResult(param); ResultBean result = new ResultBean(0, "查询成功", totalRows, entities); return result; }

源码是捐赠方式获取,详细请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. 使用Grafana监控Nacos的简单过程

    使用Grafana监控Nacos的简单过程 背景 与kafka一样,想同期监控一下nacos. 发现nacos跟minio等一样都有对应的 metrics的暴露接口. 所以这边简单使用一下. stud ...

  2. [转帖]使用 Dumpling 和 TiDB Lightning 备份与恢复

    本文档介绍如何使用 Dumpling 和 TiDB Lightning 进行全量备份与恢复. 在备份与恢复场景中,如果需要全量备份少量数据(例如小于 50 GB),且不要求备份速度,你可以使用 Dum ...

  3. tikv-ctl的简单学习

    tikv-ctl的简单学习 摘要 最近在学习使用 tidb. 有一个场景,单独使用了tikv作为键值对的数据库. 但是比较不幸.总是出现宕机的情况 因为这个环境是单独使用tikv 二进制进行安装的 没 ...

  4. [转帖]wmic命令介绍

    https://www.jianshu.com/p/3e1a5a8fa23b How to Get Your System Serial Number PS C:\windows\system32&g ...

  5. [转帖]Redis中的Lua脚本

    最近琢磨分布式锁时接触到的知识点,简单记一下. 文章目录 1. Redis中的Lua 2. 利用Lua操作Redis 3. Lua脚本的原子性 4. 关于 EVALSHA 5. 常用`SCRIPT` ...

  6. [转帖] Linux文本命令技巧(下)

    https://www.cnblogs.com/codelogs/p/16060108.html 简介# 前一篇介绍了Linux中一些基本的文本命令与使用技巧,但是结合场景过少,本篇结合工作中一些常见 ...

  7. Rsync的简单使用

    Rsync的简单使用 需求 一个运行很久的系统里面可能包含了非常多的垃圾文件. 但是又不可能随便删除, 很多垃圾可能有某些奇葩的用法. 有时候新建一个应用复制文件的话比较浪费磁盘和带宽. 所以这里简单 ...

  8. TypeScript工具类 Partial 和 Required 的详细讲解

    场景描述: 场景描述:一个接口(IPerson)有很多个的字段,可能有几百.而且这些字段都是必须的. 我们需要使用这个接口,但是我又不可能使用它的全部.可能只会使用几个. 我还必须要使用这接口.这个时 ...

  9. Leetcode 92题反转链表 II(Reverse Linked List II) Java语言求解

    前言 反转链表可以先看我这篇文章: Leetcode 206题 反转链表(Reverse Linked List)Java语言求解 题目链接 https://leetcode-cn.com/probl ...

  10. 从零开始配置vim(21)——lsp简介与treesitter 配置

    截止到上一篇文章,我们配置了neovim的很多内容了.具备了一些编辑器的常用功能了,而且可以胜任日常的文档编辑工作了.但是想作为一个可靠的代码编辑器还缺少重要的一环,即代码语法部分的支持. 在过去的v ...