本篇详细介绍下每个文件的作用
一、配置文件 application.yml
关键的参数是最后2个:
mapper-locations: --存放mybatis对应的sql语句的XML文件的位置,这也是为什么上篇文章里说的此文件必须存放在resources目录下。
type-aliases-package: 数据表对应的实体类文件的存放路径。
PS:简单讲下yml格式的配置文件与properties格式的不同
1.在properties 文件中是以“.”进行分割,在yml 中使用“:”进行分割
2.yml 的数据格式和json 的格式很像,都是Key-Value 结构的。并且是通过“:”赋值
3.在yml 中缩进一定不能使用TAB 件,只能用空格,否则会报错。
4.每个Key的冒号后面一定要加一个空格
二、UserMapper.xml
mybatis对应的sql语句的XML文件,位置必须在resources目录下。
三、Dao层UserMapper.java 接口文件
与SpringMVC不一样地方就是要新增一个注解@Mapper。
四、Service 服务层
包含接口文件及实现,和以前在SpringMVC下没什么区别。
注意:第16行与21行发生异常时,不同的回滚处理,在某些特殊功能逻辑下可能需要用到不回滚异常的处理。
五、Controller层
由于本案例使用的是测试单元,没有使用Controller层,就不多说了。
六、事务的统一处理 TransactionAdviceConfig.java
在这里我使用的是AOP方式,具体的代码如下图
简单介绍下几个关键的地方
第19行:对符合这个规则的所有服务层都进行事务管理,在本案例中即com.example.demo.service下所有以Service结尾的fu服务层进行事务管理。
第26-27行:设置事务的传播机制为 PROPAGATION_REQUIRED。
第29-31行:设置事务的传播机制为 PROPAGATION_REQUIRED,且为只读事务。这里与以前在SpringMVC通过XML方式整合mybatis是有点不一样,在XML里时为<tx:method name="load*" propagation="SUPPORTS" read-only="true"/>,转播机制为SUPPORTS,是可以为只读事务的,而在这里将传播机制设为 PROPAGATION_SUPPORTS,只读事务不起作用,原因我没有去查,如果有哪位同学知道,请告诉我。
第33-42行:设置服务层每个方法名的不同事务机制,这样做有几点好处,
1)规范系统的命名
2)通过方法名称即可知道此方法主要是干什么用的
3)提高效率
PS: 在SpringMVC下,可以通过XML设置出现异常不回滚的方法吗前缀,但是在Springboot下我没有找到统一设置的地方,只能通过在方法上加注解的方式实现,如上面第四步所示,如果哪位同学知道,也请告诉我。
七、测试文件ApplicationTests.java