我正在为我的项目使用Mybatis
3.2
,Orace 12c
。我使用代码生成器生成insert()
方法。在<insert>
标记中,它具有模式名称;例如:
insert into CPORTAL.CARD_USER_MASTER
现在,架构是动态的,所以我把参数改为架构:
insert into ${schema}.CARD_USER_MASTER
参数schema
在mapper.java
中定义为
insert(CardUserMaster record, @Param("schema") String schema)
但是,如果没有该模式,插入有效,但是当有模式时,会发生错误:
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'carduserSeqno' not found. Available parameters are [0, schema, param1, param2]
在其他类中,我在insert
方法上设置了类似的模式参数,它可以工作。不知道这堂课发生了什么。
任何意见将不胜感激。
感谢。
答案 0 :(得分:1)
将其更改为
insert(@Param("entity") CardUserMaster record, @Param("schema") String schema)
并在SQL中使用params作为entity.carduserSeqno
。
看起来无法识别0参数是POJO。如果没有@Param("schema")
,它会直接使用pojo字段作为params btu而添加schema
param则不能。