Mybaits使用selectKey後提示無效字元的處理方法
阿新 • • 發佈:2018-12-30
<insert id="insert" parameterType="com.hismax.apptPlatform.entity.table.Userinfo"> <selectKey order="BEFORE" resultType="long" keyProperty="userId"> SELECT seq_userinfo.nextval as userId from dual; </selectKey> insert into USERINFO (USER_ID, USER_NAME, ID_TYPE, ID_NO, PASSWORD, TYPE, LINK_COUNT, CREATE_USER ) values (#{userId}, #{userName}, #{idType}, #{idNo}, #{password}, #{type}, #{linkCount}, #{createUser} ) </insert>
使用上述配置設定insert語句,一直報一下錯誤:
{
"timestamp": "2018-05-21 10:32:41",
"status": 500,
"error": "Internal Server Error",
"message": "Error selecting key or setting result to parameter object. Cause: java.sql.SQLSyntaxErrorException: ORA-00911: 無效字元\n\n; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: ORA-00911: 無效字元\n",
"path": "/appt/user/register"
}
查了下序列,已經用了20多個序列了,就是說mybaits可以成功獲取序列,但是不能賦值進insert語句。搞了好久之後,搞不定,跟同事的程式碼對比了一下,發現有一個地方不同:
SELECT seq_userinfo.nextval as userId from dual;
語句最後有個 ; 號!!!
去掉;,跑通了。
使用selectKey後資料庫提示無效的字元。原因:selectKey裡面的SQL語句不能新增";",如果添加了分號,就無法賦值到insert中,從而報錯。