mybatis 多表查询

一对一:

第一:在一中的类添加另外一个类作为属性。如(在Order类中添加private User orderUser;)

第二:在mapper.xml配置关联。(mapper接口不变)

XML 复制代码
<!-- resultMap标签:解决查询结果字段名和实体类属性名不致的问题;  解决多表查询关联映射 -->
    <resultMap id="orderMap" type="实体类(全限定名)">
        <!--配置:查询结果和Order类的映射关联 -->
        <id column="实体类id" property="id"></id>
        <result column="字段" property="实体类字段"></result>

        <!-- 配置:1对1查询
             配置 : 查询结果和User类的映射关联
             autoMapping="true"表示字段与属性实体类名字相同自动复制。
             如果遇到不相同的用<result></result>关联
        -->
        <association property="mapper中函数返回值类型" javaType="属性实体类(全限定名)" autoMapping="true">
            <id column="属性实体id" property="id"></id>
            <result column="属性实体表中字段名" property="属性实体中属性名"></result>
        </association>userName
    </resultMap>

    <!-- 根据订单编号,查询订单信息及下单人信息 -->
    <select id="mapper中函数名" resultMap="mapper中函数返回值类型">
        <!-- 双表联查。 -->
    </select>

一对多

第一:在一中的类添加另外一个类作为集合属性。如(在User(一)类中添加

private List<Order> orders(多);)

第二:在mapper.xml配置关联。(mapper接口不变)

XML 复制代码
 <!--配置多表查询映射关系-->
    <resultMap id="mapper函数返回值" type="实体类(一)全限定名" autoMapping="true">
        <!--配置: 查询结果和User类的映射-->
        <id column="表(一)id字段" property="实体类id"></id>
        <result column="字段" property="实体类(一)属性"></result>

        <!--配置:1对多关系-->
        <collection property="实体类(多)"
                    javaType="java.util.List"
                    ofType="实体类(多)全限定名">
            <!--配置:查询结果和Order类的映射-->
            <id column="表(多)id字段" property="实体类(多)id"></id>
            <result column="表(多)字段名" property="实体类(多)属性"></result>
        </collection>
    </resultMap>


    <!--根据用户id,查询用户信息和下单信息-->
    <select id="mapper函数名" resultMap="mapper函数返回值">
  <!--连表查询。-->
    </select>
相关推荐
shmily麻瓜小菜鸡10 分钟前
在 Angular 中, `if...else if...else`
前端·javascript·angular.js
爱尚你199315 分钟前
Java 泛型与类型擦除:为什么解析对象时能保留泛型信息?
java
电商数据girl37 分钟前
酒店旅游类数据采集API接口之携程数据获取地方美食品列表 获取地方美餐馆列表 景点评论
java·大数据·开发语言·python·json·旅游
CircleMouse38 分钟前
基于 RedisTemplate 的分页缓存设计
java·开发语言·后端·spring·缓存
ktkiko1144 分钟前
顶层架构 - 消息集群推送方案
java·开发语言·架构
zybsjn1 小时前
后端系统做国际化改造,生成多语言包
java·python·c#
bloglin999991 小时前
npm和nvm和nrm有什么区别
前端·npm·node.js
2501_910227541 小时前
web3 前端常见错误类型以及错误捕获处理
前端·web3
Unity官方开发者社区1 小时前
《Cryptical Path》开发诀窍:像玩游戏一样开发一款类Rogue游戏
java·游戏·玩游戏
_星辰大海乀1 小时前
表的设计、聚合函数
java·数据结构·数据库·sql·mysql·数据库开发