Mybatis操作數據時出現:java.sql.SQLSyntaxErrorException: Unknown column 'XXX' in 'field list'


這個錯誤比較重要,而且很常見,故單獨進行說明:

 Mybatis出現:Unknown column 'xxx' in 'field list'

先來看一下程序的內部:

dao.addUser("ll111", "ll11");// 添加用戶l main函數測試
//添加用戶 成功1 失敗0
    public int addUser(String userPhoneNumber, String userPassword) throws IOException {
        //用戶的 手機號,姓名(默認手機號),密碼
        User user = new User(userPhoneNumber, userPhoneNumber, userPassword);
        int result = mapper.addUser(user);

        System.out.println(result);

        sqlSession.commit();
        return result;
    }
<!--    添加用戶-->
    <insert id="addUser" parameterType="main.pojo.User">
        INSERT INTO user(user_phone_number, user_name, user_password)
        VALUES (${userPhoneNumber}, ${userName}, '${userPassword}');
    </insert>

 

 

 錯誤原因:本身來說,三個字段都屬於String類型,但是在使用Mybatis時由於用法的錯誤,致使出現上圖的結果,即本來手機號和名字想作為字符串插入,但是xml里卻當成了字段名。如果是整數還好,String可以解析整數並且轉化為字符串,但是像字母和數字混合,編譯器就無法識別。

本質上來說,是Mybatis使用上的錯誤,不熟悉,理解其實現機理所致。同樣的問題,也會出現在其他語句中,所以在實現時注意數據傳輸的類型!!!

解決方法:也如上圖xml代碼所示,password的變量使用單引號括住,即可表示為字符串,所以實際上,應該這樣寫:

<!--    添加用戶-->
    <insert id="addUser" parameterType="main.pojo.User">
        INSERT INTO user(user_phone_number, user_name, user_password)
        VALUES ('${userPhoneNumber}', '${userName}', '${userPassword}');
    </insert>

 或者進行參數化表示:

<insert id="addUser" parameterType="main.pojo.User">
        INSERT INTO user(user_phone_number, user_name, user_password)
        VALUES (#{userPhoneNumber}, #{userName}, #{userPassword});
    </insert>

這種情況下,VALUES內容為 VALUES(?,?,?) ,數據傳入時自動進行數據類型識別並填充,則沒有以上報錯。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM