1. 程式人生 > >Mybaits使用selectKey後提示無效字元的處理方法

Mybaits使用selectKey後提示無效字元的處理方法

<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中,從而報錯。