Heim > Fragen und Antworten > Hauptteil
-spring boot integriert mybatis mithilfe von Annotationen
spring boot und mybatis wurden normal integriert. Bei der Verwendung von Abfragen werden Annotationen verwendet (das Projekt verfügt über keine XML-Dateien)
@Mapper
@Table(name = "t_user")
public interface UserMapper {
@Select("select * from t_user where user_id = #{id}")
public User findUserById(@Param("id") String id);
}
Ich weiß nicht, warum auf diese Weise nur wenige Attribute mit Werten gefüllt werden und die Ergebnisse anderer Attributabfragen alle null sind
Aber wenn ich schreibe
@Results({
@Result(column = "user_id",property = "userId"),
@Result(column = "username",property = "username"),
@Result(column = "pass",property = "pass"),
@Result(column = "phone_number",property = "phoneNumber")
})
Es ist völlig richtig, jedes Attribut hat einen Wert
Frage 1: Warum haben einige Attribute einen Wert und andere keinen Wert?
Frage 2: Ich kann nicht jede Abfrage so schreiben, weil es viele Duplikate geben wird@Result
部分,有没有注解将其在内部进行对应关系实现,不需要每次都写@ Result
?
世界只因有你2017-06-23 09:16:41
问题1. 因为结果集的column和Bean的property不对应,当然就会null.
问题2. 你可以在sql中用别名,使得column和property对应,这样就不会出现问题1.
漂亮男人2017-06-23 09:16:41
问题一的话,因为数据库字段是你下划线分隔,bean中的字段是驼峰命名的,如user_name和userName,导致无法匹配
如果是通过xml文件来配置的话,只需要开启驼峰命名转换
<setting name="mapUnderscoreToCamelCase" value="true"/>
yml中 大概是这样
mybatis:
configuration:
map-underscore-to-camel-case: true