Spring整合Mybatis框架-为业务层添加声明式事务控制 要么都成功要么都失败
其实上面一个例子,是看不出事务控制的,接下来,我们模拟一下真实的业务场景,一次添加一批用户,我们现在想要的结果是:要么都添加成功,要么都添加失败
只需要在上一个小demo的基础上进行稍微的改动就可以
UserServiceImpl.java 循环去调用添加用的方法
测试方法:
1 @Test
2 public void testAdd(){
3 logger.debug("testAdd !===================");
4
5 try {
6 ApplicationContext ctx=new
7 ClassPathXmlApplicationContext("applicationContext.xml");
8 UserService userService=(UserService)ctx.getBean("userService");
9 User user = new User();
10 user.setUserCode("test001");
11 user.setUserName("测试用户001");
12 user.setUserPassword("1234567");
13 Date birthday = new SimpleDateFormat("yyyy-MM-dd").parse("1984-12-12");
14 user.setBirthday(birthday);
15 user.setCreationDate(new Date());
16 user.setAddress("地址测试");
17 user.setGender(1);
18 user.setPhone("13688783697");
19 user.setUserRole(1);
20 user.setCreatedBy(1);
21 user.setCreationDate(new Date());
22
23 List<User> userList=new ArrayList<User>();
24 userList.add(user);
25 userList.add(user);
26 userService.addNewUser(userList);
27
28
29
30 } catch (Exception e) {
31 // TODO: handle exception
32 e.printStackTrace();
33
34 }finally{
35
36 }
37
38 }
运行结果:
可见,添加成功了。
现在我们模拟一个异常,我先将添加成功的这两条数据删除
UserServiceImpl.java
运行结果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY