ProductPopAttr.xml 6.98 KB
<?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.dili.titan.dao.ProductPopAttrDao">

    <resultMap type="productPopAttr" id="productPopAttr">
        <result property="pid" column="pid" />
        <result property="attrId" column="attr_id" />
        <result property="attrType" column="attrType" />
        <result property="ctime" column="ctime" />
        <result property="alias" column="alias"/>
        <result property="name" column="name"/>
        <result property="inputType" column="inputtype"/>
        <result property="status" column="attrStatus"/>
        <collection property="attrValueList" ofType="productPopAttrValue" javaType="ArrayList" >
            <result property="attrId" column="attr_id" />
            <result property="valueId" column="value_id" />
            <result property="ctime" column="ctime" />
            <result property="valueName" column="value_name" />
            <result property="value" column="value"/>
            <result property="show" column="show"/>
            <result property="order" column="order"/>
            <result property="status" column="status"/>
        </collection>
    </resultMap>

	<!-- product_pop_attr 所有查询列 -->
	<sql id="QUERY_COLUMN_LIST">
		<![CDATA[id,pid,attr_id AS attrId,attr_type AS attrType,ctime]]>
	</sql>
	<!-- product_pop_attr 插入 -->
	<sql id="INSERT">
		<![CDATA[INSERT INTO product_pop_attr (pid,attr_id,attr_type,ctime)]]>
	</sql>

	<!-- product_pop_attr 查询列来源表-->
	<sql id="QUERY_FROM_TABLE"><![CDATA[FROM product_pop_attr]]></sql>
	
	<!-- 全部条件(更多功能可以通过queryData扩展实现)  -->
	<sql id="QUERY_WHERE_CLAUSE">
		<where>
			<if test="pid != null and pid != ''"><![CDATA[AND pid = #{pid}]]></if>
			<if test="attrType != null and attrType != ''"><![CDATA[AND attr_type = #{attrType}]]></if>
		</where>
	</sql>
	
	<!-- 智能排序与分页 -->
	<sql id="QUERY_ORDER_LIMIT_CONDTION">
		<if test="orderField != null and orderField != '' and orderFieldType != null and orderFieldType != ''"><![CDATA[ORDER BY ${orderField} ${orderFieldType}]]></if>
		<if test="startIndex != null and startIndex &gt;= 0 and pageSize != null and pageSize &gt; 0"><![CDATA[LIMIT #{startIndex},#{pageSize}]]></if>
	</sql>

	<!-- 更新列字段,只要不为NULL则更新,除开主键列 -->
	<sql id="UPDATE_COLUMN_SET">
		<set>
			<if test="pid != null"><![CDATA[pid = #{pid},]]></if>
			<if test="attrId != null"><![CDATA[attr_id = #{attrId},]]></if>
		</set>
	</sql>

	<!-- 插入product_pop_attr记录 -->
	<insert id="insertEntry" parameterType="productAttr" >
		<![CDATA[
			INSERT INTO product_pop_attr (id,pid,attr_id,attr_type,ctime)
			VALUES (#{id},#{pid},#{attrId},#{attrType},now())
		]]>
	</insert>
	
	<!-- 返回插入的编号,在事务开启状态下有效 -->
	<select id="lastSequence" resultType="int"><![CDATA[SELECT LAST_INSERT_ID() AS id]]></select>

	<!-- 删除记录,主键IN(array) -->
	<delete id="deleteByArrayKey" parameterType="java.lang.reflect.Array" >
		<![CDATA[DELETE FROM product_pop_attr WHERE id IN]]>
		<foreach collection="array" item="id" open="(" separator="," close=")">
			<![CDATA[#{id}]]>
		</foreach>
	</delete>

	<!-- 删除,通过条件 -->
	<update id="deleteByCondtion" parameterType="productAttr" >
		<![CDATA[DELETE FROM product_pop_attr]]>
		<include refid="QUERY_WHERE_CLAUSE"/>
	</update>

	<!-- 修改记录通过主键 -->
	<update id="updateByKey" parameterType="productAttr" >
		<![CDATA[UPDATE product_pop_attr]]>
		<include refid="UPDATE_COLUMN_SET"/>
		<![CDATA[WHERE id = #{id}]]>
	</update>

	<!-- 查询,通过主键IN(array) -->
	<select id="selectEntryArray" parameterType="java.lang.reflect.Array" resultType="productAttr">
		<![CDATA[SELECT]]>
		<include refid="QUERY_COLUMN_LIST"/>
		<include refid="QUERY_FROM_TABLE"/>
		<![CDATA[WHERE id IN]]>
		<foreach collection="array" item="id" open="(" separator="," close=")">
			<![CDATA[#{id}]]>
		</foreach>
	</select>

	<!-- 查询,通过条件 -->
	<select id="selectEntryList" parameterType="productAttr" resultType="productAttr">
		<![CDATA[SELECT]]>
		<include refid="QUERY_COLUMN_LIST"/>
		<include refid="QUERY_FROM_TABLE"/>
		<include refid="QUERY_WHERE_CLAUSE"/>
		<include refid="QUERY_ORDER_LIMIT_CONDTION"/>
	</select>

	<!-- 总数查询,通过条件 -->
	<select id="selectEntryListCount" parameterType="productAttr" resultType="int">
		<![CDATA[SELECT COUNT(id) AS dataCount]]>
		<include refid="QUERY_FROM_TABLE"/>
		<include refid="QUERY_WHERE_CLAUSE"/>
	</select>
	
	<!-- 其它SQL语句 -->
	<insert id="batchInsert" parameterType="productAttr">
		<include refid="INSERT"/>
		VALUES 
		<foreach collection="list" item="item" index="index" separator=",">
			<![CDATA[(#{item.pid},#{item.attrId},#{item.attrType},now())]]>
		</foreach>
	</insert>
	<delete id="deleteByPid" parameterType="Long">
		<![CDATA[DELETE FROM product_pop_attr WHERE pid=#{pid}]]>
	</delete>
	
	<select id="findByPidAttr" parameterType="java.util.List" resultMap="productPopAttr">
        SELECT a.pid,c.alias,c.`name`,c.type AS attrType,a.attr_id,c.inputtype,c.status AS attrStatus,b.value_id,b.`value_name`  AS `value`, 0 AS `show`,  0 AS `order`,  0 AS `status` 
		FROM product_pop_attr a,product_pop_attr_value b,attribute c
		WHERE a.pid=b.pid AND  a.attr_id=b.attr_id AND c.id=a.attr_id  AND c.`inputtype` IN (4,5)
		AND TYPE = 1
		AND a.pid IN 
		<foreach collection="list" item="item" open="(" close=")" separator="," >
			#{item}
		</foreach>
    </select>
    
	<select id="getAttrByPid" parameterType="HashMap" resultMap="productPopAttr">
		<![CDATA[select a.pid,c.alias,c.`name`,c.type as attrType,c.inputtype,c.status as attrStatus,a.attr_id,b.value_id,d.`value`,d.`show`,d.`order`,d.`status`]]>
		<![CDATA[from product_pop_attr a,product_pop_attr_value b,attribute c,attribute_value d]]>
		<![CDATA[where a.pid=b.pid and  a.attr_id=b.attr_id and c.id=a.attr_id  and b.pid=a.pid and d.id=b.value_id  ]]>
			<if test="isSale != null and isSale == true"><![CDATA[AND type = 2]]></if>
			<if test="isSale != null and isSale == false"><![CDATA[AND type = 1]]></if>
		<![CDATA[and a.pid in]]>
		<foreach collection="list" item="item" open="(" close=")" separator="," >
			#{item}
		</foreach>
		<![CDATA[UNION ALL]]>
		<![CDATA[select a.pid,c.alias,c.`name`,c.type as attrType,c.inputtype,c.status as attrStatus,a.attr_id,b.value_id,b.value_name as `value`,1 as `show`,0 as `order`,1 as `status`]]>
		<![CDATA[from product_pop_attr a,product_pop_attr_value b,attribute c]]>
 		<![CDATA[where a.pid=b.pid and  a.attr_id=b.attr_id and c.id=a.attr_id  and b.pid=a.pid and b.value_id=-1 ]]>
			<if test="isSale != null and isSale == true"><![CDATA[AND type = 2]]></if>
			<if test="isSale != null and isSale == false"><![CDATA[AND type = 1]]></if>
		<![CDATA[and a.pid in]]>
		<foreach collection="list" item="item" open="(" close=")" separator="," >
			#{item}
		</foreach>
	</select>
	
	<select id="getSearchAttrByPid" parameterType="HashMap" resultMap="productPopAttr">
	</select>
	
</mapper>