使用mybatis框架实现数据持久化时,出现Improper inline parameter map format. Should be: #{propName,attr1=val1,attr2=val2}错误,
数据库表主键ID类型为int,Auto increment类型,对应的sqlMap中设置为:
<insert id="insert" >
<![CDATA[
INSERT INTO TableName (
ID ,
...
) VALUES (
#{id, jdbcType=INT UNSIGNED} ,
...
)
]]>
</insert>
其中设置的值jdbcType=INT UNSIGNED,导致上述错误,需要设置为:
<insert id="insert" >
<![CDATA[
INSERT INTO TableName (
ID ,
...
) VALUES (
#{id, jdbcType=BIGINT} ,
...
)
]]>
</insert>
上述问题解决。
在网上查得的解决方案是:
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Improper inline parameter map format. Should be: #{propName,attr1=val1,attr2=val2}
<insert id="insertXXOrder" parameterType="yyOrder">
insert into XX_ORDER(
。。。,
MX_NOTIFY_URL
)
values(
。。。,
#{mxNotifyUrl,jdbcType = VARCHAR} )
分析:
mybatis规范写法:“#{propName,attr1=val1,attr2=val2}”,“=”号左右两边均无空格
因此:
“#{mxNotifyUrl,jdbcType = VARCHAR}”正确写法:“#{mxNotifyUrl,jdbcType=VARCHAR}”
(完)