/*
这个Java服务层代码主要是用于操作数据库,提供了一系列基于JPA的数据库操作方法。以下是每个方法的简单解释:
1. `runEntitySql` 和 `runCountSql`: 这两个方法用于执行原生的SQL语句。前者用于执行更新、插入、删除等操作,后者主要用于查询操作并返回结果集。
2. `insert`: 这个方法用于插入数据到数据库,接受一个包含键值对的Map作为参数,然后通过构造SQL语句实现插入操作。
3. `update`: 这个方法用于更新数据库中的数据,接受查询条件、配置信息和更新的数据作为参数。
4. `selectToPage`, `selectToList`, `selectBarGroup`: 这些方法用于查询数据,并返回特定的数据格式,如包含分页信息的列表、普通的列表和分组统计的列表等。
5. `select`, `count`, `sum`, `avg`: 这些方法用于根据查询条件和配置信息执行查询操作,返回结果集或统计信息。
6. `delete`: 这个方法用于删除数据库中的数据,接受查询条件和配置信息作为参数。
7. `toWhereSql`: 这个方法用于构造WHERE子句,根据查询条件和配置信息生成SQL语句的WHERE部分。
8. `readBody` 和 `readQuery`: 这两个方法用于从请求中获取数据,前者从请求体中获取数据,后者从请求查询字符串中获取数据。
9. `readConfig`: 这个方法用于从请求中获取配置信息,如分页、排序、字段等。
10. `importDb`: 这个方法用于从Excel文件中导入数据到数据库。
11. `exportDb`: 这个方法用于将数据库中的数据导出到Excel文件。
12. `save`: 这个方法用于保存数据到数据库,接受一个实体对象作为参数。
13. `findOne`: 这个方法用于根据条件查找单一记录。
14. `encryption`: 这个方法用于对字符串进行MD5加密。
15. `humpToLine`: 这个方法用于将驼峰命名的属性转换为下划线命名的属性,这是为了数据库命名规范和前端数据交互的兼容性。
16. `covertObject` 和 `covertArray`: 这两个方法用于将JSON对象或数组中的键名转换为下划线命名格式。
这个服务层代码是一个通用的模板,具体的业务逻辑需要根据实际的业务需求进行开发和完善。例如,具体的数据库表结构、查询条件、业务规则等都需要根据实际需求进行定制。
*/
package com.project.demo.service.base;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.project.demo.constant.FindConfig;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import javax.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.ParameterizedType;
import java.net.URLDecoder;
import java.security.MessageDigest;
import java.util.*;
/**
*/
@Slf4j
public class BaseService <E>{
@Autowired
@PersistenceContext
private EntityManager entityManager;
Class<E> eClass = (Class<E>)((ParameterizedType)getClass().getGenericSuperclass()).getActualTypeArguments()[0];
private final String table = humpToLine(eClass.getSimpleName());
public Query runEntitySql(String sql){
return entityManager.createNativeQuery(sql, eClass);
}
public Query runCountSql(String sql){
return entityManager.createNativeQuery(sql);
}
public void insert(Map<String,Object> body){
StringBuffer sql = new StringBuffer("INSERT INTO ");
sql.append("`").append(table).append("`").append(" (");
for (Map.Entry<String,Object> entry:body.entrySet()){
sql.append("`"+humpToLine(entry.getKey())+"`").append(",");
}
sql.deleteCharAt(sql.length()-1);
sql.append(") VALUES (");
for (Map.Entry<String,Object> entry:body.entrySet()){
Object value = entry.getValue();
if (value instanceof String){
sql.append("'").append(entry.getValue()).append("'").append(",");
}else {
sql.append(entry.getValue()).append(",");
}
}
sql.deleteCharAt(sql.length() - 1);
sql.append(")");
log.info("[{}] - 插入操作:{}",table,sql);
Query query = runCountSql(sql.toString());
query.executeUpdate();
}
@Transactional
public void update(Map<String,String> query,Map<String,String> config,Map<String,Object> body){
StringBuffer sql = new StringBuffer("UPDATE ").append("`").append(table).append("`").append(" SET ");
for (Map.Entry<String,Object> entry:body.entrySet()){
Object value = entry.getValue();
if (value instanceof String){
sql.append("`"+humpToLine(entry.getKey())+"`").append("=").append("'").append(value).append("'").append(",");
}else {
sql.append("`"+humpToLine(entry.getKey())+"`").append("=").append(value).append(",");
}
}
sql.deleteCharAt(sql.length()-1);
sql.append(toWhereSql(query,"0".equals(config.get(FindConfig.LIKE))));
log.info("[{}] - 更新操作:{}",table,sql);
Query query1 = runCountSql(sql.toString());
query1.executeUpdate();
}
public Map<String,Object> selectToPage(Map<String,String> query,Map<String,String> config){
Query select = select(query, config);
Map<String,Object> map = new HashMap<>();
map.put("list",select.getResultList());
map.put("count",count(query,config).getSingleResult());
return map;
}
public Map<String,Object> selectToList(Map<String,String> query,Map<String,String> config){
Query select = selectGroupCount(query, config);
Map<String,Object> map = new HashMap<>();
map.put("list",select.getResultList());
return map;
}
public Map<String,Object> selectBarGroup(Map<String,String> query,Map<String,String> config){
Query select = barGroup(query, config);
Map<String,Object> map = new HashMap<>();
map.put("list",select.getResultList());
return map;
}
public Query barGroup(Map<String,String> query,Map<String,String> config){
StringBuffer sql = new StringBuffer(" SELECT ");
if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){
sql.append(config.get(FindConfig.GROUP_BY));
if (config.get(FindConfig.FIELD) != null && !"".equals(config.get(FindConfig.FIELD))){
String[] fieldList = config.get(FindConfig.FIELD).split(",");
for (int i=0;i<fieldList.length;i++)
sql.append(" ,SUM(").append(fieldList[i]).append(")");
}
sql.append(" FROM ").append("`").append(table).append("`");
sql.append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
sql.append(" ").append("GROUP BY ").append(config.get(FindConfig.GROUP_BY));
}else {
sql.append(" SUM(").append(config.get(FindConfig.GROUP_BY)).append(") FROM ").append("`").append(table).append("`");
sql.append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
}
log.info("[{}] - 查询操作,sql: {}",table,sql);
return runCountSql(sql.toString());
}
public Query selectGroupCount(Map<String,String> query,Map<String,S
没有合适的资源?快使用搜索试试~ 我知道了~
(源码)基于Spring Boot框架的教学管理系统.zip

共619个文件
vue:127个
java:97个
png:70个

1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 37 浏览量
2025-06-19
09:03:23
上传
评论
收藏 14.33MB ZIP 举报
温馨提示
# 基于Spring Boot框架的教学管理系统 ## 项目简介 本项目是基于Spring Boot框架的教学管理系统,采用浏览器服务器(BS)架构,前端运用Vue.js框架与Element UI组件库,后端使用MyBatis作为持久层框架,并借助Redis实现缓存存储。使用Java语言开发,支持在Windows操作系统运行。项目路径为“E:百度网盘下载文件夹3300套JAVA毕业设计项目成品源码testspringboot教学管理平台”。 ## 项目的主要特性和功能 1. 用户管理涵盖学生、教师和管理员登录,具备账号密码验证与Token生成功能,同时支持用户注册、信息修改及状态管理。 2. 内容管理包含论坛、资讯、随堂测试等模块的管理与维护。 3. 站点管理可控制前台显示的轮播图及公告栏。 4. 教学管理实现作业发布与提交、创建信息等功能。 5. 交互管理支持留言反馈,以及评论的发布与删除。 6. 权限管理不同用户角色拥有不同权限,保障系统操作安全。
资源推荐
资源详情
资源评论






























收起资源包目录





































































































共 619 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7
资源评论


Java咖啡师
- 粉丝: 1703
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 浅析高职院校计算机房管理存在的问题及应对措施.docx
- (NDGJ--)火力发电厂电子计算机监视系统设计技术规定.doc
- 自动化学院科技英语复习考试词汇.doc
- WIN7数据恢复软件安装使用大全.doc
- 专业技术人员职业素养与发展网络仅需课试题与复习资料.docx
- 自动化工程师考试.doc
- 课堂为舞台网络为后台的产品设计方案网络课程研究.doc
- 2008年机械制造及自动化专业(数控)人才需求市场调研报告.doc
- 备煤系统安全检查表.doc
- 简析人工智能的发展领域与展望.docx
- VGG16 深度卷积神经网络模型解析
- matlab在数制调制中的应用分析研究.doc
- 网络工程专业应用型人才培养模式改革探索.docx
- 技工学校《计算机组装与维修》实训教学模式的探讨.docx
- XX家苑项目管理营销策划建议书.doc
- 数据库原理与应用课程设计之学籍管理系统(免费力荐).doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
