| <?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"> | 
|   | 
| <mapper namespace="com.matrix.system.hive.dao.QuestionDao"> | 
|     <!-- 定义Question 的复杂关联map --> | 
|     <resultMap type="Question" id="QuestionMap"> | 
|             <id property="id" column="id" /> | 
|             <result property="category" column="category" /> | 
|             <result property="type" column="type" /> | 
|             <result property="question" column="question" /> | 
|             <result property="orderField" column="order_field" /> | 
|             <result property="companyId" column="company_id"/> | 
|              | 
|             <!-- 会员答案 --> | 
|             <association property="vipAnswer"  column="vipAnswer" javaType="VipAnswer">   | 
|             <id property="id" column="vipAnswerId" /> | 
|             <result property="answerId" column="answer_id" /> | 
|             <result property="quesionId" column="quesion_id" /> | 
|             <result property="answerText" column="answer_text" /> | 
|             <result property="vipId" column="vip_id" /> | 
|             </association>   | 
|              | 
|             <collection property="answers" column="{record.questionId=id}" select="com.matrix.system.hive.dao.AnswerDao.selectByModel"/> | 
|              | 
|     </resultMap> | 
|      | 
|      | 
|     <!-- 定义Question 的简单map  ,本map不添加其他的关联属性 --> | 
|     <resultMap type="Question" id="QuestionSimpleMap"> | 
|                 <id property="id" column="id" /> | 
|             <result property="category" column="category" /> | 
|             <result property="type" column="type" /> | 
|             <result property="question" column="question" /> | 
|             <result property="orderField" column="order_field" /> | 
|     </resultMap> | 
|     <!-- 根据问卷题目分类及会员id查询所有的题目及对应答案 --> | 
|     <select id="selectVipAnswerAllByModel" resultMap="QuestionMap"> | 
|     SELECT | 
|     a.id , | 
|     a.category,  | 
|     a.type , | 
|     a.question,  | 
|      | 
|     b.id vipAnswerId, | 
|     b.answer_id answer_id, | 
|     b.quesion_id quesion_id, | 
|     b.answer_text answer_text, | 
|     b.vip_id vip_id | 
|     FROM | 
|         question a | 
|     LEFT JOIN vip_answer b ON a.id = b.quesion_id and b.vip_id=#{id} | 
|     WHERE | 
|     a.company_id=#{companyId} | 
|     and category=#{type} | 
|   | 
|     ORDER BY order_field DESC | 
|     </select> | 
|      | 
|      | 
|     <!--  插入方法   --> | 
|     <insert id="insert" parameterType="Question" | 
|         useGeneratedKeys="true" keyProperty="id"> | 
|         INSERT INTO question ( | 
|             id, | 
|             category, | 
|             type, | 
|             question, | 
|             order_field, | 
|             company_id | 
|         ) | 
|     VALUES ( | 
|             #{id}, | 
|             #{category}, | 
|             #{type}, | 
|             #{question}, | 
|             #{orderField}, | 
|             #{companyId} | 
|     ) | 
|     </insert> | 
|      | 
|      | 
|      | 
|     <!--  批量插入   --> | 
|     <insert id="batchInsert" parameterType="java.util.List"> | 
|         INSERT INTO question ( | 
|             id, | 
|             category, | 
|             type, | 
|             question, | 
|             order_field, | 
|             company_id | 
|         ) | 
|     VALUES  | 
|     <foreach collection="list" item="item" index="index" separator=",">( | 
|             #{item.id}, | 
|             #{item.category}, | 
|             #{item.type}, | 
|             #{item.question}, | 
|             #{item.orderField}, | 
|             #{item.companyId} | 
|     )</foreach> | 
|     </insert> | 
|      | 
|      | 
|      | 
|      | 
|      | 
|     <!--  根据Map更新 部分更新   --> | 
|     <update id="updateByMap" parameterType="java.util.HashMap" > | 
|         UPDATE question | 
|         <set> | 
|             <if test="_parameter.containsKey('category')"> | 
|                     category = #{category}, | 
|                 </if>         | 
|             <if test="_parameter.containsKey('type')"> | 
|                     type = #{type}, | 
|                 </if>         | 
|             <if test="_parameter.containsKey('question')"> | 
|                     question = #{question}, | 
|                 </if>         | 
|             <if test="_parameter.containsKey('orderField')"> | 
|                     order_field = #{orderField}, | 
|                 </if>         | 
|         </set> | 
|         WHERE id=#{id}  | 
|     </update> | 
|      | 
|      | 
|      | 
|     <!--  根据对象更新 部分更新   --> | 
|     <update id="updateByModel" parameterType="Integer"> | 
|         UPDATE question | 
|         <set> | 
|                 <if test="(category!=null and category!='') or (category!='' and category==0)"> | 
|                     category = #{category}, | 
|                 </if>         | 
|                 <if test="(type!=null and type!='') or (type!='' and type==0)"> | 
|                     type = #{type}, | 
|                 </if>         | 
|                 <if test="(question!=null and question!='') or (question!='' and question==0)"> | 
|                     question = #{question}, | 
|                 </if>         | 
|                 <if test="(orderField!=null and orderField!='') or (orderField!='' and orderField==0)"> | 
|                     order_field = #{orderField}, | 
|                 </if>         | 
|         </set> | 
|         WHERE id=#{id}  | 
|     </update> | 
|      | 
|      | 
|     <!-- 批量删除 --> | 
|     <delete id="deleteByIds" parameterType="java.util.List"> | 
|         delete from question where  id in | 
|         <foreach collection="list" index="index" item="item" open="(" | 
|             separator="," close=")"> | 
|             #{item} | 
|         </foreach> | 
|     </delete> | 
|          | 
|     <!-- 根据id删除--> | 
|     <delete id="deleteById" parameterType="Integer"> | 
|         DELETE FROM question | 
|         where  id=#{id}  | 
|     </delete> | 
|      | 
|     <!-- 根据对象删除--> | 
|     <delete id="deleteByModel" parameterType="Integer"> | 
|         DELETE FROM question | 
|         where 1=1 | 
|         <if test="record!=null"> | 
|             <if test="(record.id!=null and record.id!='') or (record.id!='' and record.id==0)"> | 
|                 and id = #{record.id}  | 
|             </if> | 
|             <if test="(record.category!=null and record.category!='') or (record.category!='' and record.category==0)"> | 
|                 and category = #{record.category}  | 
|             </if> | 
|             <if test="(record.type!=null and record.type!='') or (record.type!='' and record.type==0)"> | 
|                 and type = #{record.type}  | 
|             </if> | 
|             <if test="(record.question!=null and record.question!='') or (record.question!='' and record.question==0)"> | 
|                 and question = #{record.question}  | 
|             </if> | 
|             <if test="(record.orderField!=null and record.orderField!='') or (record.orderField!='' and record.orderField==0)"> | 
|                 and order_field = #{record.orderField}  | 
|             </if> | 
|         </if> | 
|     </delete> | 
|      | 
|      | 
|      | 
|     <!-- 分页查询 --> | 
|     <select id="selectInPage" resultMap="QuestionMap"> | 
|         select  | 
|             id, | 
|             category, | 
|             type, | 
|             question, | 
|             order_field, | 
|             company_id | 
|         from question | 
|         where 1=1 | 
|         <if test="record!=null"> | 
|             <if test="(record.id!=null and record.id!='') or (record.id!='' and record.id==0)"> | 
|                 and id  = #{record.id}  | 
|             </if> | 
|             <if test="(record.category!=null and record.category!='') or (record.category!='' and record.category==0)"> | 
|                 and category  = #{record.category}  | 
|             </if> | 
|             <if test="(record.type!=null and record.type!='') or (record.type!='' and record.type==0)"> | 
|                 and type  = #{record.type}  | 
|             </if> | 
|             <if test="(record.question!=null and record.question!='') or (record.question!='' and record.question==0)"> | 
|                 and question  = #{record.question}  | 
|             </if> | 
|             <if test="(record.orderField!=null and record.orderField!='') or (record.orderField!='' and record.orderField==0)"> | 
|                 and order_field  = #{record.orderField} | 
|             </if> | 
|             <if test="(record.companyId!=null and record.companyId!='') or (record.companyId!='' and record.companyId==0)"> | 
|                 and company_id  = #{record.companyId} | 
|             </if> | 
|         </if> | 
|         order by order_field desc | 
|         <if test="pageVo !=null"><!-- 判断pageVo对象是否为空 --> | 
|          | 
|     <!--         <if test="pageVo.sort !=null  and pageVo.order !=null"> | 
|                 order by | 
|                 ${pageVo.sort} ${pageVo.order} | 
|             </if> --> | 
|             <if test="pageVo.offset >=0  and pageVo.limit >0"> | 
|                 limit | 
|                 #{pageVo.offset},#{pageVo.limit} | 
|             </if> | 
|         </if> | 
|     </select> | 
|      | 
|     <!-- 查询总条数 --> | 
|     <select id="selectTotalRecord"    resultType="java.lang.Integer"> | 
|     select count(*) | 
|     from question | 
|         where 1=1 | 
|         <if test="record!=null"> | 
|             <if test="(record.id!=null and record.id!='') or (record.id!='' and record.id==0)"> | 
|             and id = #{record.id}  | 
|             </if> | 
|             <if test="(record.category!=null and record.category!='') or (record.category!='' and record.category==0)"> | 
|             and category = #{record.category}  | 
|             </if> | 
|             <if test="(record.type!=null and record.type!='') or (record.type!='' and record.type==0)"> | 
|             and type = #{record.type}  | 
|             </if> | 
|             <if test="(record.question!=null and record.question!='') or (record.question!='' and record.question==0)"> | 
|             and question = #{record.question}  | 
|             </if> | 
|             <if test="(record.orderField!=null and record.orderField!='') or (record.orderField!='' and record.orderField==0)"> | 
|             and order_field = #{record.orderField}  | 
|             </if> | 
|             <if test="(record.companyId!=null and record.companyId!='') or (record.companyId!='' and record.companyId==0)"> | 
|                 and company_id  = #{record.companyId} | 
|             </if> | 
|         </if> | 
|     </select> | 
|   | 
|     <!-- 根据id查询--> | 
|     <select id="selectById" resultMap="QuestionMap"> | 
|         select  | 
|             id, | 
|             category, | 
|             type, | 
|             question, | 
|             order_field, | 
|             company_id | 
|         from question | 
|         where  id=#{id}  | 
|     </select>     | 
|      | 
|      | 
|     <!-- 根据id 锁表查询--> | 
|     <select id="selectForUpdate" resultMap="QuestionMap"> | 
|         select  | 
|             id, | 
|             category, | 
|             type, | 
|             question, | 
|             order_field | 
|         from question | 
|         where  id=#{id}  | 
|         for update | 
|     </select>     | 
|      | 
|      | 
|      | 
|     <!-- 根据对象查询--> | 
|     <select id="selectByModel" resultMap="QuestionMap"> | 
|         select  | 
|             id, | 
|             category, | 
|             type, | 
|             question, | 
|             order_field | 
|         from question | 
|         where 1=1 | 
|         <if test="record!=null"> | 
|             <if test="(record.id!=null and record.id!='') or (record.id!='' and record.id==0)"> | 
|                 and id = #{record.id}  | 
|             </if> | 
|             <if test="(record.category!=null and record.category!='') or (record.category!='' and record.category==0)"> | 
|                 and category = #{record.category}  | 
|             </if> | 
|             <if test="(record.type!=null and record.type!='') or (record.type!='' and record.type==0)"> | 
|                 and type = #{record.type}  | 
|             </if> | 
|             <if test="(record.question!=null and record.question!='') or (record.question!='' and record.question==0)"> | 
|                 and question = #{record.question}  | 
|             </if> | 
|             <if test="(record.orderField!=null and record.orderField!='') or (record.orderField!='' and record.orderField==0)"> | 
|                 and order_field = #{record.orderField}  | 
|             </if> | 
|             <if test="(record.companyId!=null and record.companyId!='') or (record.companyId!='' and record.companyId==0)"> | 
|                 and company_id  = #{record.companyId} | 
|             </if> | 
|         </if> | 
|     </select> | 
| </mapper> |