使用T selectByPrimaryKey(Object key)时,Creating a new SqlSession SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2213b08a] was not registered for synchronization because synchronization is not active JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@636b6be4] will not be managed by Spring ==> Preparing: SELECT id,session_key,nickname,role,avatar_url,gender,country,province,city,phone_number,create_time,update_time FROM user WHERE id = ? AND session_key = ? AND nickname = ? AND role = ? AND avatar_url = ? AND gender = ? AND country = ? AND province = ? AND city = ? AND phone_number = ? AND create_time = ? AND update_time = ? ==> Parameters: oFBP54qpN074mehPS6CAlMoFzMhA(String), null, null, null, null, null, null, null, null, null, null, null
时间: 2023-12-10 10:37:47 浏览: 78
mybaits非配置原因,导致SqlSession was not registered for synchronization异常
5星 · 资源好评率100%
这个错误提示是因为在使用 MyBatis 时,没有开启 Spring 的事务管理。如果要使用 Spring 的事务管理,需要在配置文件中加入事务管理器和事务通知等相关配置。
你可以在 Spring 的配置文件中添加以下内容来开启事务管理:
```
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
```
然后,在你的 DAO 层接口中使用 `@Transactional` 注解来标记需要进行事务管理的方法:
```
@Transactional
public User selectByPrimaryKey(Object key) {
// MyBatis 的查询操作
}
```
这样就可以解决该错误,使得 MyBatis 与 Spring 的事务管理能够正常配合使用。
阅读全文