mybatis collection 用法
阿新 • • 發佈:2019-01-24
一、基本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>