一、表关系:一对一查询
创建实体类
订单实体:order.java
public class Order {
private Integer id;//订单主键ID
private String name;//订单名字
private Integer userid;//用户ID
}
用户实体:User.java
public class User {
private Integer id;//用户主键ID
private String name;//用户名字
private List<Order> orders;//订单明细
}
创建OrderMapper.java,UserMapper.java
public interface OrderMapper {
List<Order> findOrdersByUserId(@Param("uid")Integer id);
}
public interface UserMapper {
User findById(@Param("uid")Integer id);
List<User> allUser();
}
创建OrderMapper.xml
,UserMapper.xml
和上面对应的接口名称一致,以便通过mapper接口加载配置文件
OrderMapper.xml文件:
<?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">
<!--namespace:一般写对应的接口路径-->
<mapper namespace="com.lanou.ord.mapper.OrderMapper">
<select id="findOrdersByUserId" resultType="Order">
SELECT * FROM ord WHERE userid=#{uid}
</select>
</mapper>
二、 resultMap映射思路:
使用resultMap将查询结果中的订单信息映射到Orders对象中,在orders类中添加User属性,将关联查询出来的用户信息映射到orders对象中的user属性中(上面orders实体类中已经添加order订单明细).
1、UserMapper.xml
先定义resultMap
<?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">
<!--namespace:一般写对应的接口路径-->
<mapper namespace="com.lanou.ord.mapper.UserMapper">
<!--定义查询订单关联用户的resultMap,将整个的查询结果映射到namespace-->
<resultMap id="UserMap" type="User">
<!--id:查询列中的唯一标识,订单信息中的唯一标识,如果多列组成唯一标识(如:一般数据库设计中的字典表,使
用联合主键),就需要配置多个id;
column:订单信息的唯一标识,列;
property:订单信息的唯一标识所映射到orders中的那个属性(如:数据库中orders表中的主键为
orders_id,而实体属性名称为ordersId),则这个这个配置应为<id column="orders_id"
property="ordersId"/>,类似hibernate实体映射文件配置.-->
<id column="id" property="id"/>
<result column="name" property="name"/>
<!--property:映射到user的那个属性;
column:指定唯一标识用户信息的列;-->
<collection property="orders"
column="id"
select="com.lanou.ord.mapper.OrderMapper.findOrdersByUserId"/>
</resultMap>
<select id="findById" resultMap="UserMap">
SELECT * FROM user WHERE id = #{uid};
</select>
<select id="allUser" resultMap="UserMap">
SELECT * FROM user;
</select>
</mapper>
未完待续…