mybatis 一对多和多对一

来源:互联网 发布:潮汕话输入法软件 编辑:程序博客网 时间:2024/06/05 23:46

mybatis一对多和多对一的级联

本例有user_info和order_info两个表测试,其中user_info表的user_id为order_info表的外键。user : order=1:n

表结构
user_info
这里写图片描述

order_info
这里写图片描述

order_info的外键设置
这里写图片描述

一对多
userinfo.xml

<mapper namespace="com.ldu.mapper.UserInfoMapper">    <resultMap type="UserInfo" id="userMap">        <id property="id" column="user_id"></id>        <result property="userName" column="user_name"></result>        <result property="sex" column="user_sex"></result>        <collection property="Orderlist" ofType="OrderInfo" column="user_id">            <id property="oid" column="order_id"></id>            <result property="proName" column="order_name" />            <result property="price" column="order_price" />        </collection>    </resultMap>    <!--条件查询 -->    <select id="selectUser" parameterType="Integer" resultMap="userMap">        select        a.*,b.*        from        user_info a,        order_info b        where        a.user_id = b.user_id        and a.user_id=#{id}    </select></mapper>

UserInfoMapper.java

public interface UserInfoMapper {    public UserInfo selectUser(int id);}

测试

@Test    public void selectUser(){        UserInfo user=mapper.selectUser(3);        System.out.println(user);        for(OrderInfo oinfo:user.getOrderlist()){            System.out.println(oinfo);        }    }

多对一
order_info.xml

<mapper namespace="com.ldu.mapper.OrderInfoMapper">    <resultMap type="OrderInfo" id="orderMap">        <id property="oid" column="order_id" />        <result property="proName" column="order_name" />        <result property="price" column="order_price" />        <association property="userInfo" javaType="UserInfo"            column="user_id">            <id property="id" column="user_id"></id>            <result property="userName" column="user_name"></result>            <result property="sex" column="user_sex"></result>        </association>    </resultMap>    <select id="selectOrder" resultMap="orderMap">        select        a.*,b.*        from        user_info a,        order_info b        where        a.user_id = b.user_id    </select></mapper>

OrderInfoMapper.java

public interface OrderInfoMapper {    public List<OrderInfo> selectOrder();}

测试

public void seleceInfo(){        List<OrderInfo> list=omapper.selectOrder();        for(OrderInfo oinfo:list){            System.out.println(oinfo);            System.out.println(oinfo.getUserInfo());        }           }
原创粉丝点击