🍅 作者简介:CSDN特邀作者✌、java领域优质创作者💪
🍅关注公众号【java李杨勇】 简历模板、学习资料、面试题库等都给你
🍅文末获取源码联系🍅
一、前言介绍:
随着社会的快速发展,计算机的影响是全面且深入的。人们生活水平的不断提高,日常生活中用户对手办周边商城方面的要求也在不断提高,而漫威系列手办周边商城得到广大用户的青睐,使得漫威系列手办周边商城的开发成为必需而且紧迫的事情。漫威系列手办周边商城主要是借助计算机,通过对漫威系列手办周边商城所需的信息管理,增加用户的选择,同时也方便对广大用户信息的及时查询、修改以及对用户信息的及时了解。手办周边商城对用户带来了更多的便利,该系统通过和数据库管理系统软件协作来满足用户的需求。计算机技术在现代管理中的应用,使计算机成为人们应用现代技术的重要工具。能够有效的解决获取信息便捷化、全面化的问题,提高效率。
二、功能设计:
本漫威系列手办周边商城系统主要功能设计为实现管理员;个人中心、系统公告管理、用户管理、商品系列管理、商品信息管理、订单评价管理、论坛管理、系统管理、订单管理,用户;个人中心、订单评价管理、我的收藏管理、订单管理,前台首页;首页、商品信息、论坛信息、我的、跳转到后台、购物车客服等信息管理功能。系统操作流程如下:

三、功能截图:
普通用户登录注册:


首页主要功能介绍:商品信息、论坛信息、我的、跳转到后台、购物车客服等信息管理功能

商品详情:可加入购物车、修改数量、立即购买和收藏商品

商品详情可以配置图文介绍等

 商品评论交流模块
添加了论坛帖子系列功能:普通用户可以发布、可以对帖子进行交流讨论等

帖子详情数据查看、可以在底部评论

在我的个人中心可以查看我的发布、我的订单、我的地址修改以及我的收藏模块和个人信息模块

购物车模块:要选择收货地址信息等

我的订单模块:

我的收藏模块:

普通用户后台中心:

订单评价:

收藏管理:

订单信息管理:

四、 后端主要功能:
修改密码:
 用户管理:

 
商品系列管理:

商品信息管理:

商品详情修改:

商品评价管理:

论坛管理:

客服管理:
 首页轮播图管理:

订单信息管理:

五、数据库设计:
表address (地址)
| 
 编号  | 
 名称  | 
 数据类型  | 
 长度  | 
 小数位  | 
 允许空值  | 
 主键  | 
| 
 1  | 
 id  | 
 bigint  | 
 20  | 
 0  | 
 N  | 
 Y  | 
| 
 2  | 
 addtime  | 
 timestamp  | 
 19  | 
 0  | 
 N  | 
 N  | 
| 
 3  | 
 userid  | 
 bigint  | 
 20  | 
 0  | 
 N  | 
 N  | 
| 
 4  | 
 address  | 
 varchar  | 
 200  | 
 0  | 
 N  | 
 N  | 
| 
 5  | 
 name  | 
 varchar  | 
 200  | 
 0  | 
 N  | 
 N  | 
| 
 6  | 
 phone  | 
 varchar  | 
 200  | 
 0  | 
 N  | 
 N  | 
| 
 7  | 
 isdefault  | 
 varchar  | 
 200  | 
 0  | 
 N  | 
 N  | 
表cart (购物车表)
| 
 编号  | 
 名称  | 
 数据类型  | 
 长度  | 
 小数位  | 
 允许空值  | 
 主键  | 
| 
 1  | 
 id  | 
 bigint  | 
 20  | 
 0  | 
 N  | 
 Y  | 
| 
 2  | 
 addtime  | 
 timestamp  | 
 19  | 
 0  | 
 N  | 
 N  | 
| 
 3  | 
 tablename  | 
 varchar  | 
 200  | 
 0  | 
 Y  | 
 N  | 
| 
 4  | 
 userid  | 
 bigint  | 
 20  | 
 0  | 
 N  | 
 N  | 
| 
 5  | 
 goodid  | 
 bigint  | 
 20  | 
 0  | 
 N  | 
 N  | 
| 
 6  | 
 goodname  | 
 varchar  | 
 200  | 
 0  | 
 Y  | 
 N  | 
| 
 7  | 
 picture  | 
 varchar  | 
 200  | 
 0  | 
 Y  | 
 N  | 
| 
 8  | 
 buynumber  | 
 int  | 
 10  | 
 0  | 
 N  | 
 N  | 
| 
 9  | 
 price  | 
 float  | 
 13  | 
 0  | 
 Y  | 
 N  | 
| 
 10  | 
 discountprice  | 
 float  | 
 13  | 
 0  | 
 Y  | 
 N  | 
表chat (客服聊天表)
| 
 编号  | 
 名称  | 
 数据类型  | 
 长度  | 
 小数位  | 
 允许空值  | 
 主键  | 
 说明  | 
| 
 1  | 
 id  | 
 bigint  | 
 20  | 
 0  | 
 N  | 
 Y  | 
 主键  | 
| 
 2  | 
 addtime  | 
 timestamp  | 
 19  | 
 0  | 
 N  | 
 N  | 
 创建时间  | 
| 
 3  | 
 userid  | 
 bigint  | 
 20  | 
 0  | 
 N  | 
 N  | 
 用户id  | 
| 
 4  | 
 adminid  | 
 bigint  | 
 20  | 
 0  | 
 Y  | 
 N  | 
 管理员id  | 
| 
 5  | 
 ask  | 
 longtext  | 
 2147483647  | 
 0  | 
 Y  | 
 N  | 
 提问  | 
| 
 6  | 
 reply  | 
 longtext  | 
 2147483647  | 
 0  | 
 Y  | 
 N  | 
 回复  | 
| 
 7  | 
 isreply  | 
 int  | 
 10  | 
 0  | 
 Y  | 
 N  | 
 是否回复  | 
表config (配置文件)
| 
 编号  | 
 名称  | 
 数据类型  | 
 长度  | 
 小数位  | 
 允许空值  | 
 主键  | 
 说明  | 
| 
 1  | 
 id  | 
 bigint  | 
 20  | 
 0  | 
 N  | 
 Y  | 
 主键  | 
| 
 2  | 
 name  | 
 varchar  | 
 100  | 
 0  | 
 N  | 
 N  | 
 配置参数名称  | 
| 
 3  | 
 value  | 
 varchar  | 
 100  | 
 0  | 
 Y  | 
 N  | 
 配置参数值  | 
表dingdanpingjia (订单评价)
| 
 编号  | 
 名称  | 
 数据类型  | 
 长度  | 
 小数位  | 
 允许空值  | 
 主键  | 
 说明  | 
| 
 1  | 
 id  | 
 bigint  | 
 20  | 
 0  | 
 N  | 
 Y  | 
 主键  | 
| 
 2  | 
 addtime  | 
 timestamp  | 
 19  | 
 0  | 
 N  | 
 N  | 
 创建时间  | 
| 
 3  | 
 dingdanbianhao  | 
 varchar  | 
 200  | 
 0  | 
 N  | 
 N  | 
 订单编号  | 
| 
 4  | 
 shangpinbianhao  | 
 varchar  | 
 200  | 
 0  | 
 Y  | 
 N  | 
 商品编号  | 
| 
 5  | 
 shangpinmingcheng  | 
 varchar  | 
 200  | 
 0  | 
 N  | 
 N  | 
 商品名称  | 
| 
 6  | 
 shangpinxilie  | 
 varchar  | 
 200  | 
 0  | 
 Y  | 
 N  | 
 商品系列  | 
| 
 7  | 
 pingfen  | 
 varchar  | 
 200  | 
 0  | 
 Y  | 
 N  | 
 评分  | 
| 
 8  | 
 pingjianeirong  | 
 longtext  | 
 2147483647  | 
 0  | 
 Y  | 
 N  | 
 评价内容  | 
| 
 9  | 
 tianjiatupian  | 
 varchar  | 
 200  | 
 0  | 
 Y  | 
 N  | 
 添加图片  | 
| 
 10  | 
 pingjiariqi  | 
 date  | 
 10  | 
 0  | 
 Y  | 
 N  | 
 评价日期  | 
| 
 11  | 
 yonghuming  | 
 varchar  | 
 200  | 
 0  | 
 Y  | 
 N  | 
 用户名  | 
| 
 12  | 
 lianxidianhua  | 
 varchar  | 
 200  | 
 0  | 
 Y  | 
 N  | 
 联系电话  | 
| 
 13  | 
 sfsh  | 
 varchar  | 
 200  | 
 0  | 
 Y  | 
 N  | 
 是否审核  | 
| 
 14  | 
 shhf  | 
 longtext  | 
 2147483647  | 
 0  | 
 Y  | 
 N  | 
 审核回复  | 
表discussshangpinxinxi (商品信息评论表)
| 
 编号  | 
 名称  | 
 数据类型  | 
 长度  | 
 小数位  | 
 允许空值  | 
 主键  | 
 说明  | 
| 
 1  | 
 id  | 
 bigint  | 
 20  | 
 0  | 
 N  | 
 Y  | 
 主键  | 
| 
 2  | 
 addtime  | 
 timestamp  | 
 19  | 
 0  | 
 N  | 
 N  | 
 创建时间  | 
| 
 3  | 
 refid  | 
 bigint  | 
 20  | 
 0  | 
 N  | 
 N  | 
 关联表id  | 
| 
 4  | 
 userid  | 
 bigint  | 
 20  | 
 0  | 
 N  | 
 N  | 
 用户id  | 
| 
 5  | 
 content  | 
 longtext  | 
 2147483647  | 
 0  | 
 N  | 
 N  | 
 评论内容  | 
| 
 6  | 
 reply  | 
 longtext  | 
 2147483647  | 
 0  | 
 Y  | 
 N  | 
 回复内容  | 
表discussxitonggonggao (系统公告评论表)
| 
 编号  | 
 名称  | 
 数据类型  | 
 长度  | 
 小数位  | 
 允许空值  | 
 主键  | 
 说明  | 
| 
 1  | 
 id  | 
 bigint  | 
 20  | 
 0  | 
 N  | 
 Y  | 
 主键  | 
| 
 2  | 
 addtime  | 
 timestamp  | 
 19  | 
 0  | 
 N  | 
 N  | 
 创建时间  | 
| 
 3  | 
 refid  | 
 bigint  | 
 20  | 
 0  | 
 N  | 
 N  | 
 关联表id  | 
| 
 4  | 
 userid  | 
 bigint  | 
 20  | 
 0  | 
 N  | 
 N  | 
 用户id  | 
| 
 5  | 
 content  | 
 longtext  | 
 2147483647  | 
 0  | 
 N  | 
 N  | 
 评论内容  | 
| 
 6  | 
 reply  | 
 longtext  | 
 2147483647  | 
 0  | 
 Y  | 
 N  | 
 回复内容  | 
表forum (论坛表)
| 
 编号  | 
 名称  | 
 数据类型  | 
 长度  | 
 小数位  | 
 允许空值  | 
 主键  | 
 说明  | 
| 
 1  | 
 id  | 
 bigint  | 
 20  | 
 0  | 
 N  | 
 Y  | 
 主键  | 
| 
 2  | 
 addtime  | 
 timestamp  | 
 19  | 
 0  | 
 N  | 
 N  | 
 创建时间  | 
| 
 3  | 
 title  | 
 varchar  | 
 200  | 
 0  | 
 Y  | 
 N  | 
 帖子标题  | 
| 
 4  | 
 content  | 
 longtext  | 
 2147483647  | 
 0  | 
 N  | 
 N  | 
 帖子内容  | 
| 
 5  | 
 parentid  | 
 bigint  | 
 20  | 
 0  | 
 Y  | 
 N  | 
 父节点id  | 
| 
 6  | 
 userid  | 
 bigint  | 
 20  | 
 0  | 
 N  | 
 N  | 
 用户id  | 
| 
 7  | 
 username  | 
 varchar  | 
 200  | 
 0  | 
 Y  | 
 N  | 
 用户名  | 
| 
 8  | 
 isdone  | 
 varchar  | 
 200  | 
 0  | 
 Y  | 
 N  | 
 状态  | 
表orders (订单)
| 
 编号  | 
 名称  | 
 数据类型  | 
 长度  | 
 小数位  | 
 允许空值  | 
 主键  | 
 说明  | 
| 
 1  | 
 id  | 
 bigint  | 
 20  | 
 0  | 
 N  | 
 Y  | 
 主键  | 
| 
 2  | 
 addtime  | 
 timestamp  | 
 19  | 
 0  | 
 N  | 
 N  | 
 创建时间  | 
| 
 3  | 
 orderid  | 
 varchar  | 
 200  | 
 0  | 
 N  | 
 N  | 
 订单编号  | 
| 
 4  | 
 tablename  | 
 varchar  | 
 200  | 
 0  | 
 Y  | 
 N  | 
 商品表名  | 
| 
 5  | 
 userid  | 
 bigint  | 
 20  | 
 0  | 
 N  | 
 N  | 
 用户id  | 
| 
 6  | 
 goodid  | 
 bigint  | 
 20  | 
 0  | 
 N  | 
 N  | 
 商品id  | 
| 
 7  | 
 goodname  | 
 varchar  | 
 200  | 
 0  | 
 Y  | 
 N  | 
 商品名称  | 
| 
 8  | 
 picture  | 
 varchar  | 
 200  | 
 0  | 
 Y  | 
 N  | 
 商品图片  | 
| 
 9  | 
 buynumber  | 
 int  | 
 10  | 
 0  | 
 N  | 
 N  | 
 购买数量  | 
| 
 10  | 
 price  | 
 float  | 
 13  | 
 0  | 
 N  | 
 N  | 
 价格/积分  | 
| 
 11  | 
 discountprice  | 
 float  | 
 13  | 
 0  | 
 Y  | 
 N  | 
 折扣价格  | 
| 
 12  | 
 total  | 
 float  | 
 13  | 
 0  | 
 N  | 
 N  | 
 总价格/总积分  | 
| 
 13  | 
 discounttotal  | 
 float  | 
 13  | 
 0  | 
 Y  | 
 N  | 
 折扣总价格  | 
| 
 14  | 
 type  | 
 int  | 
 10  | 
 0  | 
 Y  | 
 N  | 
 支付类型  | 
| 
 15  | 
 status  | 
 varchar  | 
 200  | 
 0  | 
 Y  | 
 N  | 
 状态  | 
| 
 16  | 
 address  | 
 varchar  | 
 200  | 
 0  | 
 Y  | 
 N  | 
 地址  | 
表shangpinxilie (商品系列)
| 
 编号  | 
 名称  | 
 数据类型  | 
 长度  | 
 小数位  | 
 允许空值  | 
 主键  | 
 说明  | 
| 
 1  | 
 id  | 
 bigint  | 
 20  | 
 0  | 
 N  | 
 Y  | 
 主键  | 
| 
 2  | 
 addtime  | 
 timestamp  | 
 19  | 
 0  | 
 N  | 
 N  | 
 创建时间  | 
| 
 3  | 
 shangpinxilie  | 
 varchar  | 
 200  | 
 0  | 
 N  | 
 N  | 
 商品系列  | 
表shangpinxinxi (商品信息)
| 
 编号  | 
 名称  | 
 数据类型  | 
 长度  | 
 小数位  | 
 允许空值  | 
 主键  | 
 说明  | 
| 
 1  | 
 id  | 
 bigint  | 
 20  | 
 0  | 
 N  | 
 Y  | 
 主键  | 
| 
 2  | 
 addtime  | 
 timestamp  | 
 19  | 
 0  | 
 N  | 
 N  | 
 创建时间  | 
| 
 3  | 
 shangpinbianhao  | 
 varchar  | 
 200  | 
 0  | 
 Y  | 
 N  | 
 商品编号  | 
| 
 4  | 
 shangpinmingcheng  | 
 varchar  | 
 200  | 
 0  | 
 N  | 
 N  | 
 商品名称  | 
| 
 5  | 
 shangpinxilie  | 
 varchar  | 
 200  | 
 0  | 
 Y  | 
 N  | 
 商品系列  | 
| 
 6  | 
 tupian  | 
 varchar  | 
 200  | 
 0  | 
 Y  | 
 N  | 
 图片  | 
| 
 7  | 
 guige  | 
 varchar  | 
 200  | 
 0  | 
 Y  | 
 N  | 
 规格  | 
| 
 8  | 
 shangpinxiangqing  | 
 longtext  | 
 2147483647  | 
 0  | 
 Y  | 
 N  | 
 商品详情  | 
| 
 9  | 
 clicktime  | 
 datetime  | 
 19  | 
 0  | 
 Y  | 
 N  | 
 最近点击时间  | 
| 
 10  | 
 clicknum  | 
 int  | 
 10  | 
 0  | 
 Y  | 
 N  | 
 点击次数  | 
| 
 11  | 
 price  | 
 float  | 
 13  | 
 0  | 
 N  | 
 N  | 
 价格  | 
表storeup (收藏表)
| 
 编号  | 
 名称  | 
 数据类型  | 
 长度  | 
 小数位  | 
 允许空值  | 
 主键  | 
 说明  | 
| 
 1  | 
 id  | 
 bigint  | 
 20  | 
 0  | 
 N  | 
 Y  | 
 主键  | 
| 
 2  | 
 addtime  | 
 timestamp  | 
 19  | 
 0  | 
 N  | 
 N  | 
 创建时间  | 
| 
 3  | 
 userid  | 
 bigint  | 
 20  | 
 0  | 
 N  | 
 N  | 
 用户id  | 
| 
 4  | 
 refid  | 
 bigint  | 
 20  | 
 0  | 
 Y  | 
 N  | 
 收藏id  | 
| 
 5  | 
 tablename  | 
 varchar  | 
 200  | 
 0  | 
 Y  | 
 N  | 
 表名  | 
| 
 6  | 
 name  | 
 varchar  | 
 200  | 
 0  | 
 N  | 
 N  | 
 收藏名称  | 
| 
 7  | 
 picture  | 
 varchar  | 
 200  | 
 0  | 
 N  | 
 N  | 
 收藏图片  | 
表token (token表)
| 
 编号  | 
 名称  | 
 数据类型  | 
 长度  | 
 小数位  | 
 允许空值  | 
 主键  | 
 说明  | 
| 
 1  | 
 id  | 
 bigint  | 
 20  | 
 0  | 
 N  | 
 Y  | 
 主键  | 
| 
 2  | 
 userid  | 
 bigint  | 
 20  | 
 0  | 
 N  | 
 N  | 
 用户id  | 
| 
 3  | 
 username  | 
 varchar  | 
 100  | 
 0  | 
 N  | 
 N  | 
 用户名  | 
| 
 4  | 
 tablename  | 
 varchar  | 
 100  | 
 0  | 
 Y  | 
 N  | 
 表名  | 
| 
 5  | 
 role  | 
 varchar  | 
 100  | 
 0  | 
 Y  | 
 N  | 
 角色  | 
| 
 6  | 
 token  | 
 varchar  | 
 200  | 
 0  | 
 N  | 
 N  | 
 密码  | 
| 
 7  | 
 addtime  | 
 timestamp  | 
 19  | 
 0  | 
 N  | 
 N  | 
 新增时间  | 
| 
 8  | 
 expiratedtime  | 
 timestamp  | 
 19  | 
 0  | 
 N  | 
 N  | 
 过期时间  | 
表users (用户表)
| 
 编号  | 
 名称  | 
 数据类型  | 
 长度  | 
 小数位  | 
 允许空值  | 
 主键  | 
 说明  | 
| 
 1  | 
 id  | 
 bigint  | 
 20  | 
 0  | 
 N  | 
 Y  | 
 主键  | 
| 
 2  | 
 username  | 
 varchar  | 
 100  | 
 0  | 
 N  | 
 N  | 
 用户名  | 
| 
 3  | 
 password  | 
 varchar  | 
 100  | 
 0  | 
 N  | 
 N  | 
 密码  | 
| 
 4  | 
 role  | 
 varchar  | 
 100  | 
 0  | 
 Y  | 
 N  | 
 角色  | 
| 
 5  | 
 addtime  | 
 timestamp  | 
 19  | 
 0  | 
 N  | 
 N  | 
 新增时间  | 
表xitonggonggao (系统公告)
| 
 编号  | 
 名称  | 
 数据类型  | 
 长度  | 
 小数位  | 
 允许空值  | 
 主键  | 
 说明  | 
| 
 1  | 
 id  | 
 bigint  | 
 20  | 
 0  | 
 N  | 
 Y  | 
 主键  | 
| 
 2  | 
 addtime  | 
 timestamp  | 
 19  | 
 0  | 
 N  | 
 N  | 
 创建时间  | 
| 
 3  | 
 gonggaobiaoti  | 
 varchar  | 
 200  | 
 0  | 
 N  | 
 N  | 
 公告标题  | 
| 
 4  | 
 gonggaoleixing  | 
 varchar  | 
 200  | 
 0  | 
 N  | 
 N  | 
 公告类型  | 
| 
 5  | 
 tupian  | 
 varchar  | 
 200  | 
 0  | 
 Y  | 
 N  | 
 图片  | 
| 
 6  | 
 neirong  | 
 longtext  | 
 2147483647  | 
 0  | 
 Y  | 
 N  | 
 内容  | 
| 
 7  | 
 faburiqi  | 
 date  | 
 10  | 
 0  | 
 Y  | 
 N  | 
 发布日期  | 
表yonghu (用户)
| 
 编号  | 
 名称  | 
 数据类型  | 
 长度  | 
 小数位  | 
 允许空值  | 
 主键  | 
 说明  | 
| 
 1  | 
 id  | 
 bigint  | 
 20  | 
 0  | 
 N  | 
 Y  | 
 主键  | 
| 
 2  | 
 addtime  | 
 timestamp  | 
 19  | 
 0  | 
 N  | 
 N  | 
 创建时间  | 
| 
 3  | 
 yonghuming  | 
 varchar  | 
 200  | 
 0  | 
 N  | 
 N  | 
 用户名  | 
| 
 4  | 
 mima  | 
 varchar  | 
 200  | 
 0  | 
 N  | 
 N  | 
 密码  | 
| 
 5  | 
 xingming  | 
 varchar  | 
 200  | 
 0  | 
 N  | 
 N  | 
 姓名  | 
| 
 6  | 
 xingbie  | 
 varchar  | 
 200  | 
 0  | 
 Y  | 
 N  | 
 性别  | 
| 
 7  | 
 touxiang  | 
 varchar  | 
 200  | 
 0  | 
 Y  | 
 N  | 
 头像  | 
| 
 8  | 
 lianxidianhua  | 
 varchar  | 
 200  | 
 0  | 
 Y  | 
 N  | 
 联系电话  | 
| 
 9  | 
 money  | 
 float  | 
 13  | 
 0  | 
 Y  | 
 N  | 
 余额  | 
六、关键代码:
/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private TokenService tokenService;
	/**
	 * 登录
	 */
	@IgnoreAuth
//	@PostMapping(value = "/login")
	@RequestMapping(value = "/login", method ={RequestMethod.GET,RequestMethod.POST} )
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
		if(user==null || !user.getPassword().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
		return R.ok().put("token", token);
	}
	
	/**
	 * 注册
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }
	/**
	 * 退出
	 */
	@GetMapping(value = "logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
    	user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }
	/**
     * 列表
     */
    @RequestMapping("/list")
    public R list( UserEntity user){
       	EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
      	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
        return R.ok().put("data", userService.selectListView(ew));
    }
    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }
    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
        userService.updateById(user);//全部更新
        return R.ok();
    }
    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx.xsd
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop.xsd">
    <!-- 配置数据源 -->
    <bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
        <property name="url" value="${jdbc_url}"/>
        <property name="username" value="${jdbc_username}"/>
        <property name="password" value="${jdbc_password}"/>
        <!-- 初始化连接大小 -->
        <property name="initialSize" value="0"/>
        <!-- 连接池最大使用连接数量 -->
        <property name="maxActive" value="20"/>
        <!-- 连接池最大空闲 -->
        <property name="maxIdle" value="20"/>
        <!-- 连接池最小空闲 -->
        <property name="minIdle" value="0"/>
        <!-- 获取连接最大等待时间 -->
        <property name="maxWait" value="60000"/>
        <property name="validationQuery" value="${validationQuery}"/>
        <property name="testOnBorrow" value="false"/>
        <property name="testOnReturn" value="false"/>
        <property name="testWhileIdle" value="true"/>
        <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
        <property name="timeBetweenEvictionRunsMillis" value="60000"/>
        <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
        <property name="minEvictableIdleTimeMillis" value="25200000"/>
        <!-- 打开removeAbandoned功能 -->
        <property name="removeAbandoned" value="true"/>
        <!-- 1800秒,也就是30分钟 -->
        <property name="removeAbandonedTimeout" value="1800"/>
        <!-- 关闭abanded连接时输出错误日志 -->
        <property name="logAbandoned" value="true"/>
        <!-- 监控数据库 -->
        <property name="filters" value="mergeStat"/>
    </bean>
    <!-- Spring整合Mybatis,更多查看文档:http://mp.baomidou.com -->
    <bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <!-- 自动扫描Mapping.xml文件 -->
        <property name="mapperLocations" value="classpath:mapper/*.xml"/>
        <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/>
        <property name="typeAliasesPackage" value="com..model.*"/>
        <property name="typeEnumsPackage" value="com.model.enums"/>
        <property name="plugins">
            <array>
                <!-- 分页插件配置 -->
                <bean id="paginationInterceptor" class="com.baomidou.mybatisplus.plugins.PaginationInterceptor">
                </bean>
            </array>
        </property>
	    <!-- 全局配置注入 -->
	    <property name="globalConfig" ref="globalConfig" />
	</bean>
	<bean id="globalConfig" class="com.baomidou.mybatisplus.entity.GlobalConfiguration">
	    <!--
			AUTO->`0`("数据库ID自增")
		 	INPUT->`1`(用户输入ID")
			ID_WORKER->`2`("全局唯一ID")
			UUID->`3`("全局唯一ID")
		-->
	    <property name="idType" value="2" />
		<!--
			MYSQL->`mysql`
			ORACLE->`oracle`
			DB2->`db2`
			H2->`h2`
			HSQL->`hsql`
			SQLITE->`sqlite`
			POSTGRE->`postgresql`
			SQLSERVER2005->`sqlserver2005`
			SQLSERVER->`sqlserver`
		-->
		<!-- Oracle需要添加该项 -->
	    <!-- <property name="dbType" value="oracle" /> -->
	    <!-- 全局表为下划线命名设置 true -->
	    <!-- <property name="dbColumnUnderline" value="true" /> -->
        <property name="metaObjectHandler">
            <bean class="com.config.MyMetaObjectHandler" />
        </property>
	</bean>
    <!-- MyBatis 动态扫描  -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.dao"/>
    </bean>
    <!-- 配置事务管理 -->
    <bean name="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>
    <!-- 事务管理 属性 -->
    <tx:advice id="transactionAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="add*" propagation="REQUIRED"/>
            <tx:method name="append*" propagation="REQUIRED"/>
            <tx:method name="save*" propagation="REQUIRED"/>
            <tx:method name="update*" propagation="REQUIRED"/>
            <tx:method name="modify*" propagation="REQUIRED"/>
            <tx:method name="edit*" propagation="REQUIRED"/>
            <tx:method name="insert*" propagation="REQUIRED"/>
            <tx:method name="delete*" propagation="REQUIRED"/>
            <tx:method name="remove*" propagation="REQUIRED"/>
            <tx:method name="repair" propagation="REQUIRED"/>
            <tx:method name="get*" propagation="REQUIRED" read-only="true"/>
            <tx:method name="find*" propagation="REQUIRED" read-only="true"/>
            <tx:method name="load*" propagation="REQUIRED" read-only="true"/>
            <tx:method name="search*" propagation="REQUIRED" read-only="true"/>
            <tx:method name="datagrid*" propagation="REQUIRED" read-only="true"/>
            <tx:method name="*" propagation="REQUIRED"/>
        </tx:attributes>
    </tx:advice>
    <!-- 配置切面 -->
    <aop:config>
        <aop:pointcut id="transactionPointcut" expression="execution(* com.service..*.*(..))"/>
        <aop:advisor pointcut-ref="transactionPointcut" advice-ref="transactionAdvice"/>
    </aop:config>
</beans>
七、论文报告:


八、源码获取:
大家点赞、收藏、关注、评论啦 、查看👇🏻👇🏻👇🏻微信公众号获取联系方式👇🏻👇🏻👇🏻
打卡 文章 更新 200/ 365天
精彩专栏推荐订阅:在下方专栏👇🏻👇🏻👇🏻👇🏻
Java项目精品实战案例《100套》
web前端期末大作业网页实战《100套》
