• mybatis 添加事物后 无法获取自增主键的问题


    检查代码后没发现mapper文件设置自增主键返回的问题,后来检查到,关闭事务后,执行完是可以获取返回的主键的,

    我在mysql的客户端里关闭自动提交,发现使用select last_insert_id() 也是可以正确获取最新主键的, 我意识到可能是mybatis配置的问题。

    问同事后发现了问题,将 defaultExecutorType 从 BATCH 改为 SIMPLE 即可。

     1 <?xml version="1.0" encoding="UTF-8" ?>     
     2 <!DOCTYPE configuration     
     3     PUBLIC "-//mybatis.org//DTD Config 3.0//EN"     
     4     "http://mybatis.org/dtd/mybatis-3-config.dtd">
     5 
     6 <configuration>
     7 
     8     <settings>
     9         <!-- 全局映射器启用缓存 -->
    10         <setting name="cacheEnabled" value="true" />
    11         <!-- 查询时,关闭关联对象即时加载以提高性能 -->
    12         <setting name="lazyLoadingEnabled" value="true" />
    13         <!-- 设置关联对象加载的形态,此处为按需加载字段(加载字段由SQL指 定),不会加载关联表的所有字段,以提高性能 -->
    14         <setting name="aggressiveLazyLoading" value="false" />
    15         <!-- 对于未知的SQL查询,允许返回不同的结果集以达到通用的效果 -->
    16         <setting name="multipleResultSetsEnabled" value="true" />
    17         <!-- 允许使用列标签代替列名 -->
    18         <setting name="useColumnLabel" value="true" />
    19         <!-- 允许使用自定义的主键值(比如由程序生成的UUID 32位编码作为键值),数据表的PK生成策略将被覆盖 -->
    20         <setting name="useGeneratedKeys" value="true" />
    21         <!-- 给予被嵌套的resultMap以字段-属性的映射支持 -->
    22         <setting name="autoMappingBehavior" value="FULL" />
    23         <!-- 对于批量更新操作缓存SQL以提高性能 -->
    24         <setting name="defaultExecutorType" value="SIMPLE" />
    25         <!-- 数据库超过60秒仍未响应则超时 -->
    26         <setting name="defaultStatementTimeout" value="60" />
    27         <!-- 设置但JDBC类型为空时,某些驱动程序 要指定值,default:OTHER -->
    28         <setting name="jdbcTypeForNull" value="NULL" />
    29     </settings>
    30 
    31 
    32     <!-- 全局别名设置,在映射文件中只需写别名,而不必写出整个类路径 -->
    33     <typeAliases>
    34     </typeAliases>
    35     <!-- <plugins> <plugin interceptor="com.c.common.ext.mybatis.PaginationInterceptor"> 
    36         <property name="dialectName" value="oracle"/> </plugin> </plugins> -->
    37     <!-- 非注解的sql映射文件配置,如果使用mybatis注解,该mapper无需配置,但是如果mybatis注解中包含@resultMap注解,则mapper必须配置,给resultMap注解使用 -->
    38     <mappers>
    39     </mappers>
    40 
    41 </configuration>
    View Code
    <!-- 对于批量更新操作缓存SQL以提高性能 -->
    <setting name="defaultExecutorType" value="SIMPLE" />
  • 相关阅读:
    jmeter_04_常用取样器
    jmeter_03_鉴权
    jmeter_02_目录文档说明
    jmeter_01_常用快捷键
    Web Api 与 Andriod 接口对接开发经验
    Eclipse自动生成作者、日期注释等功能设置
    c#解析XML到DATASET及dataset转为xml文件函数
    Jquery 仿 android Toast效果
    正在运行的android程序,按home键之后退回到桌面,在次点击程序图标避免再次重新启动程序解决办法
    异步网络加载开源框架AsyncHttpClient使用
  • 原文地址:https://www.cnblogs.com/xunux/p/4637533.html
Copyright © 2020-2023  润新知