需提前安装JDK1.8+、MySQL8.0、Maven3.6+;打开https://start.spring.io/生成基础项目,Group设为com.member,Artifact设为member-demo,勾选依赖:Spring Web、MyBatis Framework、MySQL Driver、Lombok,点击Generate下载解压。
先创建数据库,再执行以下建表SQL(复制后可直接在MySQL中运行):
``` CREATE DATABASE IF NOT EXISTS member DEFAULT CHARACTER SET utf8mb4; USE member; -- 会员基础表 CREATE TABLE `user_member` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '会员ID', `nickname` varchar(50) NOT NULL COMMENT '会员昵称', `level` int(11) NOT NULL DEFAULT 1 COMMENT '会员等级', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 权益配置表 CREATE TABLE `member_benefit` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '权益ID', `name` varchar(50) NOT NULL COMMENT '权益名称', `type` int(11) NOT NULL COMMENT '权益类型:1=折扣,2=积分', `content` varchar(255) NOT NULL COMMENT '权益内容:如9折=0.9,10积分', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 会员-权益关联表 CREATE TABLE `member_benefit_relation` ( `member_id` bigint(20) NOT NULL COMMENT '会员ID', `benefit_id` bigint(20) NOT NULL COMMENT '权益ID', `status` int(11) NOT NULL DEFAULT 0 COMMENT '激活状态:0=未激活,1=已激活', PRIMARY KEY (`member_id`,`benefit_id`), KEY `idx_benefit` (`benefit_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ```打开项目src/main/resources/application.yml,替换为以下内容,务必修改spring.datasource.url、username、password为你自己的MySQL环境信息:
``` server: port: 8080 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/member?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8 username: root password: your_mysql_password mybatis-plus: configuration: map-underscore-to-camel-case: true log-impl: org.apache.ibatis.logging.stdout.StdOutImpl ```在com.member.demo下新建entity文件夹,创建3个实体类,对应三张表:
Member.java(会员实体):
``` package com.member.demo.entity; import lombok.Data; @Data public class Member { private Long id; private String nickname; private Integer level; } ```Benefit.java(权益实体):
``` package com.member.demo.entity; import lombok.Data; @Data public class Benefit { private Long id; private String name; private Integer type; private String content; } ```MemberRelation.java(关联关系实体):
``` package com.member.demo.entity; import lombok.Data; @Data public class MemberRelation { private Long memberId; private Long benefitId; private Integer status; } ```新建mapper文件夹,创建3个Mapper接口,继承MyBatis-Plus基础方法:

BenefitMapper.java:
``` package com.member.demo.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.member.demo.entity.Benefit; import org.apache.ibatis.annotations.Mapper; @Mapper public interface BenefitMapper extends BaseMapperMemberMapper.java:
``` package com.member.demo.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.member.demo.entity.Member; import org.apache.ibatis.annotations.Mapper; @Mapper public interface MemberMapper extends BaseMapperMemberRelationMapper.java:
``` package com.member.demo.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.member.demo.entity.MemberRelation; import org.apache.ibatis.annotations.Mapper; @Mapper public interface MemberRelationMapper extends BaseMapper新建controller文件夹,创建BenefitController.java,实现核心功能:查询会员可用权益、激活权益:
``` package com.member.demo.controller; import com.member.demo.entity.Benefit; import com.member.demo.entity.MemberRelation; import com.member.demo.mapper.BenefitMapper; import com.member.demo.mapper.MemberRelationMapper; import org.springframework.web.bind.annotation.; import javax.annotation.Resource; import java.util.List; import java.util.stream.Collectors; @RestController @RequestMapping("/api/member") public class BenefitController { @Resource private BenefitMapper benefitMapper; @Resource private MemberRelationMapper relationMapper; // 查询会员未激活的可用权益 @GetMapping("/benefit") public List在项目根目录执行`mvn spring-boot:run`启动服务;先插入测试数据到MySQL:
``` INSERT INTO user_member(nickname,level) VALUES('张三',1); INSERT INTO member_benefit(name,type,content) VALUES('9折券',1,'0.9'),('100积分',2,'100'); ```用Postman测试接口:
1. 查询可用权益:GET http://localhost:8080/api/member/benefit?memberId=1,返回未激活的权益列表;
2. 激活权益:POST http://localhost:8080/api/member/benefit/active?memberId=1&benefitId=1,返回“激活成功”后再次调用查询接口,该权益会消失。
新增权益类型直接修改member_benefit表即可;如需会员等级限制权益,可在查询接口增加member等级校验逻辑,无需改动核心表结构。
易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。
Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图