Mybatis执行update失败的解决_java

来源:脚本之家  责任编辑:小易  

Mybatis执行update失败

今天在进行分布式重构项目的时候碰到一个问题,在执行sql的时候只有update不能成功,其他语句都可以正常执行,报错如下: 版本:org.mybatis:mybatis:3.4.5

接口

@UpdateProvider(type = ManagerProvider.class, method = "updateManager")
int updateManager(Manager manager) throws Exception;

报错信息

Loading XML bean definitions from class path resource [org/springframework/jdbc/support/sql-error-codes.xml]
SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase, Hana]
org.springframework.jdbc.UncategorizedSQLException: Error getting generated key or setting result to parameter object. Cause: java.sql.SQLException: 不允许的操作;

uncategorized SQLException for SQL []; SQL state [99999]; error code [17090]; 不允许的操作; nested exception is java.sql.SQLException: 不允许的操作

原因

由于mybatis在执行insert和update的时候都默认生成key,然后注入,所以在执行update的时候会报错。

解决办法

在接口上增加注解 @Options(useGeneratedKeys = false),不让mybatis自动注入key,问题解决。

@UpdateProvider(type = ManagerProvider.class, method = "updateManager")
@Options() //    @Options(useGeneratedKeys = false)
int updateManager(Manager manager) throws Exception;

最后说明一点,版本:org.mybatis:mybatis:3.4.4这个版本没有此类问题。

Mybatis插入(更新)失败 却不报错

问题描述

mybatis进行数据插入或更新操作,方法成功执行,数据库中却不存在新数据,原本代码如下:

    @Test
    public void test7() throws IOException {
        SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
        SqlSession sqlSession = sqlSessionFactory.openSession();
        EmployeeMapperDynamicSql mapper = sqlSession.getMapper(EmployeeMapperDynamicSql.class);
        Employee employee = new Employee(null,"gfdhg","456dfgngh@qq.com","female",null);
        mapper.addEmps(Collections.singletonList(employee));
        sqlSession.close();
    }

解决方案

在插入或更新语句后,增添commit,代码如下:

    @Test
    public void test7() throws IOException {
        SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
        SqlSession sqlSession = sqlSessionFactory.openSession();
        EmployeeMapperDynamicSql mapper = sqlSession.getMapper(EmployeeMapperDynamicSql.class);
        Employee employee = new Employee(null,"gfdhg","456dfgngh@qq.com","female",null);
        mapper.addEmps(Collections.singletonList(employee));
        /*添加commit*/
        sqlSession.commit();
        sqlSession.close();
    }

以上为个人经验,希望能给大家一个参考,也希望大家多多支持真格学网。

您可能感兴趣的文章:mybatis update set 多个字段实例mybatis 实现多条update同时执行mybatis update更新字段的使用操作解决mybatis批量更新(update foreach)失败的问题MyBatis注解方式之@Update/@Delete使用详解解决Mybatis返回update后影响的行数问题

  • 本文相关:
  • java实现钉钉机器人消息推送的示例代码
  • 详解java arraylist类
  • java crm系统用户登录功能实现代码实例
  • spring boot 枚举使用的坑整理
  • java 判断一个数组中的数值是否连续相邻的方法
  • java io流之节点流与字符流的相关知识总结
  • java10下编译lombok注解代码分享
  • springboot在生产快速禁用swagger2的方法步骤
  • 简单的java读取文件示例分享
  • 关于springmvc-servlet中的配置小知识详解
  • mybatis 动态sql update 如何去掉多余的逗号
  • mybatis update/delete如何获取返回影响条数,在线坐等,直接...
  • mybatis update返回值怎么配置?
  • Mybatis的Update不能返回影响输数吗
  • spring mybatis 防止同时update
  • mybatis batch update 一次处理多少数据
  • mybatis sql标签<update>怎么获取返回值
  • mybatis如何update图片 目前insert做出来了 请问如何更新图片...
  • mybatis 批量 update 报错,请教大神
  • mybatis enableupdatebyexample=true是什么意思
  • mybatis sqlserver @update 问题
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全c#教程vbvb.netc 语言java编程delphijavaandroidiosswiftscala易语言汇编语言r语言其它相关首页mybatis update set 多个字段实例mybatis 实现多条update同时执行mybatis update更新字段的使用操作解决mybatis批量更新(update foreach)失败的问题mybatis注解方式之@update/@delete使用详解解决mybatis返回update后影响的行数问题java实现钉钉机器人消息推送的示例代码详解java arraylist类java crm系统用户登录功能实现代码实例spring boot 枚举使用的坑整理java 判断一个数组中的数值是否连续相邻的方法java io流之节点流与字符流的相关知识总结java10下编译lombok注解代码分享springboot在生产快速禁用swagger2的方法步骤简单的java读取文件示例分享关于springmvc-servlet中的配置小知识详解intellij idea 2020最新激活码(亲java使double保留两位小数的多方intellij idea 2020.2.3永久破解java8 十大新特性详解idea2020.2.2激活码与intellij iidea 2020版本最新破解教程可激活2020.2 intellij idea激活与ideajava.net.socketexception: connjava写入文件的几种方法分享java 十六进制与字符串的转换java并发访问重复请求过滤问题spring boot admin管理监控数据的方法springboot项目平滑关闭及自动化关闭脚本rxjava功能操作符的使用方法详解java进行文件读写操作详解java获取网页数据步骤方法详解java 获取一组数据中的最大值和最小值springmvc结合ajaxfileupload实现文件无刷eclipse远程debug的步骤与注意事项java 使用httpurlconnection发送数据简单
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved