Mybatis操作數(shù)據(jù)時(shí)出現(xiàn):java.sql.SQLSyntaxErrorException:?Unknown?column?'XXX'?in?'field?list'的問(wèn)題解決
這個(gè)錯(cuò)誤比較重要,而且很常見(jiàn),故單獨(dú)進(jìn)行說(shuō)明:
Mybatis出現(xiàn):Unknown column 'xxx' in 'field list'
先來(lái)看一下程序的內(nèi)部:
dao.addUser("ll111", "ll11");// 添加用戶(hù)l main函數(shù)測(cè)試
//添加用戶(hù) 成功1 失敗0 public int addUser(String userPhoneNumber, String userPassword) throws IOException { //用戶(hù)的 手機(jī)號(hào),姓名(默認(rèn)手機(jī)號(hào)),密碼 User user = new User(userPhoneNumber, userPhoneNumber, userPassword); int result = mapper.addUser(user); System.out.println(result); sqlSession.commit(); return result; }
<!-- 添加用戶(hù)--> <insert id="addUser" parameterType="main.pojo.User"> INSERT INTO user(user_phone_number, user_name, user_password) VALUES (${userPhoneNumber}, ${userName}, '${userPassword}'); </insert>
錯(cuò)誤原因:本身來(lái)說(shuō),三個(gè)字段都屬于String類(lèi)型,但是在使用Mybatis時(shí)由于用法的錯(cuò)誤,致使出現(xiàn)上圖的結(jié)果,即本來(lái)手機(jī)號(hào)和名字想作為字符串插入,但是xml里卻當(dāng)成了字段名。如果是整數(shù)還好,String可以解析整數(shù)并且轉(zhuǎn)化為字符串,但是像字母和數(shù)字混合,編譯器就無(wú)法識(shí)別。
本質(zhì)上來(lái)說(shuō),是Mybatis使用上的錯(cuò)誤,不熟悉,理解其實(shí)現(xiàn)機(jī)理所致。同樣的問(wèn)題,也會(huì)出現(xiàn)在其他語(yǔ)句中,所以在實(shí)現(xiàn)時(shí)注意數(shù)據(jù)傳輸?shù)念?lèi)型?。?!
解決方法:也如上圖xml代碼所示,password的變量使用單引號(hào)括住,即可表示為字符串,所以實(shí)際上,應(yīng)該這樣寫(xiě):
<!-- 添加用戶(hù)--> <insert id="addUser" parameterType="main.pojo.User"> INSERT INTO user(user_phone_number, user_name, user_password) VALUES ('${userPhoneNumber}', '${userName}', '${userPassword}'); </insert>
或者進(jìn)行參數(shù)化表示:
<insert id="addUser" parameterType="main.pojo.User"> INSERT INTO user(user_phone_number, user_name, user_password) VALUES (#{userPhoneNumber}, #{userName}, #{userPassword}); </insert>
這種情況下,VALUES內(nèi)容為VALUES(?,?,?) ,數(shù)據(jù)傳入時(shí)自動(dòng)進(jìn)行數(shù)據(jù)類(lèi)型識(shí)別并填充,則沒(méi)有以上報(bào)錯(cuò)。
到此這篇關(guān)于Mybatis操作數(shù)據(jù)時(shí)出現(xiàn):java.sql.SQLSyntaxErrorException: Unknown column 'XXX' in 'field list'的文章就介紹到這了,更多相關(guān)Mybatis出現(xiàn):Unknown column 'xxx' in 'field list'內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- MybatisPlus出現(xiàn)Error attempting to get column ‘xxx字段‘ from result set異常解決
- MyBatis異常java.sql.SQLSyntaxErrorException的問(wèn)題解決
- MybatisPlusException:Failed?to?process,Error?SQL異常報(bào)錯(cuò)的解決辦法
- Mybatis配置錯(cuò)誤:java.lang.ExceptionInInitializerError
- MybatisPlus BaseMapper 中的方法全部 Invalid bound statement (not found Error處理)
- 解決Mybatis出現(xiàn)報(bào)錯(cuò)Error querying database.Cause: java.lang.IndexOutOfBoundsException: Index 9 out of
相關(guān)文章
spring的jdbctemplate的crud的基類(lèi)dao
本文主要介紹了使用spring的jdbctemplate進(jìn)行增刪改查的基類(lèi)Dao的簡(jiǎn)單寫(xiě)法,需要的朋友可以參考下2014-02-02Java基于Tcp協(xié)議的socket編程實(shí)例
這篇文章主要介紹了Java基于Tcp協(xié)議的socket編程實(shí)例,較為詳細(xì)的分析了socket編程客戶(hù)端與服務(wù)器端的具體實(shí)現(xiàn)步驟與使用技巧,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2014-12-12Eureka源碼閱讀解析Server服務(wù)端啟動(dòng)流程實(shí)例
這篇文章主要為大家介紹了Eureka源碼閱讀解析Server服務(wù)端啟動(dòng)流程實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10Java中的HashSet詳解和使用示例_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
HashSet 是一個(gè)沒(méi)有重復(fù)元素的集合。接下來(lái)通過(guò)實(shí)例代碼給大家介紹java中的hashset相關(guān)知識(shí),感興趣的朋友一起看看吧2017-05-05SpringMVC攔截器實(shí)現(xiàn)監(jiān)聽(tīng)session是否過(guò)期詳解
這篇文章主要介紹了SpringMVC攔截器實(shí)現(xiàn)監(jiān)聽(tīng)session是否過(guò)期詳解,還是比較不錯(cuò)的,這里分享給大家,供需要的朋友參考。2017-11-11