GApractice 2022-10-31 00:01 采纳率: 0%
浏览 95
已结题

MyBatis场景题,球解答

问题遇到的现象和发生背景

求问mybatis场景题
现有A,B,C三表,A为主表,B为中间表,C为副表,A和C为1对多的关系,在实体类中,c为a的List型变量 , 现在要对A进行分页查询,求问mybatis能不能实现一条sql完成这种查询? 先查主表,再遍历数据循环查副表,这种方式是不是效率很低,有没有优化的方式?

用代码块功能插入代码,请勿粘贴截图
  • 写回答

7条回答 默认 最新

  • 游一游走一走 2022-10-31 08:12
    关注

    可以的,你可以使用collection,关联属性

    <?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是指要处理哪一个接口类下的方法,所以必须要改为ClassDao -->
      <mapper namespace="com.xx.Dao.ClassDao">
          <!-- 先去数据库中执行,成功执行之后再去写resultMap -->
          <select id="getClassStudent" resultMap="classStudents">
             select 
             c.*,
             stu.id sid,
             stu.stu_name,
             stu.stu_age,
             stu.stu_class_id 
             from 
             com_class c 
             left join 
             com_student stu 
             on 
             c.id = stu.stu_class_id 
             where 
             c.id=#{id};
         </select>
         
         <!-- type是对班级类定义的封装规则,该规则的唯一标识是classStudents -->
         <resultMap type="com.xx.Bean.Class" id="classStudents">
             <!-- 
                 collection:定义集合元素的封装
                     property:指定实体类的哪一个属性是集合属性,MyBatis会将查询出来的集合封装到这里。
                     javaType:指定对象的类型,和ofType区分。
                     ofType:指定集合里面元素的类型。
              -->
              <id property="id" column="id"/>
              <result property="className" column="class_name"/>
              <result property="classNum" column="class_num"/>
              <collection property="students" ofType="com.xx.Bean.Student">
                  <result property="id" column="sid"/>
                  <result property="stuName" column="stu_name"/>
                  <result property="stuAge" column="stu_age"/>
                  <result property="stuClassId" column="stu_class_id"/>
              </collection>
         </resultMap>
      </mapper>
    
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月5日
  • 创建了问题 10月31日

悬赏问题

  • ¥15 在arcgispro中导出gdb文件无法在python中读取
  • ¥15 千牛PC端客服工作台的Js调用成品或定制
  • ¥20 在同一个包中,无法引用自己创建的类,换台电脑又可以
  • ¥15 各位帮我看看为什么我写的代码按钮按了没有反应,deveco studio,
  • ¥20 云南省制造业对经济增长的影响目录应该怎么罗列,就是现状那部分
  • ¥15 求一套完整的纵横四海程序。
  • ¥20 AD7606采集到电压乱飘,怎么解决呢
  • ¥60 有没有人查监控方面厉害的呢
  • ¥15 绑住完成C语言的任务
  • ¥20 vue项目打包Android apk,实现小说文本朗读功能