首页 > 数据库 > 其他综合 >

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

2017-11-14

SSM框架学习之开发过程中使用Mabtis(2)。一、表关系:一对一查询。创建实体类:订单实体:order java

一、表关系:一对一查询

创建实体类

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

未完待续…

相关文章
最新文章
热点推荐