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五个对象以及属性了

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis中进行三联合查询可以通过创建视图或使用多连接来实现。 一种方法是创建一个视图,将所需的连接起来。例如,在创建一个名为doctor_work_duty的视图时,可以使用以下SQL语句: ```sql create view doctor_work_duty as (select * from hospital.doctor t1 inner join hospital.work t2 on t1.doc_work_id = t2.w_id inner join hospital.duty t3 on t1.doc_duty = t3.d_id); ``` 这样就可以在查询中使用这个视图来获取所需的数据。 另一种方法是使用多连接语句来达到三联合查询的目的。例如,可以使用以下SQL语句来实现用户和权限的联合查询: ```sql select u.username,u.`password`,a.authorityName from user u,authority a,user_relation ur where u.userId=ur.userId and a.authorityId=ur.authorityId; ``` 这将返回一个包含用户和权限信息的结果集。 在这种情况下,设计通常包括用户(User)、用户关系(UserRelation)、用户权限(Authority)和用户信息(UserInfo)。每个都有其特定的列和关系,可以根据需求进行设计和使用。 总结起来,MyBatis中进行三联合查询可以通过创建视图或使用多连接来实现。视图可以将多个连接在一起,并在查询中使用该视图。多连接可以在查询语句中直接进行之间的连接操作。具体使用哪种方法取决于实际需求和数据结构的设计。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Mybatis连接查询](https://blog.csdn.net/m0_56750901/article/details/123899956)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Mybatis的多查询使用](https://blog.csdn.net/weixin_45309354/article/details/123233534)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值