mybatis plus SqlSession问题

最近使用springboot2.2.4、mybatis-plus-boot-starter3.1.1做一个连接mysql数据库的web项目遇到一个SqlSession创建问题,当我直接使用继承mybatis plus的ServiceImpl的方式来定义某张表的service类,例如:

其中DataStoreTableServiceImpl为自定义的Service实现类,ServiceImpl为mybatis plus提供的父类:

@Service
@Slf4j
public class DataStoreTableServiceImpl extends ServiceImpl<DataStoreTableMapper, DataStoreTable> implements DataStoreTableService {

}

然后我在对应的DataStoreController类中调用ServiceImpl提供的查询方法,例如:

    @GetMapping("/tables")
    @ApiOperation("列表查询表定义")
    public ResultResponse<List<DataStoreTable>> listTable(@ApiParam(value = "分组名称", allowableValues = "政务数据,经营数据,风险数据") @RequestParam(required = false) String group) {
        QueryWrapper<DataStoreTable> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("is_delete", 0);

        if (!StringUtils.isEmpty(group)) {
            queryWrapper.eq("group_name", group);
        }
        return new ResultResponse<List<DataStoreTable>().buildSuccessResult(dataStoreTableService.list(queryWrapper));
    }

控制台会输出以下日志,接口查询数据库成功:

Creating a new SqlSession
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@42c09d4b] was not registered for synchronization because synchronization is not active
JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@941382d] will not be managed by Spring

我有几个疑问:
1、出现以上日志是否表示我未正确配置mybatis的sqlsession?每次都创建新sqlsession是否会影响系统性能?
2、当我调用ServiceImpl类中使用@Transcational注解的saverOrUpdate、batchInsert等方法时不会出现以上日志而是显示:

JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@941382d] managed by Spring

这个是否表示第1点提到的问题仅仅是因为调用没使用@Transcational注解的正常现象?

阅读 6.1k
2 个回答

是的是的是的是的

以前看到过这段日志,当时没有仔细分析过,也来讨论讨论。日志只是说sqlSession 并没有同步,并不能说明sqlSession 配置错误吧,查询是不需要同步的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题