Spring Boot学生信息管理系统项目实战-2.字典管理和模板管理
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.字典管理和模板管理的更多相关文章
- 一步一步学Spring Boot 2 微服务项目实战 - 黄文毅-2018年8月第一次印刷
properties 配置文件的优先级高于.yml .在properties文件中配置了server.port=8080 同时在.yml中配置了server.port=8090 Spring Boo ...
- C语言学生信息管理系统项目源码
#include //包含printf().scanf().gets().puts().getchar()函数 #include //包含malloc()函数 #include //包含s ...
- 【Python毕业设计】基于Python+Flask+MySQL的学生信息管理系统(附完整源码)
1.项目说明基于python+Flask+mysql的学生信息管理系统项目实战 项目需要安装pycharm专业版,mysql数据库以及项目所需的所有模块创建数据库名称db_online_notes,然 ...
- 基于Spring MVC + Spring + MyBatis的【学生信息管理系统】
资源下载:https://download.csdn.net/download/weixin_44893902/45603211 练习点设计: 模糊查询.删除.新增 一.语言和环境 实现语言:JAVA ...
- [项目分享]JSP+Servlet+JDBC实现的学生信息管理系统
本文存在视频版本,请知悉 项目简介 项目来源于:https://gitee.com/liu_xu111/JavaWeb01 这次分享一个学生管理系统,我感觉这是程序员在大学时期的毕设和课程设计选择最多 ...
- Node.js小项目——学生信息管理系统
这是迄今为止第一次接触后端的东西,是一个很小的项目,但是对于前端学习入门很好.我是先学了VUE框架再学的Node,学起来比较轻松,不过每个人都有自己的学习方法️ 一.项目描述 学生信息管理系统,可以实 ...
- Spring Boot构建的Web项目如何在服务端校验表单输入
本文首发于个人网站:Spring Boot构建的Web项目如何在服务端校验表单输入 这个例子用于演示在Spring Boot应用中如何验证Web 应用的输入,我们将会建立一个简单的Spring MVC ...
- spring boot 和shiro的代码实战demo
spring boot和shiro的代码实战 首先说明一下,这里不是基础教程,需要有一定的shiro知识,随便百度一下,都能找到很多的博客叫你基础,所以这里我只给出代码. 官方文档:http://sh ...
- Python基础案例练习:制作学生信息管理系统
一.前言 学生信息管理系统,相信大家或多或少都有做过 最近看很多学生作业都是制作一个学生信息管理系统 于是,今天带大家做一个简单的学生信息管理系统 二.开发环境: 我用到的开发环境 Python 3. ...
- struts2学生信息管理系统篇章①
最近在看java1234分享的一个Struts2的学生信息管理系统的知识.因为本身java没什么底子.所以就没有什么好的技术去解决问题.一直在百度,不懂就百度.这样子下来其实也能学到一些东西,过阵子等 ...
随机推荐
- MongoDB 部署分片集群
部署配置服务器:configsvr 先生成.conf文件 mkdir -p /data/mongodb/configsvr vim /data/mongodb/configsvr/configsvr. ...
- [转帖]Redis 内存淘汰策略 (史上最全)
1.前言 Redis内存淘汰策略,是被很多小伙伴忽略的知识盲区,注意,是盲区. 注意,Redis如果内存淘汰策略配置不合理,可能会导致Redis无法服务. 所以,使用此文,对Redis内存淘汰策略专门 ...
- [转帖]LSM树详解
https://zhuanlan.zhihu.com/p/181498475 LSM树(Log-Structured-Merge-Tree)的名字往往会给初识者一个错误的印象,事实上,LSM树并不像B ...
- WorkStation的网络损耗
WorkStation的网络损耗 背景 对周六遇到的问题进行了一下深入思考. 发现虽然可以通过WorkStation的方式来进行Clients以及新命令的扩容. 但是Workstation的桥接网络模 ...
- [转帖]GC Ergonomics间接引发的锁等待超时问题排查分析
https://www.cnblogs.com/micrari/p/8831834.html 1. 问题背景 上周线上某模块出现锁等待超时,如下图所示:我虽然不是该模块负责人,但出于好奇,也一起帮忙排 ...
- [转帖]使用Linux命令快速查看某一行
原创:打码日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处. 简介# 当年,我还是Linux菜鸟的时候,就在简历上写着精通Linux命令了,而当面试官问我"如何快速查看 ...
- Java中的基本数据类型和包装类型的这些知识,你都知道吗?
Java中的基本数据类型和包装类型 Java 中的基本数据按类型可以分为四大类:布尔型.整数型.浮点型.字符型: 这四大类包含 8 种基本数据类型. 布尔型:boolean 整数型:byte.shor ...
- MySQL 中使用变量实现排名名次
title: MySQL 中使用变量实现排名名次 date: 2023-7-16 19:45:26 tags: - SQL 高级查询 一. 数据准备: CREATE TABLE sql_rank ( ...
- 4.9 x64dbg 内存处理与差异对比
LyScript 插件中针对内存读写函数的封装功能并不多,只提供了最基本的内存读取和内存写入系列函数的封装,本章将继续对API接口进行封装,实现一些在软件逆向分析中非常实用的功能,例如ShellCod ...
- C/C++ 进程线程操作技术
手动创建单进程: 下面通过一个实例来分别演示进程的创建函数. #include <windows.h> #include <stdio.h> BOOL WinExec(char ...