关于mapper.xml的oracle语句 5C


insert into MT_ROOM_INFO (ID, ROOM_NAME, ROOM_NO,
ROOM_LEVEL, LON, LAT, ROOM_ADDR,
ROOM_MAINTENCE_ID, ROOM_MAINTENCE_NAME, STATUS
)
values (#{id,jdbcType=VARCHAR}, #{roomName,jdbcType=VARCHAR}, #{roomNo,jdbcType=VARCHAR},
#{roomLevel,jdbcType=VARCHAR}, #{lon,jdbcType=FLOAT}, #{lat,jdbcType=FLOAT}, #{roomAddr,jdbcType=VARCHAR},
#{roomMaintenceId,jdbcType=VARCHAR}, (select MAINTENCE_NAME from MT_MAINTENANCE_INFO where ID=${roomMaintenceId}), #{status,jdbcType=VARCHAR}
)

好心人看看这个哪儿错了,需要怎么修改

4个回答

报什么错啊?可以把values换成你要录入的数据的值,放到数据库中执行一下,看看是哪里报错。

首先${roomMaintenceId}这个不是mybatis的语法吧?应该是#{roomMaintenceId}这样吧;(select MAINTENCE_NAME from MT_MAINTENANCE_INFO where ID=${roomMaintenceId})这个是否确定只返回一条记录?具体要看报错信息

路过,楼上的回答纠正一下问题。 # $ 两种都是mybatis的语法

zhongsan123
才沐木 回复wsbg54: 搞反了,应该尽量避免使用$,尽量使用#。
2 年多之前 回复
wsbg54
wsbg54 回复才沐木: 是的,所以,尽量使用$
2 年多之前 回复
qq954692441
qq954692441 路过,,
2 年多之前 回复
zhongsan123
才沐木 是可以,但是很可能会导致sql注入漏洞
2 年多之前 回复

首先要明白这里是拼装SQL的,在赋值的时候不能使用select MAINTENCE_NAME from MT_MAINTENANCE_INFO where ID=${roomMaintenceId}), 可以在代码中拼装后再拼装
insert与select 不能这么用

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问