news 2026/9/24 4:03:15

基于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/9/22 23:23:01

游戏增强工具YimMenu:从入门到精通的完整指南

游戏增强工具YimMenu&#xff1a;从入门到精通的完整指南 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenu …

作者头像 李华
网站建设 2026/9/23 3:36:38

B站视频下载神器:BiliDownloader完全使用手册

想要轻松保存B站上的精彩视频内容吗&#xff1f;BiliDownloader这款界面精简、操作简单且高速下载的B站视频下载工具&#xff0c;让你在几分钟内掌握B站视频下载的全部技巧。无论是UP主的优质教学视频、珍贵的回忆片段&#xff0c;还是想要离线观看的娱乐内容&#xff0c;这款工…

作者头像 李华
网站建设 2026/9/23 5:14:35

如何快速合并分割APK:开源工具的终极解决方案指南

如何快速合并分割APK&#xff1a;开源工具的终极解决方案指南 【免费下载链接】AntiSplit-M App to AntiSplit (merge) split APKs (APKS/XAPK/APKM) to regular .APK file on Android 项目地址: https://gitcode.com/gh_mirrors/an/AntiSplit-M 在Android应用分发过程中…

作者头像 李华
网站建设 2026/9/23 21:00:29

实时语音转写技术革命:WhisperLiveKit如何重塑语音交互体验

实时语音转写技术革命&#xff1a;WhisperLiveKit如何重塑语音交互体验 【免费下载链接】WhisperLiveKit Real-time, Fully Local Speech-to-Text and Speaker Diarization. FastAPI Server & Web Interface 项目地址: https://gitcode.com/GitHub_Trending/wh/WhisperLi…

作者头像 李华
网站建设 2026/9/23 19:59:26

基于海马体突触修剪机制的动态剪枝策略在量化交易系统中的实现

系统功能说明 本系统通过模拟生物神经系统中海马体的突触修剪过程&#xff0c;构建具备自适应权重调整能力的量化交易策略框架。核心功能包括&#xff1a;1) 动态特征选择机制&#xff1b;2) 参数空间的持续优化&#xff1b;3) 市场状态感知的拓扑结构调整。该方案有效解决了传…

作者头像 李华