Mybatis一对多标签Collection的使用和接收多参数的用法

博客介绍了collection中的property对应实体类CurriculumEntity的属性,还说明了column用于接收参数,包括接收单参数和多参数的示例,并提及了CurriculumDao.xml中的方法示例,与数据库操作相关。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CurriculumDao.xml 部分如下:
<resultMap
   type="cn.longrace.wisdom.modules.dataBase.entity.CurriculumEntity"
   id="curriculumMap">
   <result property="id" column="id" />
   <result property="code" column="code" />
   <result property="name" column="name" />
   <result property="teacherName" column="teacherName" />
   <result property="teacherId" column="teacher_id" />
   <result property="outline" column="outline" />
   <result property="createTime" column="create_time" />
   <result property="creator" column="creator" />
   <result property="img" column="img" />
   <result property="demand" column="demand" />
   <result property="plan" column="plan" />
   <result property="period" column="period" />
   <result property="imgId" column="img_id" />
   <result property="imgName" column="img_name" />
   <collection property="classes" column="{curriculumId = curriculumId, teacherId = teacherId}"
            select="cn.longrace.wisdom.modules.dataBase.dao.CurriculumClassDao.getClassesById" />
</resultMap>

1. collection中的property对应实体类CurriculumEntity的属性

private List<ClassEntity> classes;

2. column用于接收参数

    2.1. 接收一个参数,示例:collection标签中的column="id"

    2.2. 接收多参数,示例:collection标签中的 column="{curriculumId = curriculumId, teacherId = teacherId}"

    CurriculumDao.xml 中方法示例:

<select id="selectListByParams" parameterType="map"
   resultMap="curriculumMap">
   select
      cu.*, cu.id as curriculumId,
      t.`name` as teacherName, t.id as teacherId
   from lr_database_curriculum cu
      left join lr_database_curriculum_class dcc on dcc.curriculum_id = cu.id
      left join lr_database_teacher t on dcc.teacher_id = t.id
   <where>
      <if test="key != '' and key != null">
         cu.name like concat('%',#{key},'%')
      </if>
      <if test="userId != '' and userId != null">
         and t.id = #{userId}
      </if>
      <if test="curriculumId != '' and curriculumId != null">
         and cu.id = #{curriculumId}
      </if>
   </where>
   group by cu.id
</select> 
上述红色部分相对应,绿色部分对应collection标签中select属性中CurriculumClassDao中getClassesById方法的参数,如下:
<select id="getClassesById"      resultMap="cn.longrace.wisdom.modules.dataBase.dao.ClassDao.classMap"    parameterType="cn.longrace.wisdom.modules.dataBase.entity.CurriculumClassEntity">
   select
   cl.* , count(lds.id) as studentNums, cc.teacher_id as teacherId
   from lr_database_class cl
   left join lr_database_curriculum_class cc on cl.id = cc.class_id
   left join lr_database_student lds on lds.class_id = cl.id
   where cc.curriculum_id = #{curriculumId}
   <if test="teacherId != null">
      and cc.teacher_id = #{teacherId}
   </if>
   group by cl.id
</select> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值