mybatis的五表联合查询

1、首先mybatis.xml的配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

    <properties resource="db.properties"/>

    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>

    <typeAliases>
        <!--类型的别名   理解: 将xml中 type属性指定的类型  全部更换为 user  -->
        <!--<typeAlias type="com.qfedu.pojo.User" alias="user"/>-->

        <!--表示将 这个包下的所有的类;一旦返回的类型在这个包下,这全部都可以用类名进行简写(大写和小写都可以)-->
        <package name="com.qfedu.pojo"/>
    </typeAliases>
    
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${user}"/>
                <property name="password" value="${pass}"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="com/qfedu/mapper/UserMapper.xml"/>
        <mapper resource="com/qfedu/mapper/OrderMapper.xml"/>
        <mapper resource="com/qfedu/mapper/DetailMapper.xml"/>
        <mapper resource="com/qfedu/mapper/ProductMapper.xml"/>
        <mapper resource="com/qfedu/mapper/TypeMapper.xml"/>
        <mapper resource="com/qfedu/mapper/UserTestMapper.xml"/>
    </mappers>
</configuration>

2、分别定义数据表中的各个对象,并且编写其属性,要重写tostring()方法,代码,略
3、从用户的角度开始进行配置xml文件,首先一个用户可以查看自己的多个订单,所以在定义user类时,也要定义一个list属性进行存储我们的order

<?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">
<mapper namespace="com.qfedu.pojo.Mapper">
    <select id="getUser" resultMap="UserMapper">
         select * from users where uid=#{uid}
    </select>
    <resultMap id="UserMapper" type="user">
        <collection property="orders" column="uid" ofType="order" select="com.qfedu.pojo.OrderMapper.getOrder"/>
    </resultMap>
</mapper>
<?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">
<mapper namespace="com.qfedu.pojo.OrderMapper">
    <select id="getOrder" resultMap="OrderMapper">
         select * from orders where uid=#{uid}
    </select>
    <resultMap id="OrderMapper" type="order">
        <collection property="details" column="oid" ofType="Detail" select="com.qfedu.pojo.DetailMapper.getDetail"/>
    </resultMap>
</mapper>
<?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">
<mapper namespace="com.qfedu.pojo.DetailMapper">
    <select id="getDetail" resultMap="DetailMapper">
         select * from details where oid=#{oid}
    </select>
    <resultMap id="DetailMapper" type="com.qfedu.pojo.Detail">
        <association property="p" column="pid" select="com.qfedu.pojo.ProductMapper.getProduct"/>
    </resultMap>
</mapper>
<?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">
<mapper namespace="com.qfedu.pojo.ProductMapper">
    <select id="getProduct" resultMap="ProductMapper">
         select * from products where pid=#{pid}
    </select>
    <resultMap id="ProductMapper" type="Product">
        <association property="t" column="tid" select="com.qfedu.pojo.TypeMapper.TypeMapper"/>
    </resultMap>
</mapper>
<?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">
<mapper namespace="com.qfedu.pojo.TypeMapper">
    <select id="TypeMapper" resultType="Types">
        select * from types where tid=#{tid}
    </select>
</mapper>

这样就可以依次获取到user、order、detail、product、type五个对象以及属性了


版权声明:本文为Dana_i原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。