spring boot 集成 mybatis 使用注解實現(xiàn)
spring boot 和 mybatis已經(jī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);
}
這種方式是不知道為什么,只有幾個屬性會填充值笆檀,其他屬性查詢出來的結(jié)果都為null
image.png
但是我如果寫了
@Results({
@Result(column = "user_id",property = "userId"),
@Result(column = "username",property = "username"),
@Result(column = "pass",property = "pass"),
@Result(column = "phone_number",property = "phoneNumber")
})
就會完全正確训堆,每個屬性都有值
問題1: 為什么會出現(xiàn)有的屬性有值做葵,有的屬性沒值?
問題2:我不能每個查詢語句都這么寫华烟,這樣會有很多的重復(fù)的@Result
部分翩迈,有沒有注解將其在內(nèi)部進行對應(yīng)關(guān)系實現(xiàn),不需要每次都寫@ Result
?
問題1. 因為結(jié)果集的column和Bean的property不對應(yīng)盔夜,當然就會null.
問題2. 你可以在sql中用別名负饲,使得column和property對應(yīng),這樣就不會出現(xiàn)問題1.
問題一的話,因為數(shù)據(jù)庫字段是你下劃線分隔,bean中的字段是駝峰命名的,如user_name和userName,導(dǎo)致無法匹配
如果是通過xml文件來配置的話喂链,只需要開啟駝峰命名轉(zhuǎn)換
<setting name="mapUnderscoreToCamelCase" value="true"/>
yml中 大概是這樣
mybatis:
configuration:
map-underscore-to-camel-case: true
http://www.mybatis.org/mybatis-3/zh/java-api.html
String resource = "org/mybatis/builder/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(inputStream);