java - spring boot 集成mybatis 注解版查詢
問題描述
-spring boot 集成 mybatis 使用注解實(shí)現(xiàn) spring boot 和 mybatis已經(jīng)正常集成,在使用查詢時(shí)使用的是注解,(項(xiàng)目沒有任何XML文件)
@Mapper@Table(name = 't_user')public interface UserMapper { @Select('select * from t_user where user_id = #{id}') public User findUserById(@Param('id') String id);}
這種方式是不知道為什么,只有幾個(gè)屬性會(huì)填充值,其他屬性查詢出來的結(jié)果都為null
但是我如果寫了
@Results({ @Result(column = 'user_id',property = 'userId'), @Result(column = 'username',property = 'username'), @Result(column = 'pass',property = 'pass'), @Result(column = 'phone_number',property = 'phoneNumber')})
就會(huì)完全正確,每個(gè)屬性都有值問題1: 為什么會(huì)出現(xiàn)有的屬性有值,有的屬性沒值?問題2:我不能每個(gè)查詢語句都這么寫,這樣會(huì)有很多的重復(fù)的@Result部分,有沒有注解將其在內(nèi)部進(jìn)行對(duì)應(yīng)關(guān)系實(shí)現(xiàn),不需要每次都寫@ Result?
問題解答
回答1:問題1. 因?yàn)榻Y(jié)果集的column和Bean的property不對(duì)應(yīng),當(dāng)然就會(huì)null.
問題2. 你可以在sql中用別名,使得column和property對(duì)應(yīng),這樣就不會(huì)出現(xiàn)問題1.
回答2:問題一的話,因?yàn)閿?shù)據(jù)庫(kù)字段是你下劃線分隔,bean中的字段是駝峰命名的,如user_name和userName,導(dǎo)致無法匹配
如果是通過xml文件來配置的話,只需要開啟駝峰命名轉(zhuǎn)換
<setting name='mapUnderscoreToCamelCase' value='true'/>
yml中 大概是這樣
mybatis: configuration: map-underscore-to-camel-case: true
相關(guān)文章:
1. 安全性測(cè)試 - nodejs中如何防m(xù)ySQL注入2. javascript - 關(guān)于apply()與call()的問題3. html - eclipse 標(biāo)簽錯(cuò)誤4. python 利用subprocess庫(kù)調(diào)用mplayer時(shí)發(fā)生錯(cuò)誤5. python - Pycharm的Debug用不了6. datetime - Python如何獲取當(dāng)前時(shí)間7. 請(qǐng)問PHPstudy中的數(shù)據(jù)庫(kù)如何創(chuàng)建索引8. python - pycharm 自動(dòng)刪除行尾空格9. python文檔怎么查看?10. javascript - nginx反向代理靜態(tài)資源403錯(cuò)誤?
