mybatis collection 用法

官网 :http://www.mybatis.org/mybatis-3/zh/index.html


https://my.oschina.net/lavedream/blog/489008

一、基本ResultMap

    column 与 property 是必须的,如果只写了column 也是没有效果的

    ofType 是对象的所属类型 javaType :collection 的类型

如:

 <collection property="questions" ofType="map" javaType="list">

对应的java 形态为 :List<Map<String,Object>> 

 

<resultMap type="map" id="getQuestionCrosswiseByTableNameMap">
    <result column="table_name"      property="tableName"/>
    <result column="survey_table_id" property="surveyTableId"/>
    <collection property="questions" ofType="map" javaType="list">
      <result column="question_crosswise_id"   property="questionCrosswiseId"/>
      <result column="question_crosswise_name" property="questionCrosswiseName"/>
    </collection>
  </resultMap>

 

二、内联查询

  <resultMap type="map" id="getQuestionCrosswiseByTableNameTwoMap">
      <result column="table_name" property="tableName"/>
      <result column="survey_table_id" property="surveyTableId"/>
      <collection property="questionGrooup" ofType="map" javaType="list">
          <result column="question_crosswise_id" property="questionCrosswiseId"/>
          <result column="question_crosswise_name" property="questionCrosswiseName"/>
            <collection property="questions"  fetchType="eager" column="question_crosswise_id" select="com.yikangyiliao.pension.dao.QuestionUnitDao.getQuestionUnitAnswerMapByQuetionCrosswiseId">                </collection>
  </collection>
  </resultMap>
 <resultMap type="map" id="QuestionUnitAnswerMap">
      <result column="question_portrait_id" property="questionPortraitId"></result>
      <result column="question_portrait_name" property="questionPortraitName"></result>
      <result column="answer_type"  property="answerType"/>
      <result column="weight_value"  property="weightVal"/>
      <collection property="answers" ofType="map" javaType="list">
          <result column="answer_id" property="answerId"/>
          <result column="answer_text" property="answerText"/>
          <result column="answer_val"property="answerVal"/>
      </collection>
  </resultMap>
  
  <select id="getQuestionUnitAnswerMapByQuetionCrosswiseId" resultMap="QuestionUnitAnswerMap"     parameterType="long">
        select qp.question_portrait_id,
        qp.question_portrait_name,
                answers.answer_id,
                answers.answer_text,
                answers.answer_val,
                qcpa.answer_type,
                    quw.weight_value
        from question_units qp 
        left join question_unit_answer_maps qcpa
        on qp.question_portrait_id=qcpa.question_portrait_group
        left join answers on qcpa.answer_id=answers.answer_id
            left join question_unit_weights quw on qp.question_portrait_id=quw.question_portrait_id
        where qp.question_crosswise_id=#{questionCrosswiseId}
  </select>

2.多参数内联查询 column="{questionId=question_id,userId=user_id}"

<resultMap type="map" id="getQuestionCrosswiseByTableNameTwoMap">
  <result column="table_name" property="tableName"/>
  <result column="survey_table_id" property="surveyTableId"/>
  <collection property="questionGrooup" ofType="map" javaType="list">
     <result column="question_crosswise_id" property="questionCrosswiseId"/>
     <result column="question_crosswise_name" property="questionCrosswiseName"/>
     <collection property="questions"  fetchType="eager" column="{questionCrosswiseId=question_crosswise_id,userId=create_user_id}" select="com.yikangyiliao.pension.dao.QuestionUnitDao.getQuestionUnitAnswerMapByQuetionCrosswiseId">                
     </collection>
  </collection>
</resultMap>

<select id="getQuestionUnitAnswerMapByQuetionCrosswiseId" parameterType="map">
  select * from answer where question_id=#{questionId} and user_id=#{userId}
</select>

 三、多层嵌套

 

<resultMap type="map" id="GetQuestionsAndAnswersByTableNameMap">
   <result column="survey_table_id" property="surveyTableId"/>
   <result column="table_name" property="tableName"/>
   <collection property="questions" ofType="map" javaType="list">
      <result column="question_id" property="questionId"/>
      <result column="question_text" property="questionText"/>
      <collection property="answers"  ofType="map" javaType="list">
         <result column="answer_id" property="answerId"/>
         <result column="answer_text" property="answerText"/>
         <result column="answer_val" property="answerVal"/>
      </collection>
    </collection>
</resultMap>

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值