SpringBoot整合mybatis-plus: SqlSession was not registered for synchronization because synchronization
springboot整合mybatis-plus
文章共643字 · 阅读需要大约3分钟
一键AI生成摘要,助你高效阅读
问答
·
/*
首先查到了在创建BaseExecutor类的时候transaction的connection异常,
定位到SqlSessionTemplate类的 public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {}方法找到SqlSessionTemplate.this.sqlSessionFactory对象里面envoriment的datasouce值没有username、password和url
最终发现在创建DruidDataSource的时候没有注入值,
*/
// 修改(也可使用其他的方式注入):
@Bean
public DruidDataSource druidDataSource(){
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setUrl("jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8");
druidDataSource.setUsername("root");
druidDataSource.setPassword("273672");
return druidDataSource;
}
发现问题的根本原因了,为application.yml中的配置写错了:
spring:
datasource:
druid:
# 数据源基本配置
url: jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8
username: 用户名
password: 密码
driver-class-name: com.mysql.cj.jdbc.Driver
误写成了:
sspring:
datasource:
druid:
# 数据源基本配置
url: jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8
username: 用户名
password: 密码
driver-class-name: com.mysql.cj.jdbc.Driver
改正之后的方式(直接使用下面的方式注入对象即可):
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DruidDataSource druidDataSource(){
DruidDataSource druidDataSource = new DruidDataSource();
// druidDataSource.setUrl("jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8");
// druidDataSource.setUsername("root");
// druidDataSource.setPassword("273672");
return druidDataSource;
}
更多推荐
已为社区贡献1条内容
所有评论(0)