1. 项目概述
"经方药食两用服务平台"是一个典型的医疗健康类信息管理系统,采用SpringBoot+Vue前后端分离架构开发。这个平台主要解决传统中医药材管理中信息孤岛、数据分散的问题,将药食同源的中药材信息、方剂配伍、适用症状等数据进行系统化整合。
作为毕业设计选题,它具备三个显著优势:一是技术栈主流,SpringBoot和Vue都是企业级开发的热门选择;二是业务场景明确,医疗健康领域需求持续增长;三是复杂度适中,既包含完整CRUD操作,又涉及前后端交互等核心技术点。
2. 技术架构解析
2.1 后端技术选型
SpringBoot 2.7.x作为后端框架,主要基于以下考虑:
- 自动配置特性大幅减少XML配置
- 内嵌Tomcat简化部署流程
- Starter依赖机制规范技术组件集成
- 与MyBatis的天然兼容性
数据库选用MySQL 8.0,关键配置参数:
yaml复制spring:
datasource:
url: jdbc:mysql://localhost:3306/herb_db?useSSL=false&serverTimezone=UTC
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
2.2 前端技术方案
Vue 3.x + Element Plus组合提供:
- 响应式数据绑定
- 组件化开发模式
- 丰富的UI组件库
- Axios HTTP通信
典型API调用示例:
javascript复制// 药材列表查询
const fetchHerbList = async (params) => {
return await axios.get('/api/herbs', { params })
}
3. 核心功能实现
3.1 药材信息管理模块
采用RBAC权限模型设计,主要包含:
- 药材基础信息维护(CRUD)
- 多条件复合查询
- Excel导入导出
- 图片上传预览
关键实体关系:
java复制@Entity
public class Herb {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name; // 药材名称
private String category; // 分类
@Lob
private String description; // 详细描述
// 其他字段及getter/setter
}
3.2 智能推荐子系统
基于规则引擎实现配伍推荐:
- 症状关键词提取(IK分词)
- 体质特征匹配算法
- 药材属性关联度计算
- 禁忌症过滤机制
推荐逻辑伪代码:
code复制function recommend(symptoms, constitution):
herbs = queryBySymptoms(symptoms)
filtered = filterByConstitution(herbs, constitution)
sorted = sortByEfficacy(filtered)
return limitResults(sorted, 5)
4. 开发环境搭建
4.1 后端工程初始化
- 使用Spring Initializr生成项目骨架
- 添加必要依赖:
xml复制<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
- 配置MyBatis映射文件路径
- 启用事务管理注解
4.2 前端项目配置
Vue CLI创建项目后需特别注意:
- 配置跨域代理
- 设置Element Plus按需导入
- 添加路由守卫
- 集成ECharts数据可视化
vue.config.js关键配置:
javascript复制devServer: {
proxy: {
'/api': {
target: 'http://localhost:8080',
changeOrigin: true
}
}
}
5. 典型问题解决方案
5.1 前后端数据格式冲突
常见问题:Date类型序列化格式不一致
解决方案:
java复制@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
5.2 MyBatis动态SQL构建
复杂查询场景示例:
xml复制<select id="selectByCondition" resultMap="BaseResultMap">
SELECT * FROM herb
<where>
<if test="name != null">
AND name LIKE CONCAT('%',#{name},'%')
</if>
<if test="category != null">
AND category = #{category}
</if>
</where>
ORDER BY id DESC
</select>
5.3 文件上传大小限制
SpringBoot默认1MB限制,需调整:
yaml复制spring:
servlet:
multipart:
max-file-size: 10MB
max-request-size: 20MB
6. 项目扩展建议
- 增加微信小程序端接入
- 引入Redis缓存热门查询
- 添加药材价格波动监控
- 集成第三方支付接口
- 开发数据统计分析看板
性能优化方向:
- 数据库索引优化
- 接口响应缓存
- 静态资源CDN加速
- SQL语句性能分析
7. 学习资源推荐
- SpringBoot官方文档(必读)
- Vue 3组合式API手册
- MyBatis动态SQL指南
- Element Plus组件示例库
- 阿里巴巴Java开发规范
调试工具建议:
- Postman(接口测试)
- Vue DevTools(前端调试)
- Arthas(Java诊断)
- MyBatis Log Plugin(SQL打印)
