SpringBoot+Mybatis实现接口的增查改,以及json中拼接json数组

2024-01-20 03:48

本文主要是介绍SpringBoot+Mybatis实现接口的增查改,以及json中拼接json数组,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

增改查的评价表

DROP TABLE IF EXISTS `hpkh_police_review`;
CREATE TABLE `hpkh_police_review` (`id` int(11) NOT NULL AUTO_INCREMENT,`police_code` varchar(255) NOT NULL COMMENT '警员编号',`review_content` text COMMENT '点评内容',`timestamp_create` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '条目插入时间',`timestamp_modify` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '最后一次修改条目时间戳',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;INSERT INTO `hpkh_police_review` VALUES ('1', '209762', '今天辛苦了', '2020-05-26 11:22:01', '2020-05-26 11:22:01');
INSERT INTO `hpkh_police_review` VALUES ('2', '209762', '交通处罚很好', '2020-05-26 11:32:59', '2020-05-26 15:51:02');
INSERT INTO `hpkh_police_review` VALUES ('3', '017591', 'good', '2020-05-29 10:31:01', '2020-05-29 10:31:01');

增查改部分

实体类

package com.ruoyi.system.domain;import java.sql.Timestamp;/*** @Author zhang dongchao* @Date 2020/5/25 19:44* @title 点评实体类*/
public class PoliceReview {private int id;private String police_code;// 警员编号private String review_content;// 点评内容private Timestamp timestamp_create;//条目插入时间private Timestamp timestamp_modify;//条目修改时间public int getId() {return id;}public void setId(int id) {this.id = id;}public String getPolice_code() {return police_code;}public void setPolice_code(String police_code) {this.police_code = police_code;}public String getReview_content() {return review_content;}public void setReview_content(String review_content) {this.review_content = review_content;}public Timestamp getTimestamp_create() {return timestamp_create;}public void setTimestamp_create(Timestamp timestamp_create) {this.timestamp_create = timestamp_create;}public Timestamp getTimestamp_modify() {return timestamp_modify;}public void setTimestamp_modify(Timestamp timestamp_modify) {this.timestamp_modify = timestamp_modify;}}

Mapepr.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.system.mapper.PersonalResumeMapper"><!--添加留言                 hpkh_police_review 增--><insert id="addReviews" parameterType="String">insert into hpkh_police_review(police_code,review_content)values (#{policeCode},#{reviewContent});</insert><!--根据警员编号获取相关留言列表 hpkh_police_review 查--><select id="getReviewsListByCode" parameterType="String" resultType="PoliceReview">selectid,police_code,review_content,timestamp_create,timestamp_modifyfrom hpkh_police_reviewwhere police_code=#{policeCode}order by timestamp_create desc limit 4</select><!--更新留言                hpkh_police_review  更新--><update id="updateReviewsById">update hpkh_police_review set review_content=#{reviewContent},timestamp_modify=CURRENT_TIMESTAMP where id=#{id}</update><!--下面三个查询了三张表  拼接成个人履历--><!--根据警员编号获取警员概要--><select id="getPoliceInfo" parameterType="String" resultType="java.util.Map">SELECTuser_name,user_code,user_id_card,YEAR (NOW()) - SUBSTR(user_id_card, 7, 4) age,sex_name,user_type_nameFROMism_userWHEREuser_code = #{policeCode}</select><!--// 根据警员编号获取警员履历  --><select id="getPoliceProcessList" parameterType="String" resultType="java.util.Map">SELECTqsrq,jsrq,dw,zw,zwsmFROMhp_mj_llWHEREjh = #{policeCode} order by qsrq asc</select><!--// 根据警员编号获取警员嘉奖--><select id="getCommendOfPolice" parameterType="String" resultType="java.util.Map">SELECTjlmc,pzrqfromhp_mj_jlwherejh=#{policeCode} order by pzrq asc</select>

mapper

注意:不使用@Param注解时,参数只能有一个,当参数超过两个时,要用@Param

package com.ruoyi.system.mapper;import com.ruoyi.system.domain.PoliceEvaluate;
import com.ruoyi.system.domain.PoliceReview;
import com.ruoyi.system.domain.SysPoliceAnalysis;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;import java.util.List;
import java.util.Map;
/*** @Author zhang dongchao* @Date 2020/5/27 18:02* @title 个人简历持久层接口*/
@Repository
public interface PersonalResumeMapper {// 添加留言int addReviews(@Param("policeCode") String policeCode, @Param("reviewContent") String reviewContent);// 根据警员编号获取相关留言列表List<PoliceReview> getReviewsListByCode(String policeCode);// 更新留言int updateReviewsById(@Param("id") int id, @Param("reviewContent") String reviewContent);//下面三个拼接成简历// 根据警员编号获取警员概要Map<String,Object> getPoliceInfo(String policeCode);// 根据警员编号获取警员履历List<Map<String,String>> getPoliceProcessList(String policeCode);// 根据警员编号获取警员嘉奖List<Map<String,String>> getCommendOfPolice(String policeCode);
}

service和impl

package com.ruoyi.system.service;import org.springframework.web.multipart.MultipartFile;import java.util.Map;
/*** @Author zhang dongchao* @Date 2020/5/27 18:02* @title 个人简历页面服务层接口*/
public interface IPersonalResumeService {// 添加留言Map<String,Object> addReviews(String policeCode, String reviewContent);// 根据警员编号获取相关留言列表Map<String,Object> getReviewsListByCode(String policeCode);// 更新留言Map<String,Object> updateReviewsById(int id, String reviewContent);// 根据警员编号获取个人简历Map<String,Object> getPersonalResumeByCode(String policeCode);
}
package com.ruoyi.system.service.impl;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.system.domain.PoliceReview;
import com.ruoyi.system.domain.SysPoliceAnalysis;
import com.ruoyi.system.mapper.PersonalResumeMapper;
import com.ruoyi.system.service.IPersonalResumeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/*** @Author zhang dongchao* @Date 2020/5/27 18:02* @title 个人简历页面服务层接口实现类*/
@Service
public class PersonalResumeServiceImpl implements IPersonalResumeService {@Autowiredprivate PersonalResumeMapper personalResumeMapper;Map<String,Object> result = new HashMap<String,Object>();// 留言@Overridepublic Map<String, Object> addReviews(String policeCode, String reviewContent) {result.clear();// 添加留言personalResumeMapper.addReviews(policeCode,reviewContent);result.put("status",200);result.put("msg","成功点评!");return result;}// 根据警员编号获取相关留言列表@Overridepublic Map<String, Object> getReviewsListByCode(String policeCode) {List<PoliceReview> policeReviewList = personalResumeMapper.getReviewsListByCode(policeCode);result.clear();result.put("reviewlist",policeReviewList);result.put("status",200);return result;}// 更新留言信息@Overridepublic Map<String, Object> updateReviewsById(int id,String reviewContent) {personalResumeMapper.updateReviewsById(id, reviewContent);result.clear();result.put("msg","成功更新");result.put("status",200);return result;}//系统分析导入Excel文件,将条目存库,并封装返回@Overridepublic Map<String, Object> importAnalysis(MultipartFile file) throws Exception {// 创建excel工具类ExcelUtil<SysPoliceAnalysis> excelUtil = new ExcelUtil<SysPoliceAnalysis>(SysPoliceAnalysis.class);// 解析excel数据List<SysPoliceAnalysis> sysAnalysisList = excelUtil.importExcel(file.getInputStream());// 将集合插入数据库personalResumeMapper.importAnalysis(sysAnalysisList);result.clear();result.put("list",sysAnalysisList);result.put("status",200);return result;}// 根据警员编号获取个人简历   调用了mapper中的三个方法拼接成一个自己要的@Overridepublic Map<String, Object> getPersonalResumeByCode(String policeCode) {// 获取警员信息概要   第一个方法返回了一条数据,一个map即可Map<String,Object> policeInfo = personalResumeMapper.getPoliceInfo(policeCode);// 获取警员履历       第二个方法返回了多条数据成了list<map<string,string>>,下面拼接成listList<Map<String,String>> policeProcessList = personalResumeMapper.getPoliceProcessList(policeCode);List<StringBuffer> policeProcessContent = new ArrayList<StringBuffer>();// 遍历履历拼接封装if(policeProcessList.size()>0 && !policeProcessList.isEmpty()){for (Map<String, String> map : policeProcessList) {if(map!=null){StringBuffer content = new StringBuffer();// 如果结束日期为空,则至今if(map.get("jsrq")==null || map.get("jsrq").equals("")){content.append(map.get("qsrq")+" 至今").append("\n").append(map.get("dw")).append("\t").append(map.get("zwsm"));}else{content.append(map.get("qsrq")+" 至 ").append(map.get("jsrq")).append("\n").append(map.get("dw")).append("\t").append(map.get("zwsm"));}policeProcessContent.add(content);}}}// 加入履历   第二个方法的数据组成了jsonArraypoliceInfo.put("policeProcess",policeProcessContent);// 获取警员嘉奖列表   第三个方法返回了多条数据,要用list<map<string,string>>,下面重组成listList<Map<String,String>> commendOfPoliceList = personalResumeMapper.getCommendOfPolice(policeCode);List<StringBuffer> policeCommendContent = new ArrayList<StringBuffer>();// 遍历嘉奖,拼接封装if(commendOfPoliceList.size()>0 && !commendOfPoliceList.isEmpty()) {for (Map<String, String> map : commendOfPoliceList) {if(map != null){StringBuffer content = new StringBuffer();content.append(map.get("jlmc")).append("\t").append(map.get("pzrq"));policeCommendContent.add(content);}}}// 加入警员嘉奖列表  第三个方法的数据组成了jsonArraypoliceInfo.put("policeCommend",policeCommendContent);policeInfo.put("status",200);return policeInfo;}
}

controller。事务处理PostMapping,查询GetMapping

package com.ruoyi.web.controller.system;import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.system.service.IPersonalResumeService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;import java.util.Map;
/*** @Author zhang dongchao* @Date 2020/5/27 18:02* @title 个人简历页面接口控制器*/
@Controller
@RequestMapping("/system/personalresume")
@ResponseBody
public class PersonalResumeController extends BaseController {@Autowiredprivate IPersonalResumeService personalResumeService;//LoggerFactory.getLogger可以在IDE控制台打印日志,便于开发,一般加在最上面。调试日志private static final Logger log = LoggerFactory.getLogger(PersonalResumeController.class);/*** 添加留言* @Param policeCode 警员的编号* @Param reviewContent 留言内容*/@PostMapping("/addReviews")public Map<String,Object> addReviews(String policeCode,String reviewContent){return personalResumeService.addReviews(policeCode,reviewContent);}/*** 根据警员编号获取相关留言列表,查询最新四条,按时间降序* @Param policeCode 警员的编号*/@GetMapping("/reviewsList")public Map<String, Object> getReviewsListByCode(String policeCode){return personalResumeService.getReviewsListByCode(policeCode);}/***  根据点评id修改点评信息* @Param id 被修改的点评id*/@PostMapping("/updateReviewsById")public Map<String,Object> updateReviewsById(int id,String reviewContent){log.info("更新点评事件");return personalResumeService.updateReviewsById(id, reviewContent);}/*** 根据警员编号获取个人简历* @param policeCode 警员编号* @return*/@GetMapping("/getPersonalResumeByCode")public Map<String,Object> getPersonalResumeByCode(String policeCode){return personalResumeService.getPersonalResumeByCode(policeCode);}
}

mapper中的三个方法在某条件下取得数据如下

 

 

结果为

这篇关于SpringBoot+Mybatis实现接口的增查改,以及json中拼接json数组的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/624686

相关文章

Java数组初始化的五种方式

《Java数组初始化的五种方式》数组是Java中最基础且常用的数据结构之一,其初始化方式多样且各具特点,本文详细讲解Java数组初始化的五种方式,分析其适用场景、优劣势对比及注意事项,帮助避免常见陷阱... 目录1. 静态初始化:简洁但固定代码示例核心特点适用场景注意事项2. 动态初始化:灵活但需手动管理代

Java使用SLF4J记录不同级别日志的示例详解

《Java使用SLF4J记录不同级别日志的示例详解》SLF4J是一个简单的日志门面,它允许在运行时选择不同的日志实现,这篇文章主要为大家详细介绍了如何使用SLF4J记录不同级别日志,感兴趣的可以了解下... 目录一、SLF4J简介二、添加依赖三、配置Logback四、记录不同级别的日志五、总结一、SLF4J

将Java项目提交到云服务器的流程步骤

《将Java项目提交到云服务器的流程步骤》所谓将项目提交到云服务器即将你的项目打成一个jar包然后提交到云服务器即可,因此我们需要准备服务器环境为:Linux+JDK+MariDB(MySQL)+Gi... 目录1. 安装 jdk1.1 查看 jdk 版本1.2 下载 jdk2. 安装 mariadb(my

使用Python实现一个优雅的异步定时器

《使用Python实现一个优雅的异步定时器》在Python中实现定时器功能是一个常见需求,尤其是在需要周期性执行任务的场景下,本文给大家介绍了基于asyncio和threading模块,可扩展的异步定... 目录需求背景代码1. 单例事件循环的实现2. 事件循环的运行与关闭3. 定时器核心逻辑4. 启动与停

基于Python实现读取嵌套压缩包下文件的方法

《基于Python实现读取嵌套压缩包下文件的方法》工作中遇到的问题,需要用Python实现嵌套压缩包下文件读取,本文给大家介绍了详细的解决方法,并有相关的代码示例供大家参考,需要的朋友可以参考下... 目录思路完整代码代码优化思路打开外层zip压缩包并遍历文件:使用with zipfile.ZipFil

Python实现word文档内容智能提取以及合成

《Python实现word文档内容智能提取以及合成》这篇文章主要为大家详细介绍了如何使用Python实现从10个左右的docx文档中抽取内容,再调整语言风格后生成新的文档,感兴趣的小伙伴可以了解一下... 目录核心思路技术路径实现步骤阶段一:准备工作阶段二:内容提取 (python 脚本)阶段三:语言风格调

SpringBoot中配置Redis连接池的完整指南

《SpringBoot中配置Redis连接池的完整指南》这篇文章主要为大家详细介绍了SpringBoot中配置Redis连接池的完整指南,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以... 目录一、添加依赖二、配置 Redis 连接池三、测试 Redis 操作四、完整示例代码(一)pom.

Java 正则表达式URL 匹配与源码全解析

《Java正则表达式URL匹配与源码全解析》在Web应用开发中,我们经常需要对URL进行格式验证,今天我们结合Java的Pattern和Matcher类,深入理解正则表达式在实际应用中... 目录1.正则表达式分解:2. 添加域名匹配 (2)3. 添加路径和查询参数匹配 (3) 4. 最终优化版本5.设计思

C#实现将Excel表格转换为图片(JPG/ PNG)

《C#实现将Excel表格转换为图片(JPG/PNG)》Excel表格可能会因为不同设备或字体缺失等问题,导致格式错乱或数据显示异常,转换为图片后,能确保数据的排版等保持一致,下面我们看看如何使用C... 目录通过C# 转换Excel工作表到图片通过C# 转换指定单元格区域到图片知识扩展C# 将 Excel

Java使用ANTLR4对Lua脚本语法校验详解

《Java使用ANTLR4对Lua脚本语法校验详解》ANTLR是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件,下面就跟随小编一起看看Java如何使用ANTLR4对Lua脚本... 目录什么是ANTLR?第一个例子ANTLR4 的工作流程Lua脚本语法校验准备一个Lua Gramm