mybatis自定义sql insert报错:selectKey不起作用、以及报错找不到getter方法

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

在mybatis的xml配置文件中,如果用自定义insert语句,需要注意如下两点:

1)如果要使用selectKey提前自动生成字段ID,就在mapper interface方法定义中,如果使用@param。就需要在使用insert语句中,通过@param指定的名称来方位bean的属性;如果不使用@param就可以省去名称。

下面是使用@param的写法(含mapper interface和xml):

在这里插入图片描述在这里插入图片描述
下面是不使用@param的写法(含mapper interface和xml):

在这里插入图片描述

就这个例子来说,不使用@param会更简洁。

2)使用selectKey获取多列数据时,千万不要在keyProperty中的列之间加空格(一般处于编码习惯,都会自然而然的加一个空格)。如下图:

在这里插入图片描述
否则,会报错如下:
ERRORServlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.ExecutorException: No setter found for the keyProperty ’ timestamp’ in com.huaguang.observ.model.ch.SpanSnapshot.] with root cause
org.apache.ibatis.executor.ExecutorException: No setter found for the keyProperty ’ timestamp’ in com.huaguang.observ.model.ch.SpanSnapshot.
at org.apache.ibatis.executor.keygen.SelectKeyGenerator.setValue(SelectKeyGenerator.java:117)
在这里插入图片描述
正确的写法,去掉空格,如下图:
在这里插入图片描述
然后代码就能够正常运行了。

Mybatis非自增主键使用useGeneratedKeys参数失效 阅读详情

相关推荐

MybatisselectKey>失效问题踩坑记录

selectKey 会将 SELECT LAST_INSERT_ID()的结果放入到传入的实体类的主键里面, keyProperty对应的实体类中的主键的属性名,这里是 CheckGroup 中的id,因为它跟数据库的主键对应 order AFTER 表示 SELECT LAST_INSERT_ID() 在insert执行之后执行,多用与自增主键, BEFORE 表示 SELECTLAST_INSERT_ID() 在insert执行之前执行,这样的话就拿不到主键了,这种适合那种主键不是自增的类型 res.

m0_46205920的博客 3406

mybatis——insertselectKey

在mapper.xml文件中  <insert id="insertUser" parameterType="User">     <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">         select count(*) from user  

苏云南雁的博客 1744

Mybatis SelectKey赋值未生效

SelectKey未成功赋值

wt_better的博客 1555

Mybaits使用selectKey后提示无效字符的处理方法

<insert id="insert" parameterType="com.hismax.apptPlatform.entity.table.Userinfo"> <selectKey order="BEFORE" resultType="long" keyProperty="userId"> SELECT seq_userinfo.nex

dl348的博客 1747

springboot整合mybatis出现问题

1.调用以下sql报错:There is no getter for property named ‘*’ in ‘class java.lang.String’ 以上图片为改正后,原错误为 <if test="orgCode != null"> orgCode为传进来的参数名称,发生错误原因见收藏 2.一个insert标签执行多条insert语句 allowMultiQueries...

小流 312

Mybatis异常:不到getter

异常名 no getter for username in class com.xxx.User 原因1 Javabean 中没有对应字段的get方法 原因2 数据库字段名和属性名不一致 原因3 sql语句出错 Mybatis出错大部分语音是映射文件的问题

m0_51105681的博客 1710

selectKey标签遇到的问题

insert中实体类做参数,使用selectKey 时遇到的一些坑 传递参数时用了@Param注解,导致插入后返回的自增主键为null,如下: 然后将@Param注解直接去掉使用下面的方式 自增主键成功映射到了实体类对象中 ...

WDC的博客 1797

MyBatis insert语句selectKey标签和返回主键

一、简要概述 keyProperty:对应的domain 对象中需要被赋值的属性,一般是主键 resultType:表示的是返回主键的类型 order:如果设置为 BEFORE,那么它会首先选择主键,设置 keyProperty 然后执行插入语句。如果设置为 AFTER,那么先执行插入语句,然后是 selectKey 元素 注意:SelectKey需要注意order属性,像MySQL一类支持自动增长类型的数据库中,order需要设置为after才会取到正确的值,像Oracle这样取序列的情况,需要设置为b

xiaoleilei666的博客 1751

org.apache.ibatis.executor.ExecutorException

org.apache.ibatis.executor.ExecutorException: A query was run and no Result Maps were found for the

m0_61931988的博客 1374

mybatis学习 --- insertselectKey(插入后返回数据库自动生成的id)

前言 insert 插入标签并不难 只是为了注意一下,insert还有一些细节 目的 如果你的数据库支持自动生成主键的字段(比如 MySQLSQL Server),那么你插入时没有设置id的值,返回是如何获取插成功工完整的一行信息呢? 如果只判断成功,并把之前的值拿来使用,有缺少一个id的值,那么你还必须查询该值 方法一:使用selectKey 标签属性 看一下官网是怎么说的 官网说可以用它来生成主键 返回自动生成的ID LAST_INSERT_ID() 函数在mysql中是返回最后一个插入

赵成默 2159

@SelectKey在springboot整合Mybatis时总是返回1

问题: 我们想在插入一条数据后同时能够返回这条数据在表中的id,Mybatis提供了@SelectKey注解。 t_user 为数据表,主键自增 SelectKey的四个属性: keyColumn:插入数据以后,要返回的内容在数据表t_user中对应的字段名称 keyProperty:指定返回的id映射到bean中的哪个属性(这里是user中的id), before=false:表示这个sele...

qq_38904904的博客 1176

Mybatis不到参数错误:There is no getter for property named 'categoryId' in 'class java.lang.Integer'。...

Mybatis不到参数错误:There is no getter for property named 'categoryId' in 'class java.lang.Integer'。错误List<Post> listPage(Integer categoryId);在测试时报错:There is no getter for property named 'categoryI...

weixin_30740295的博客 400

Mybatis报错:There is no getter for property named 'xxxx' in 'class xxxx之解决办法

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named ‘createdData’ in 'class com.nowcoder.model.News’ ...

weixin_42870497的博客 1万+

mybatis学习之路----insert主键返回 selectKey使用

点滴记载,点滴进步,愿自己更上一层楼。

小菜鸟的专栏 5万+

mybatis selectKey 赋值未生效,为什么?

使用Mybatis Insert User表,使用selectKey获取LAST_INSERT_ID() ,赋值给user的id属性,发现id属性值未被set进去,user.getId() 获取的结果等于0,会话的LAST_INSERT_ID() 已经到远远超过0了,返回0明显是不对的。属性值获取到的是0,要么是SELECT LAST_INSERT_ID() sql未执行,使用了id long类型的默认值0,要么是执行了但获取到的值是0,或者是Mybatis set对象id属性值的时候没set进去。

1209

MyBaits异常解决:There is no getter for property named ‘ID‘ in ‘class ***‘

没有到ID的getter方法,后面发现是因为在我们的mybatis.xml中是这样配置的 用了#{}的方式,但是我们的student类里面是大写的ID 因此执行sql的时候便会报错不到getter方法,我们把这改为小写的id,或者把Insert语句里面改为大写的ID即可解决! ...

a1272159758的博客 8976

Mybatis单个参数报错: There is no getter for property named

总结:mybatis传单个String类型,可以不用@param注解,前提是xml中不含有条件表达式(when,if..标签中没有引用到该参数)1.首先看一下方法,是一个简单的查询,参数只有一个String,印象中dao层方法只有一个string的时候,3.如果mybatis的if标签去掉,就可以正常运行,如果要使用条件表达式那就要在dao层加param标签。这里注意一下,错误的地方是用红框圈起来的哪里,也是就条件表达式,并非where语句。2.但是报错了,提示该字段没有get方法

z69183787的专栏 704

mysqlMybatis报错:There is no getter for property named ‘xxx‘ in ‘class xxx 的解决办法

Mybatis报错:There is no getter for property named 'xxx' in 'class xxx 的解决办法

beiback的博客 5361

使用Mybatis查询插入数据(insertSelect)无作用

客户端操作数据库的时候,(增删改查)无作用,可能是mybatis的错误,仔细查看这些方面,可能会有发现。

咩嘢的博客 4192
上一篇: DDD 实战 (12- 终篇):DDD 下微服务的“分分合合”及一个倡议
下一篇: Deepseek 让中国软件像哪吒一样渡劫
深清秋
博客等级 码龄25年 88粉丝 14原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值