mybatis oracle update返回值,mybatis+oracle执行update操作不能正确返回更新条数

我司对于业务重要性的要求我们使用了oracle+sharding jdbc +mybatis

切到oracle 后发现执行update 不能返回条数,返回了-1,如果同时更新两个分表返回-2,实际上数据库已经更新成功。

由于我们封装了mybatis插件,为排除插件问题,最后我使用官方demo中sharding-jdbc-spring-boot-data-mybatis-example测试复现了这个问题。

使用mysql+mybatis是没有问题的。

使用oracle错误和配置

日志

updateOrderById] <== Updates: -2

[DEBUG] 2018-01-29 16:23:11,734 --main-- [org.mybatis.spring.SqlSessionUtils] Creating a new SqlSession

[DEBUG] 2018-01-29 16:23:11,739 --main-- [org.mybatis.spring.SqlSessionUtils] SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7bef452c] was not registered for synchronization because synchronization is not active

[DEBUG] 2018-01-29 16:23:11,747 --main-- [org.springframework.jdbc.datasource.DataSourceUtils] Fetching JDBC Connection from DataSource

[DEBUG] 2018-01-29 16:23:11,748 --main-- [org.mybatis.spring.transaction.SpringManagedTransaction] JDBC Connection [io.shardingjdbc.core.jdbc.core.connection.ShardingConnection@426e505c] will not be managed by Spring

[DEBUG] 2018-01-29 16:23:11,752 --main-- [io.shardingjdbc.example.spring.boot.mybatis.repository.OrderRepository.updateOrderById] ==> Preparing: update t_order set status = 'jkl' WHERE user_id = ?

[DEBUG] 2018-01-29 16:23:11,772 --main-- [io.shardingjdbc.example.spring.boot.mybatis.repository.OrderRepository.updateOrderById] ==> Parameters: 51(Long)

[INFO ] 2018-01-29 16:23:11,865 --main-- [Sharding-JDBC-SQL] Logic SQL: update t_order set status = 

你可能感兴趣的:(mybatis,oracle,update返回值)