1. 短剧推荐系统架构设计
短剧推荐系统采用经典的SSM(Spring+SpringMVC+MyBatis)三层架构,这种架构选择在中小型Web应用中具有显著优势。Spring框架的IoC容器管理着整个系统的Bean生命周期,通过AOP实现了事务管理、日志记录等横切关注点的模块化。SpringMVC作为表现层框架,采用前端控制器模式处理HTTP请求,而MyBatis则作为持久层框架,通过XML配置或注解方式实现ORM映射。
为什么选择SSM而不是SpringBoot?在需要深度定制数据库交互和精确控制事务边界时,SSM的组合提供了更细粒度的控制能力。特别是当系统需要对接已有数据库规范时,MyBatis的直接SQL编写能力显得尤为重要。
系统采用Maven进行依赖管理,pom.xml中需要特别注意的依赖包括:
xml复制<!-- Spring核心依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.18.RELEASE</version>
</dependency>
<!-- MyBatis-Spring整合包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.2</version>
</dependency>
<!-- MySQL驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
<scope>runtime</scope>
</dependency>
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 数据库设计与实现
MySQL 5.7的选择基于其对JSON数据类型的原生支持,这对存储短剧的元数据特别有利。核心表结构设计如下:
短剧基础信息表(drama)
sql复制CREATE TABLE `drama` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(100) NOT NULL COMMENT '短剧名称',
`cover_url` varchar(255) DEFAULT NULL COMMENT '封面图URL',
`category_id` int(11) DEFAULT NULL COMMENT '分类ID',
`tags` json DEFAULT NULL COMMENT '标签数组',
`release_date` date DEFAULT NULL COMMENT '上线日期',
`heat_value` int(11) DEFAULT '0' COMMENT '热度值',
PRIMARY KEY (`id`),
KEY `idx_category` (`category_id`),
KEY `idx_heat` (`heat_value`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
用户行为记录表(user_behavior)
sql复制CREATE TABLE `user_behavior` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`drama_id` int(11) NOT NULL,
`behavior_type` tinyint(4) NOT NULL COMMENT '1-浏览 2-收藏 3-分享 4-完整观看',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`duration` int(11) DEFAULT NULL COMMENT '观看时长(秒)',
PRIMARY KEY (`id`),
KEY `idx_user_drama` (`user_id`,`drama_id`),
KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
实际部署时发现,user_behavior表在用户量达到10万级别时会出现查询性能问题。解决方案是添加了复合索引(idx_user_drama)并进行了按月分表处
