ProductOffline.xml 6.03 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.ProductOfflineDao">

	<!-- product_offline 所有查询列 -->
	<sql id="QUERY_COLUMN_LIST">
		<![CDATA[pid,cate_id AS cateId,seller_name AS sellerName,price,status,ctime,utime]]>
	</sql>

	<!-- product_offline 查询列来源表-->
	<sql id="QUERY_FROM_TABLE"><![CDATA[FROM product_offline]]></sql>
	
	<!-- 全部条件(更多功能可以通过queryData扩展实现)  -->
	<sql id="QUERY_WHERE_CLAUSE">
		<where>
			<if test="pid != null and pid != ''"><![CDATA[AND pid = #{pid}]]></if>
			<if test="cateList != null and cateList != ''"><![CDATA[AND cate_id IN]]>
                <foreach collection="cateList" item="cate" open="(" separator="," close=")">
                    <![CDATA[#{cate}]]>
                </foreach>
            </if>
            <if test="cateId != null and cateId != ''"><![CDATA[AND cate_id = #{cateId}]]></if>
			<if test="sellerName != null and sellerName != ''"><![CDATA[AND seller_name=#{sellerName}]]></if>
			<if test="sellerUserId != null and sellerUserId != ''"><![CDATA[AND seller_user_id = #{sellerUserId}]]></if>
			<if test="price != null and price != ''"><![CDATA[AND price = #{price}]]></if>
			<if test="status != null and status != ''"><![CDATA[AND status = #{status}]]></if>
			<if test="status == null or status == ''"><![CDATA[AND status != -1]]></if>
			<if test="ctime != null and ctime != ''"><![CDATA[AND ctime = #{ctime}]]></if>
			<if test="utime != null and utime != ''"><![CDATA[AND utime = #{utime}]]></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="cateId != null"><![CDATA[cate_id = #{cateId},]]></if>
			<if test="sellerName != null"><![CDATA[seller_name = #{sellerName},]]></if>
			<if test="price != null"><![CDATA[price = #{price},]]></if>
			<if test="status != null"><![CDATA[status = #{status},]]></if>
			<if test="ctime != null"><![CDATA[ctime = #{ctime},]]></if>
			<if test="utime != null"><![CDATA[utime = #{utime},]]></if>
		</set>
	</sql>

	<!-- 插入product_offline记录 -->
	<insert id="insertEntry" parameterType="productOffline" >
		<![CDATA[
			INSERT INTO product_offline (pid,cate_id,seller_name,price,status,ctime,utime)
			VALUES (#{pid},#{cateId},#{sellerName},#{price},#{status},#{ctime},#{utime})
		]]>
	</insert>
	
	<!-- 返回插入的编号,在事务开启状态下有效 -->
	<select id="lastSequence" resultType="int"><![CDATA[SELECT LAST_INSERT_ID() AS pid]]></select>

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

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

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

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

	<!-- 查询,通过条件 -->
	<select id="selectEntryList" parameterType="productOffline" resultType="productOffline">
		<![CDATA[
			SELECT a.pid,a.cate_id AS cateId,seller_user_id AS sellerUserId,
			(SELECT group_concat(convert(d.value,char(100)) SEPARATOR ';') FROM product_offline_attr_value c 
			LEFT JOIN attribute_value d ON d.id = c.attr_value_id
			where c.pid = a.pid 
			group by c.pid
			) AS offlineAttrValue
			,a.seller_name AS sellerName,a.price,a.status
					    FROM product_offline a
			where 1=1
		]]>
			<if test="pid != null and pid != ''"><![CDATA[AND a.pid = #{pid}]]></if>
			<if test="sellerName != null and sellerName != ''"><![CDATA[AND a.seller_name =#{sellerName}]]></if>
			<if test="sellerUserId != null and sellerUserId != ''"><![CDATA[AND seller_user_id = #{sellerUserId}]]></if>
			<if test="price != null and price != ''"><![CDATA[AND a.price = #{price}]]></if>
			<if test="status != null and status != ''"><![CDATA[AND a.status = #{status}]]></if>
			<if test="status == null or status == ''"><![CDATA[AND status != -1]]></if>
			<if test="cateList != null and cateList != ''"><![CDATA[AND a.cate_id IN]]>
                <foreach collection="cateList" item="cate" open="(" separator="," close=")">
                    <![CDATA[#{cate}]]>
                </foreach>
            </if>
			<if test="ctime != null and ctime != ''"><![CDATA[AND a.ctime = #{ctime}]]></if>
			<if test="utime != null and utime != ''"><![CDATA[AND a.utime = #{utime}]]></if>
		    <include refid="QUERY_ORDER_LIMIT_CONDTION"/>
	</select>

	<!-- 总数查询,通过条件 -->
	<select id="selectEntryListCount" parameterType="productOffline" resultType="int">
		<![CDATA[SELECT COUNT(pid) AS dataCount]]>
		<include refid="QUERY_FROM_TABLE"/>
		<include refid="QUERY_WHERE_CLAUSE"/>
	</select>
	
	<!-- 其它SQL语句 -->
	<select id="selectSellerSaleCates" parameterType="java.lang.Long" resultType="long">
		<![CDATA[SELECT a.cate_id AS cateId FROM product_offline a WHERE a.seller_user_id = #{sellerId} group by a.cate_id]]>
	</select>
	
</mapper>