TSF 异常、事务问题复现¶
表现为:
- 不抛异常,代码能够接着走下去
- 事务控制不生效
复现¶
额外引入的依赖¶
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus-boot-starter.version}</version>
</dependency>
<dependency>
<groupId>cn.hsa.powersi</groupId>
<artifactId>hsa-powersi-base</artifactId>
<version>${hsa-powersi-base.version}</version>
</dependency>
修改 sqlSessionFactory
的 bean 为 mybatis plus 提供¶
修改 biz 包下的 db.xml
文件:
原始的:
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
修改后:
<bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
...
<bean class="cn.hsa.powersi.mybatisplus.plugins.BatchUpdateInterceptor">
<description>SQL批量更新拦截器</description>
</bean>
<bean id="hsafGlobalConfig" class="com.baomidou.mybatisplus.core.config.GlobalConfig">
<description>SQL全局配置</description>
<property name="dbConfig" ref="hsafDbConfig"/>
<property name="sqlInjector" ref="hsafLogicSqlInjector"/>
</bean>
<bean id="hsafDbConfig"
class="com.baomidou.mybatisplus.core.config.GlobalConfig.DbConfig">
<description>SQL全局数据库配置</description>
<property name="idType" value="ASSIGN_UUID"/>
<property name="logicDeleteValue" value="0"/>
<property name="logicNotDeleteValue" value="1"/>
</bean>
<bean id="hsafLogicSqlInjector"
class="cn.hsa.powersi.mybatisplus.injector.LogicSqlInjector">
<description>SQL注入器</description>
</bean>
导入 nes 出问题的代码(test 包)¶
swagger 调用 cn/hsa/mbs/nes/test
接口,json 如下:
[
{
"id": 1,
"status": 1,
"username": "string"
},
{
"id": 2,
"status": 0,
"username": "AAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBlksakjwqhekjahdskjwqsadBBBBBBBBBBCCCCCCCCC"
},
{
"id": 3,
"status": 0,
"username": "string"
}
]
未抛出异常:
控制台无异常信息,bo 层后续代码被执行(红框标记):
数据被插入了(未被事务控制):
期望的正常情况¶
以开源环境为例,期望 TSF 能和开源环境运行效果一致。
能够返回异常:
能够输出异常信息:
事务能够回滚(未插入新数据):