1. 程式人生 > >mybatis collection 用法

mybatis collection 用法

一、基本ResultMap

    column 與 property 是必須的,如果只寫了column 也是沒有效果的

    ofType 是物件的所屬型別 javaType :collection 的型別

如:

 <collectionproperty="questions"ofType="map"javaType="list">

對應的java 形態為 :List<Map<String,Object>> 

<resultMaptype="map"id="getQuestionCrosswiseByTableNameMap">
    <
resultcolumn="table_name"property="tableName"/>
    <resultcolumn="survey_table_id"property="surveyTableId"/>     <collectionproperty="questions"ofType="map"javaType="list">       <resultcolumn="question_crosswise_id"property="questionCrosswiseId"/>       <resultcolumn="question_crosswise_name"
property="questionCrosswiseName"/>
    </collection>   </resultMap>

二、內聯查詢

  <resultMaptype="map"id="getQuestionCrosswiseByTableNameTwoMap">
      <resultcolumn="table_name"property="tableName"/>
      <resultcolumn="survey_table_id"property="surveyTableId"/>
      <
collectionproperty="questionGrooup"ofType="map"javaType="list">
          <resultcolumn="question_crosswise_id"property="questionCrosswiseId"/>           <resultcolumn="question_crosswise_name"property="questionCrosswiseName"/>             <collectionproperty="questions"fetchType="eager"column="question_crosswise_id"select="com.yikangyiliao.pension.dao.QuestionUnitDao.getQuestionUnitAnswerMapByQuetionCrosswiseId">                </collection>   </collection>   </resultMap>
<resultMaptype="map"id="QuestionUnitAnswerMap"><resultcolumn="question_portrait_id"property="questionPortraitId"></result><resultcolumn="question_portrait_name"property="questionPortraitName"></result><resultcolumn="answer_type"property="answerType"/><resultcolumn="weight_value"property="weightVal"/><collectionproperty="answers"ofType="map"javaType="list"><resultcolumn="answer_id"property="answerId"/><resultcolumn="answer_text"property="answerText"/><resultcolumn="answer_val"property="answerVal"/></collection></resultMap><selectid="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}"

<resultMaptype="map"id="getQuestionCrosswiseByTableNameTwoMap"><resultcolumn="table_name"property="tableName"/><resultcolumn="survey_table_id"property="surveyTableId"/><collectionproperty="questionGrooup"ofType="map"javaType="list"><resultcolumn="question_crosswise_id"property="questionCrosswiseId"/><resultcolumn="question_crosswise_name"property="questionCrosswiseName"/><collectionproperty="questions"fetchType="eager"column="{questionCrosswiseId=question_crosswise_id,userId=create_user_id}"select="com.yikangyiliao.pension.dao.QuestionUnitDao.getQuestionUnitAnswerMapByQuetionCrosswiseId"></collection></collection></resultMap><selectid="getQuestionUnitAnswerMapByQuetionCrosswiseId"parameterType="map">
  select * from answer where question_id=#{questionId} and user_id=#{userId}</select>

 三、多層巢狀

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