mybatis插值,数据提交事务回滚数据库值为空
mybatis插值,数据提交事务回滚数据库值为空
通过sql日志查看sql为:INSERT INTO `quanxian`.`user` ( phone, email, password, times, name, age, address, sex, hobby, work ) VALUES (phone, email, password, times, name, age, address, sex, hobby, work );
1.0
初步怀疑是入参类型不对,于是检查类型:<insert id="addUser" parameterType="com.ry.project.vo.User">
入参类型没问题
2.0
继续查看Mapper接口:int addUser(User user);
接口没问题
3.0
于是控制台打印入参看看是否为空:{"address":"长江以北暂不繁华之处","age":20,"email":"727843252@qq.com","hobby":"电鱼","id":91,"name":"汤姆猫","password":"abc53814efg","phone":"18856519837","sex":"女","times":"2019-11-05 13:51:17","work":"电工"}
入参也没问题
4.0
回头继续检查mapper.xml文件
<trim prefixOverrides=",">
<if test="phone !=null">, `phone`=#{phone} </if>
<if test="email !=null">, `email`=#{email} </if>
<if test="password!=null">, `password`=#{password}</if>
<if test="times!=null">,`times`=#{times} </if>
<if test="name!=null">,`name`=#{name} </if>
<if test="age!=null">,`age`=#{age} </if>
<if test="address!=null">,`address`=#{address} </if>
<if test="sex!=null">,`sex`=#{sex}</if>
<if test="hobby!=null">,`hobby`=#{hobby} </if>
<if test="work!=null">, `work`=#{work}</if>
</trim>
发现入参为实体时添加插值没有指定jdbc类型,
于是添加类型
<if test="phone != null">#{phone,jdbcType=VARCHAR},</if>
<if test="email != null">#{email,jdbcType=VARCHAR},</if>
<if test="password != null">#{password,jdbcType=VARCHAR},</if>
<if test="times != null">#{times,jdbcType=VARCHAR},</if>
<if test="name != null">#{name,jdbcType=VARCHAR},</if>
<if test="age != null">#{age,jdbcType=INTEGER},</if>
<if test="address != null">#{address,jdbcType=VARCHAR},</if>
<if test="sex != null">#{sex,jdbcType=VARCHAR},</if>
<if test="hobby != null">#{hobby,jdbcType=VARCHAR},</if>
<if test="work != null">#{work,jdbcType=VARCHAR},</if>
至此问解决
mybatis插值,数据提交事务回滚数据库值为空的更多相关文章
- DataPipeline的增量数据支持回滚功能
DataPipeline的增量数据支持回滚功能 第一步:数据任务有增量数据时,回滚按钮激活,允许用户使用该功能进行数据回滚. 第二步:点击回滚按钮,允许用户选择回滚时间或者回滚位置进行数据回滚.选择按 ...
- paip.导入数据英文音标到数据库mysql为空的问题之道解决原理
paip.导入数据英文音标到数据库mysql为空的问题之道解决原理 #---原因:mysql 导入工具的bug #---解决:使用双引号不个音标括起来. 作者 老哇的爪子 Attilax 艾龙, E ...
- EF Core利用Transaction对数据进行回滚保护
What? 首先,说一下什么是EF Core中的Transaction Transaction允许以原子方式处理多个数据库操作,如果事务已提交,则所有操作都应用于数据库,如果事务回滚,则没有任何操作应 ...
- ORACLE提交事务回滚
execute执行后 可以回滚 commit提交后 闪回恢复原来的数据 其实Oracle提交数据是分两步操作的,第一步execute执行,第二步commit提交.对应的PL\SQL也是要先点execu ...
- mybatis插入数据并获取主键值
有时候我们的主键是自增的,但是我们想要在插入一条数据以后获取这条数据的主键值,而我们知道,mybatis执行完插入操作以后返回的是生效的记录数.那如何才能获取这个主键值呢. 1.在配置文件mapper ...
- 采购订单写入sap失败后,抛出自定义异常,回滚数据库
@Transactional(rollbackFor = Exception.class) @Override public Map<String,Object> getOderInfo( ...
- SpringBoot集成tk mybatis插入数据,回显主键为null
实体信息如下 @Data public class ApiCertificate{ @Id @GeneratedValue(generator = "JDBC") private ...
- mybatis 插入数据并返回主键值
<insert id="insert" parameterType="com.pojo.TSubject" useGeneratedKeys=" ...
- 使用mybatis更新数据时 时间字段的值自动更新
1.debug打印出来执行的sql语句发现并没有修改时间的字段,最后发现是设计表时勾选了根据当前时间戳更新..... 去掉该字段的根据当前时间戳更新语句: alter table tableName ...
随机推荐
- Python开发篇——构建虚拟Python开发环境(Conda+Poetry)
前言 之前虽略有提及Python,但是没有实际地写点料.惭愧,惭愧,所以这次先起个头,讲讲如何构建虚拟Python开发环境.相信之前看过我博客的人可能会想:博主不会又要聊聊Docker吧?放心,不会. ...
- SpringBoot中时间格式化的5种方法!
在我们日常工作中,时间格式化是一件经常遇到的事儿,所以本文我们就来盘点一下 Spring Boot 中时间格式化的几种方法. 时间问题演示 为了方便演示,我写了一个简单 Spring Boot 项 ...
- ui自动化,不显示UI界面运行
from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options ...
- python读取csv,Excel,Txt,Yaml 文件
1.数据 1.Csv login.csv文件: byhy,88888888 ReadCsv.py文件 import csv #导入csv包 class ReadCsv(): def csv(self) ...
- 关于 .NET 与 JAVA 在 JIT 编译上的一些差异
最近因为公司的一些原因,我也开始学习一些 JAVA 的知识.虽然我一直是以 .NET 语言为主的程序员,但是我并不排斥任何其它语言.在此并不讨论 JAVA .NET 的好坏,仅仅是对 .NET 跟 J ...
- 01_什么是BS结构,什么是CS结构?
C/S和B/S都是互联网中常见的网络结构模型. 一.什么是C/S模型? C是英文单词"Client"的首字母,即客户端的意思,C/S就是"Client/Server&qu ...
- [noip6]模板
平衡树好题啊 现在暂时还不知道用普通线段树该咋做.... 刚刚做完 二逼平衡树,感觉自己的 \(splay\) 水平有了很大很大的长进,然鹅.... 这题又给我当头一棒.... 然后就一下午出去了但总 ...
- 第九篇 -- 可以上网,连WIFI弹出网页
最近在调试WIFI模块时,程序路径没走对,导致运行了其他的函数,修改了配置文件,之后每次连接WIFI时都会弹出网页,并且明明可以上网,下面电脑符号那儿还会出现黄标,甚是心烦.上网搜索一番,终是解决了. ...
- 第十八篇 -- GPIO学习
先学习一下GPIO,网上各种找资料,拼凑,所以就不一一贴网址了. 一.GPIO GPIO的英文全称General-Purpose Input /Output Ports,中文意思是通用I/O端口 一个 ...
- 利用C++11可变模板,封装调用dll导出函数
起因 开发中经常需要动态调用一些导出函数,试着利用C++11特性封装一下 尝试 常规使用 typedef int WINAPI (*TMessageBoxA)(HWND hWnd,LPCSTR lpT ...