本文最后更新于2 分钟前,文中所描述的信息可能已发生改变。
当数据库中表的字段名与我们java实体中的属性名不同时我们就需要手动指定映射关系,或进行一些配置。
一对一关系的映射
- 方法一:在springboot的配置文件中开启mybatis的驼峰命名
mybatis.configuration.map-underscore-to-camel-case=true
- 方法二:在mybatis的配置文件中通过
<settings>
下的<setting name="mapUnderscoreToCamelCase" value="true"/>
设置,并在springboot的配置文件中导入mybatis.config-location=classpath:mybatis-config.xml
注意:两者不可以同时使用!
一对多的映射
手动在mapper.xml文件中编写<resultMap>
来指定映射关系。如果返回类型使用了<resultMap>
此时嵌套的映射关系中配置的驼峰命名不生效,也就是说即使java实体与数据库中的表的字段的名字相同也需要手动再指定一遍。示例:
xml
<resultMap id="userMap" type="com.briup.bean.User">
<id property="id" column="id"/>
<result property="nickName" column="nick_name"/>
<result property="loginName" column="login_name"/>
<result property="passwordMd5" column="password_md5"/>
<result property="phone" column="phone"/>
<result property="eMail" column="e_mail"/>
<result property="address" column="address"/>
<result property="isLock" column="is_lock"/>
<collection property="addresses" ofType="com.briup.bean.ShippingAddress">
<id property="id" column="a_id"/>
<result property="name" column="name"/>
<result property="address" column="a_add"/>
<result property="phoneNum" column="phone_num"/>
<result property="defaultValue" column="default_value"/>
</collection>
</resultMap>
<!-- 此处的返回类型使用的是resultMap来指定的 -->
<select id="findByLoginName" resultMap="userMap">
select *,spa.id as a_id,spa.address as a_add from
t_user u left join t_shipping_address spa on u.id = spa.user_id
where u.login_name = #{loginName}
</select>
多对多映射
其实就是多个一对一映射