SSM框架学习之开发过程中使用Mabtis(2)



一、表关系:一对一查询

创建实体类

订单实体: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

 

    orders;//订单明细

}

  

创建OrderMapper.java,UserMapper.java



public interface OrderMapper {


    List

 

    findOrdersByUserId(@Param("uid")Integer id);


}

  



public interface UserMapper {


    User findById(@Param("uid")Integer id);


    List

 

    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"

        "https://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"

        "https://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>

未完待续…

猜你喜欢

转载自173806613.iteye.com/blog/2405302