最近好多学弟学妹私聊我:“学长,2026年用SSM做毕设会不会太老了?老师会不会觉得过时?” 其实真不用担心!SSM(Spring+SpringMVC+MyBatis)看着是经典框架,但企业里维护老项目、做中小型业务系统时还在用,而且学透它能帮你理解JavaWeb核心逻辑,对后续学Spring Boot这些新框架也特有用。
为啥毕设选SSM?这几个理由够实在
有人觉得“新框架才高大上”,但毕设选SSM有实实在在的好处:
- 练透JavaWeb基本功:Spring的IOC(对象交给容器管,不用自己new)、AOP(日志、事务这些功能和业务解耦),SpringMVC的请求咋从前端到后端,MyBatis咋把SQL和代码分开……这些是JavaWeb的“内功”,学懂了再看Spring Boot,就知道“哦,原来自动配置是把SSM的xml配置简化了”。
- 企业需求还在:银行、传统工厂的内部系统,很多还靠SSM撑着。毕设用SSM,答辩时你能把“三层架构(表现层、业务层、持久层)咋分工”讲清楚,老师反而觉得你基础扎实,不是只会追新框架。
- 配置繁琐反是优势:SSM得自己写xml、配依赖,看似麻烦,但逼着你搞懂“框架到底帮我们做了啥”。要是直接学Spring Boot,很多配置自动搞了,反而容易一知半解,遇到问题抓瞎。
先搞定数据库:核心表咋设计?
不管做啥系统(学生管理、图书借阅、电商订单),数据库表是地基。举个“校园二手交易系统”的例子,核心表思路看这:
- 用户表(user):得存账号、密码、电话、头像这些。密码别明文存!要么加密(比如MD5、SHA256),要么后期学Shiro/Spring Security做权限。
- 商品表(goods):得关联用户(外键user_id,谁发布的商品),还有商品名、价格、描述、状态(是否已卖出)。
- 订单表(order):得关联用户和商品(两个外键,谁买了啥),还有订单时间、交易状态。
大家注意:外键要考虑业务逻辑!比如商品被买走后,订单表得记下来,商品表的“是否卖出”状态也要更新——这些逻辑后面写Service的时候得处理。另外,MySQL建表别瞎填varchar长度,比如手机号固定11位,密码加密后存的话,varchar(64)足够(MD5是32位,SHA256更长,留冗余)。
核心功能咋实现?以“登录”为例拆解
毕设里“登录”是最基础、最能体现SSM流程的功能。咱拆解下代码逻辑(伪代码+关键步骤):
1. Controller层:接收请求,调Service
前端页面(JSP或HTML)发'/user/login'请求,Controller负责接参数、调Service、返回页面:
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired // 让Spring自动注入Service
private UserService userService;
@RequestMapping("/login")
public String login(String username, String password, Model model) {
User user = userService.login(username, password); // 调Service查数据库
if(user != null) {
return "success"; // 登录成功,跳成功页面
} else {
model.addAttribute("msg", "账号密码错啦");
return "login"; // 失败,返回登录页并提示
}
}
}
2. Service层:处理业务逻辑(接口+实现类)
Service负责“业务逻辑”,比如登录时要不要加密验证、要不要记录日志:
// 接口:定义要做啥
public interface UserService {
User login(String username, String password);
}
// 实现类:具体咋做
@Service // 告诉Spring这是Service组件
public class UserServiceImpl implements UserService {
@Autowired // 注入Mapper,和数据库交互
private UserMapper userMapper;
@Override
public User login(String username, String password) {
// 这里可以加密码加密(比如数据库存的是MD5,前端传的密码也加密后再对比)
return userMapper.findUserByUsernameAndPassword(username, password);
}
}
3. Mapper层:和数据库交互(接口+XML)
MyBatis靠Mapper接口+XML写SQL,不用自己写JDBC代码:
// Mapper接口:定义SQL操作
public interface UserMapper {
User findUserByUsernameAndPassword(@Param("username") String username, @Param("password") String password);
}
<!-- UserMapper.xml:写具体SQL -->
<select id="findUserByUsernameAndPassword" resultType="com.xxx.pojo.User">
select * from user
where username = #{username}
and password = #{password}
</select>
这里有个大坑!
- SpringMVC接收参数时,前端表单的'name'属性得和Controller方法参数名完全一致,否则接收不到值。
- MyBatis的XML里,用'#{ }'而不是'${ }'!'#{ }'是预编译,能防SQL注入;'${ }'是字符串拼接,容易被攻击。
- 要是做“注册时同时插用户和积分表”这类操作,得在Spring里配事务(给Service方法加'@Transactional'注解),否则数据可能不一致。
避坑+答辩:过来人的血泪经验
最后给你们掏心窝的建议,毕设少踩坑、答辩不慌:
1. 配置文件别乱改!
SSM的xml配置(比如spring的'applicationContext.xml'、springMVC的'springmvc.xml'、MyBatis的'SqlMapConfig.xml')里,包扫描、事务、Mapper扫描这些节点极易配错。启动报错先看控制台,大概率是“包扫描范围不对”(比如Controller没扫到,导致请求404),或者“Mapper接口和XML没对应上”(namespace写错、SQL的id和接口方法名不一致)。
2. 功能别贪多,把核心逻辑跑通
毕设重点在后端逻辑,别花大量时间搞花里胡哨的前端。界面用Bootstrap或LayUI简单美化下就行,把“增删改查、登录权限、业务逻辑”走通更重要。比如做电商系统,先把“商品发布-下单-支付”核心流程跑通,再考虑评论、推荐这些附加功能。
3. 答辩时,老师爱问这些…
提前准备好这几个问题的回答,答辩稳一半:
- “SSM三层架构每层负责啥?”
答:Controller接收前端请求、返回响应;Service处理业务逻辑(比如事务、复杂计算);Mapper和数据库交互(执行SQL)。 - “MyBatis和JDBC比,优势是啥?”
答:预编译防SQL注入、SQL和代码分离(改SQL不用动Java代码)、结果集自动映射(不用手动把ResultSet转成对象)。 - “现在都用Spring Boot了,你这SSM有啥意义?”
答:SSM是理解Spring Boot的基础!Boot把SSM的xml配置自动化了,学SSM能搞懂框架底层逻辑;而且企业里大量老项目还得靠SSM维护,学它能应对实际开发需求。
总之,2026年用SSM做毕设完全不过时,反而能帮你把JavaWeb基础打牢。别慌,配置出错就查控制台,业务逻辑想不清就画流程图,实在卡壳就找学长学姐唠唠思路。毕设不是搞科研,把流程跑通、逻辑讲明白,分数不会差~
