news 2026/4/18 5:32:36

基于SpringBoot的图书个性化推荐系统-048

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于SpringBoot的图书个性化推荐系统-048

一、项目技术栈

Java开发工具:JDK1.8
后端框架:SpringBoot
前端:采用HTML和Vue相结合开发
数据库:MySQL5.7和Navicat管理工具结合
服务器:Tomcat8.5
开发软件:IDEA / Eclipse
是否Maven项目:是

二、源码获取
源码获取

三、项目视频
视频链接
四、功能截图





五、代码实现
图书信息评论

package com.controller;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Arrays;import java.util.Calendar;import java.util.Map;import java.util.HashMap;import java.util.Iterator;import java.util.Date;import java.util.List;import javax.servlet.http.HttpServletRequest;import com.utils.ValidatorUtils;import org.apache.commons.lang3.StringUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;import com.baomidou.mybatisplus.mapper.EntityWrapper;import com.baomidou.mybatisplus.mapper.Wrapper;import com.annotation.IgnoreAuth;import com.entity.DiscusstushuxinxiEntity;import com.entity.view.DiscusstushuxinxiView;import com.service.DiscusstushuxinxiService;import com.service.TokenService;import com.utils.PageUtils;import com.utils.R;import com.utils.MD5Util;import com.utils.MPUtil;import com.utils.CommonUtil;/** * 图书信息评论表 */@RestController@RequestMapping("/discusstushuxinxi")publicclassDiscusstushuxinxiController{@AutowiredprivateDiscusstushuxinxiServicediscusstushuxinxiService;/** * 后端列表 */@RequestMapping("/page")publicRpage(@RequestParam Map<String,Object>params,DiscusstushuxinxiEntitydiscusstushuxinxi,HttpServletRequestrequest){EntityWrapper<DiscusstushuxinxiEntity>ew=newEntityWrapper<DiscusstushuxinxiEntity>();PageUtilspage=discusstushuxinxiService.queryPage(params,MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew,discusstushuxinxi),params),params));returnR.ok().put("data",page);}/** * 前端列表 */@IgnoreAuth@RequestMapping("/list")publicRlist(@RequestParam Map<String,Object>params,DiscusstushuxinxiEntitydiscusstushuxinxi,HttpServletRequestrequest){EntityWrapper<DiscusstushuxinxiEntity>ew=newEntityWrapper<DiscusstushuxinxiEntity>();PageUtilspage=discusstushuxinxiService.queryPage(params,MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew,discusstushuxinxi),params),params));returnR.ok().put("data",page);}/** * 列表 */@RequestMapping("/lists")publicRlist(DiscusstushuxinxiEntitydiscusstushuxinxi){EntityWrapper<DiscusstushuxinxiEntity>ew=newEntityWrapper<DiscusstushuxinxiEntity>();ew.allEq(MPUtil.allEQMapPre(discusstushuxinxi,"discusstushuxinxi"));returnR.ok().put("data",discusstushuxinxiService.selectListView(ew));}/** * 查询 */@RequestMapping("/query")publicRquery(DiscusstushuxinxiEntitydiscusstushuxinxi){EntityWrapper<DiscusstushuxinxiEntity>ew=newEntityWrapper<DiscusstushuxinxiEntity>();ew.allEq(MPUtil.allEQMapPre(discusstushuxinxi,"discusstushuxinxi"));DiscusstushuxinxiViewdiscusstushuxinxiView=discusstushuxinxiService.selectView(ew);returnR.ok("查询图书信息评论表成功").put("data",discusstushuxinxiView);}/** * 后端详情 */@RequestMapping("/info/{id}")publicRinfo(@PathVariable("id")Longid){DiscusstushuxinxiEntitydiscusstushuxinxi=discusstushuxinxiService.selectById(id);returnR.ok().put("data",discusstushuxinxi);}/** * 前端详情 */@RequestMapping("/detail/{id}")publicRdetail(@PathVariable("id")Longid){DiscusstushuxinxiEntitydiscusstushuxinxi=discusstushuxinxiService.selectById(id);returnR.ok().put("data",discusstushuxinxi);}/** * 后端保存 */@RequestMapping("/save")publicRsave(@RequestBodyDiscusstushuxinxiEntitydiscusstushuxinxi,HttpServletRequestrequest){discusstushuxinxi.setId(newDate().getTime()+newDouble(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(discusstushuxinxi);discusstushuxinxiService.insert(discusstushuxinxi);returnR.ok();}/** * 前端保存 */@RequestMapping("/add")publicRadd(@RequestBodyDiscusstushuxinxiEntitydiscusstushuxinxi,HttpServletRequestrequest){discusstushuxinxi.setId(newDate().getTime()+newDouble(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(discusstushuxinxi);discusstushuxinxiService.insert(discusstushuxinxi);returnR.ok();}/** * 修改 */@RequestMapping("/update")publicRupdate(@RequestBodyDiscusstushuxinxiEntitydiscusstushuxinxi,HttpServletRequestrequest){//ValidatorUtils.validateEntity(discusstushuxinxi);discusstushuxinxiService.updateById(discusstushuxinxi);//全部更新returnR.ok();}/** * 删除 */@RequestMapping("/delete")publicRdelete(@RequestBodyLong[]ids){discusstushuxinxiService.deleteBatchIds(Arrays.asList(ids));returnR.ok();}/** * 提醒接口 */@RequestMapping("/remind/{columnName}/{type}")publicRremindCount(@PathVariable("columnName")StringcolumnName,HttpServletRequestrequest,@PathVariable("type")Stringtype,@RequestParamMap<String,Object>map){map.put("column",columnName);map.put("type",type);if(type.equals("2")){SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd");Calendarc=Calendar.getInstance();DateremindStartDate=null;DateremindEndDate=null;if(map.get("remindstart")!=null){IntegerremindStart=Integer.parseInt(map.get("remindstart").toString());c.setTime(newDate());c.add(Calendar.DAY_OF_MONTH,remindStart);remindStartDate=c.getTime();map.put("remindstart",sdf.format(remindStartDate));}if(map.get("remindend")!=null){IntegerremindEnd=Integer.parseInt(map.get("remindend").toString());c.setTime(newDate());c.add(Calendar.DAY_OF_MONTH,remindEnd);remindEndDate=c.getTime();map.put("remindend",sdf.format(remindEndDate));}}Wrapper<DiscusstushuxinxiEntity>wrapper=newEntityWrapper<DiscusstushuxinxiEntity>();if(map.get("remindstart")!=null){wrapper.ge(columnName,map.get("remindstart"));}if(map.get("remindend")!=null){wrapper.le(columnName,map.get("remindend"));}intcount=discusstushuxinxiService.selectCount(wrapper);returnR.ok().put("count",count);}}

留言板

package com.controller;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Arrays;import java.util.Calendar;import java.util.Map;import java.util.HashMap;import java.util.Iterator;import java.util.Date;import java.util.List;import javax.servlet.http.HttpServletRequest;import com.utils.ValidatorUtils;import org.apache.commons.lang3.StringUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;import com.baomidou.mybatisplus.mapper.EntityWrapper;import com.baomidou.mybatisplus.mapper.Wrapper;import com.annotation.IgnoreAuth;import com.entity.MessagesEntity;import com.entity.view.MessagesView;import com.service.MessagesService;import com.service.TokenService;import com.utils.PageUtils;import com.utils.R;import com.utils.MD5Util;import com.utils.MPUtil;import com.utils.CommonUtil;/** * 留言板 */@RestController@RequestMapping("/messages")publicclassMessagesController{@AutowiredprivateMessagesServicemessagesService;/** * 后端列表 */@RequestMapping("/page")publicRpage(@RequestParam Map<String,Object>params,MessagesEntitymessages,HttpServletRequestrequest){if(!request.getSession().getAttribute("role").toString().equals("管理员")){messages.setUserid((Long)request.getSession().getAttribute("userId"));}EntityWrapper<MessagesEntity>ew=newEntityWrapper<MessagesEntity>();PageUtilspage=messagesService.queryPage(params,MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew,messages),params),params));returnR.ok().put("data",page);}/** * 前端列表 */@RequestMapping("/list")publicRlist(@RequestParam Map<String,Object>params,MessagesEntitymessages,HttpServletRequestrequest){if(!request.getSession().getAttribute("role").toString().equals("管理员")){messages.setUserid((Long)request.getSession().getAttribute("userId"));}EntityWrapper<MessagesEntity>ew=newEntityWrapper<MessagesEntity>();PageUtilspage=messagesService.queryPage(params,MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew,messages),params),params));returnR.ok().put("data",page);}/** * 列表 */@RequestMapping("/lists")publicRlist(MessagesEntitymessages){EntityWrapper<MessagesEntity>ew=newEntityWrapper<MessagesEntity>();ew.allEq(MPUtil.allEQMapPre(messages,"messages"));returnR.ok().put("data",messagesService.selectListView(ew));}/** * 查询 */@RequestMapping("/query")publicRquery(MessagesEntitymessages){EntityWrapper<MessagesEntity>ew=newEntityWrapper<MessagesEntity>();ew.allEq(MPUtil.allEQMapPre(messages,"messages"));MessagesViewmessagesView=messagesService.selectView(ew);returnR.ok("查询留言板成功").put("data",messagesView);}/** * 后端详情 */@RequestMapping("/info/{id}")publicRinfo(@PathVariable("id")Longid){MessagesEntitymessages=messagesService.selectById(id);returnR.ok().put("data",messages);}/** * 前端详情 */@RequestMapping("/detail/{id}")publicRdetail(@PathVariable("id")Longid){MessagesEntitymessages=messagesService.selectById(id);returnR.ok().put("data",messages);}/** * 后端保存 */@RequestMapping("/save")publicRsave(@RequestBodyMessagesEntitymessages,HttpServletRequestrequest){messages.setId(newDate().getTime()+newDouble(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(messages);messagesService.insert(messages);returnR.ok();}/** * 前端保存 */@RequestMapping("/add")publicRadd(@RequestBodyMessagesEntitymessages,HttpServletRequestrequest){messages.setId(newDate().getTime()+newDouble(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(messages);messages.setUserid((Long)request.getSession().getAttribute("userId"));messagesService.insert(messages);returnR.ok();}/** * 修改 */@RequestMapping("/update")publicRupdate(@RequestBodyMessagesEntitymessages,HttpServletRequestrequest){//ValidatorUtils.validateEntity(messages);messagesService.updateById(messages);//全部更新returnR.ok();}/** * 删除 */@RequestMapping("/delete")publicRdelete(@RequestBodyLong[]ids){messagesService.deleteBatchIds(Arrays.asList(ids));returnR.ok();}/** * 提醒接口 */@RequestMapping("/remind/{columnName}/{type}")publicRremindCount(@PathVariable("columnName")StringcolumnName,HttpServletRequestrequest,@PathVariable("type")Stringtype,@RequestParamMap<String,Object>map){map.put("column",columnName);map.put("type",type);if(type.equals("2")){SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd");Calendarc=Calendar.getInstance();DateremindStartDate=null;DateremindEndDate=null;if(map.get("remindstart")!=null){IntegerremindStart=Integer.parseInt(map.get("remindstart").toString());c.setTime(newDate());c.add(Calendar.DAY_OF_MONTH,remindStart);remindStartDate=c.getTime();map.put("remindstart",sdf.format(remindStartDate));}if(map.get("remindend")!=null){IntegerremindEnd=Integer.parseInt(map.get("remindend").toString());c.setTime(newDate());c.add(Calendar.DAY_OF_MONTH,remindEnd);remindEndDate=c.getTime();map.put("remindend",sdf.format(remindEndDate));}}Wrapper<MessagesEntity>wrapper=newEntityWrapper<MessagesEntity>();if(map.get("remindstart")!=null){wrapper.ge(columnName,map.get("remindstart"));}if(map.get("remindend")!=null){wrapper.le(columnName,map.get("remindend"));}intcount=messagesService.selectCount(wrapper);returnR.ok().put("count",count);}}

退换图书

package com.controller;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Arrays;import java.util.Calendar;import java.util.Map;import java.util.HashMap;import java.util.Iterator;import java.util.Date;import java.util.List;import javax.servlet.http.HttpServletRequest;import com.utils.ValidatorUtils;import org.apache.commons.lang3.StringUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;import com.baomidou.mybatisplus.mapper.EntityWrapper;import com.baomidou.mybatisplus.mapper.Wrapper;import com.annotation.IgnoreAuth;import com.entity.TuihuantushuEntity;import com.entity.view.TuihuantushuView;import com.service.TuihuantushuService;import com.service.TokenService;import com.utils.PageUtils;import com.utils.R;import com.utils.MD5Util;import com.utils.MPUtil;import com.utils.CommonUtil;/** * 退换图书 */@RestController@RequestMapping("/tuihuantushu")publicclassTuihuantushuController{@AutowiredprivateTuihuantushuServicetuihuantushuService;/** * 后端列表 */@RequestMapping("/page")publicRpage(@RequestParam Map<String,Object>params,TuihuantushuEntitytuihuantushu,HttpServletRequestrequest){StringtableName=request.getSession().getAttribute("tableName").toString();if(tableName.equals("xuesheng")){tuihuantushu.setXuehao((String)request.getSession().getAttribute("username"));}EntityWrapper<TuihuantushuEntity>ew=newEntityWrapper<TuihuantushuEntity>();PageUtilspage=tuihuantushuService.queryPage(params,MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew,tuihuantushu),params),params));returnR.ok().put("data",page);}/** * 前端列表 */@RequestMapping("/list")publicRlist(@RequestParam Map<String,Object>params,TuihuantushuEntitytuihuantushu,HttpServletRequestrequest){EntityWrapper<TuihuantushuEntity>ew=newEntityWrapper<TuihuantushuEntity>();PageUtilspage=tuihuantushuService.queryPage(params,MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew,tuihuantushu),params),params));returnR.ok().put("data",page);}/** * 列表 */@RequestMapping("/lists")publicRlist(TuihuantushuEntitytuihuantushu){EntityWrapper<TuihuantushuEntity>ew=newEntityWrapper<TuihuantushuEntity>();ew.allEq(MPUtil.allEQMapPre(tuihuantushu,"tuihuantushu"));returnR.ok().put("data",tuihuantushuService.selectListView(ew));}/** * 查询 */@RequestMapping("/query")publicRquery(TuihuantushuEntitytuihuantushu){EntityWrapper<TuihuantushuEntity>ew=newEntityWrapper<TuihuantushuEntity>();ew.allEq(MPUtil.allEQMapPre(tuihuantushu,"tuihuantushu"));TuihuantushuViewtuihuantushuView=tuihuantushuService.selectView(ew);returnR.ok("查询退换图书成功").put("data",tuihuantushuView);}/** * 后端详情 */@RequestMapping("/info/{id}")publicRinfo(@PathVariable("id")Longid){TuihuantushuEntitytuihuantushu=tuihuantushuService.selectById(id);returnR.ok().put("data",tuihuantushu);}/** * 前端详情 */@RequestMapping("/detail/{id}")publicRdetail(@PathVariable("id")Longid){TuihuantushuEntitytuihuantushu=tuihuantushuService.selectById(id);returnR.ok().put("data",tuihuantushu);}/** * 后端保存 */@RequestMapping("/save")publicRsave(@RequestBodyTuihuantushuEntitytuihuantushu,HttpServletRequestrequest){tuihuantushu.setId(newDate().getTime()+newDouble(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(tuihuantushu);tuihuantushuService.insert(tuihuantushu);returnR.ok();}/** * 前端保存 */@RequestMapping("/add")publicRadd(@RequestBodyTuihuantushuEntitytuihuantushu,HttpServletRequestrequest){tuihuantushu.setId(newDate().getTime()+newDouble(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(tuihuantushu);tuihuantushuService.insert(tuihuantushu);returnR.ok();}/** * 修改 */@RequestMapping("/update")publicRupdate(@RequestBodyTuihuantushuEntitytuihuantushu,HttpServletRequestrequest){//ValidatorUtils.validateEntity(tuihuantushu);tuihuantushuService.updateById(tuihuantushu);//全部更新returnR.ok();}/** * 删除 */@RequestMapping("/delete")publicRdelete(@RequestBodyLong[]ids){tuihuantushuService.deleteBatchIds(Arrays.asList(ids));returnR.ok();}/** * 提醒接口 */@RequestMapping("/remind/{columnName}/{type}")publicRremindCount(@PathVariable("columnName")StringcolumnName,HttpServletRequestrequest,@PathVariable("type")Stringtype,@RequestParamMap<String,Object>map){map.put("column",columnName);map.put("type",type);if(type.equals("2")){SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd");Calendarc=Calendar.getInstance();DateremindStartDate=null;DateremindEndDate=null;if(map.get("remindstart")!=null){IntegerremindStart=Integer.parseInt(map.get("remindstart").toString());c.setTime(newDate());c.add(Calendar.DAY_OF_MONTH,remindStart);remindStartDate=c.getTime();map.put("remindstart",sdf.format(remindStartDate));}if(map.get("remindend")!=null){IntegerremindEnd=Integer.parseInt(map.get("remindend").toString());c.setTime(newDate());c.add(Calendar.DAY_OF_MONTH,remindEnd);remindEndDate=c.getTime();map.put("remindend",sdf.format(remindEndDate));}}Wrapper<TuihuantushuEntity>wrapper=newEntityWrapper<TuihuantushuEntity>();if(map.get("remindstart")!=null){wrapper.ge(columnName,map.get("remindstart"));}if(map.get("remindend")!=null){wrapper.le(columnName,map.get("remindend"));}StringtableName=request.getSession().getAttribute("tableName").toString();if(tableName.equals("xuesheng")){wrapper.eq("xuehao",(String)request.getSession().getAttribute("username"));}intcount=tuihuantushuService.selectCount(wrapper);returnR.ok().put("count",count);}}

上万套源码,每日分享源码,谢谢你的关注和喜欢,需要可以联系主页信息。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 19:26:59

27、Linux文件安全、权限管理与文件系统导航全解析

Linux文件安全、权限管理与文件系统导航全解析 1. Linux文件所有权与权限设置 在像Linux这样的多用户操作系统中,文件安全至关重要,而所有权是安全拼图中的重要一块。在Linux里,每个文件都有一个所有者和一个关联的组。超级用户可以使用 chown 命令设置所有者,超级用户…

作者头像 李华
网站建设 2026/4/13 16:32:21

30、网络连接测试与安全防护指南

网络连接测试与安全防护指南 1. 网络连接的基本操作 在网络配置中, ifup 和 ifdown 命令可根据配置文件中的设置来启用或关闭网络连接。当更改配置文件中的设置后,可按以下步骤操作: 1. 输入 ifdown netname 关闭指定网络连接。 2. 接着输入 ifup netname 重新启…

作者头像 李华
网站建设 2026/4/16 14:25:44

2025年国内知名的高温外六角螺栓/12.9级螺栓厂家最新推荐权威榜

随着我国高端装备制造业的快速发展&#xff0c;对高强度、耐高温紧固件的需求持续攀升。特别是在风电、轨道交通、石油化工、航空航天及新能源汽车等领域&#xff0c;12.9级高温外六角螺栓作为关键连接部件&#xff0c;其性能直接关系到设备运行的安全性与稳定性。为帮助行业用…

作者头像 李华
网站建设 2026/4/13 6:03:49

如何快速验证邮箱:check-if-email-exists终极使用指南

如何快速验证邮箱&#xff1a;check-if-email-exists终极使用指南 【免费下载链接】check-if-email-exists Check if an email address exists without sending any email, written in Rust. Comes with a ⚙️ HTTP backend. 项目地址: https://gitcode.com/gh_mirrors/ch/c…

作者头像 李华
网站建设 2026/4/13 6:45:46

3种实用场景下的AutoGluon多模态AI部署指南

你是否曾为复杂的机器学习项目配置而头疼&#xff1f;AutoGluon多模态AI框架正能解决这个问题。作为一款强大的AutoML工具&#xff0c;它能够自动处理图像、文本、时间序列和表格数据的多模态任务&#xff0c;让机器学习变得前所未有的简单。 【免费下载链接】autogluon AutoGl…

作者头像 李华
网站建设 2026/4/7 0:28:02

Android多屏显示5大痛点完全解决:SecondScreen实战技巧揭秘

Android多屏显示5大痛点完全解决&#xff1a;SecondScreen实战技巧揭秘 【免费下载链接】SecondScreen Better screen mirroring for Android devices 项目地址: https://gitcode.com/gh_mirrors/se/SecondScreen 你是否曾经遇到过这样的困扰&#xff1a;Android设备连接…

作者头像 李华