日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

There is no getter for property named 'XXX' in class 'aaa.bbb.ccc'(终极骚操作的解决方法)...

發布時間:2025/3/15 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 There is no getter for property named 'XXX' in class 'aaa.bbb.ccc'(终极骚操作的解决方法)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  使用SpringBoot整合Mybatis時,遇到了像標題的異常,博主當時是用Bean類對象作為參數的,所以百度了很久都沒有建設性答案。貼一下報錯的xxxDao文件和xxxMapper.xml文件:

package com.cjs.dao;import com.cjs.bean.User; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.*;@Mapper public interface UserDao {public int insertUser(User user);}

?

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC"-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.cjs.dao.UserDao"><insert id="insertUser" parameterType="user">insert into tb_users(username, loginname, password, phone, address)values (#{user.username},#{user.loginname}, #{user.password}, #{user.phone}, #{user.address})</insert> </mapper>

?

?

?

  嗯~按照常規SSM的操作,上面的代碼不會出異常的,但實際上就報了nested exception is org.apache.ibatis.reflection.ReflectionException的異常,完整的標題語句是There is no getter for property named 'user' in class 'com.cjs.bean.User',他的意思是在User對象里沒有user的getter方法。什么???(黑人問號.jpg)user是一個對象,怎么會搞個getter方法進去?!于是博主又寫了一個簡單的方法,參數是一個String類型,按照優良編碼習慣,在Dao方法的參數上加上@Param("username"),很正常,完美插入一條數據,于是大膽在原來的方法加上@Param("user"),運行,喲~竟然插入成功了,這是一個神奇的操作。

修改后的Dao文件代碼:

package com.cjs.dao;import com.cjs.bean.User; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.*;@Mapper public interface UserDao {public int insertUser(@Param("user") User user); }

  其實就是一個簡單的操作,現在來分析一下,加上@Param("user")是為了在XXXMapper.xml文件能夠準確找到該參數,parameterType="user",這里的user是類型,表示傳進來的參數類型是user,其實是User對象,這里設定了User的別名是user;#{user.username}這里的user是參數名,問題就出在這里了(敲黑板),在SpringBoot整合Mybatis里面,如果不設置@Param("user")它會把#{user.username}里的user當作你傳進去的參數的一個屬性值,即變成了user.user.username,那么User對象里面自然沒有user屬性了,相反,我表明了#{user.username}里的user就是我傳進去的參數,即標明@Param("user")。這種解決方法可以推廣到參數為非bean對象的情況。

  按照剛才的分析,如果使用#{user.username},就要加@Param("user")來標記user參數,換句話說,如果不加,就把#{user.username}里的user當作是參數里的一個屬性(注意上面有下劃線的一句話),那么這里出現第二種修改方式將#{user.username}換成#{username}

package com.cjs.dao;import com.cjs.bean.User; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.*;@Mapper public interface UserDao {public int insertUser(User user);} <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC"-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.cjs.dao.UserDao"><insert id="insertUser" parameterType="user">insert into tb_users(username, loginname, password, phone, address)values (#{username},#{loginname}, #{password}, #{phone}, #{address})</insert> </mapper>

?

轉載于:https://www.cnblogs.com/SysoCjs/p/9880223.html

總結

以上是生活随笔為你收集整理的There is no getter for property named 'XXX' in class 'aaa.bbb.ccc'(终极骚操作的解决方法)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。