ProductSkuPop.xml 5.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.ProductSkuPopDao">

	<!-- product_pop_sku 所有查询列 -->
	<sql id="QUERY_COLUMN_LIST">
		<![CDATA[id,sku,title,price,store_unit AS storeUnit,pid,
		sales, status, version, ctime]]>
	</sql>

	<!-- product_pop_sku 查询列来源表-->
	<sql id="QUERY_FROM_TABLE"><![CDATA[FROM product_pop_sku]]></sql>
	
	<!-- 全部条件(更多功能可以通过queryData扩展实现)  -->
	<sql id="QUERY_WHERE_CLAUSE">
		<where>
			<if test="id != null and id != ''"><![CDATA[AND id = #{id}]]></if>
			<if test="sku != null and sku != ''"><![CDATA[AND sku = #{sku}]]></if>
			<if test="title != null and title != ''"><![CDATA[AND title = #{title}]]></if>
			<if test="price != null and price != ''"><![CDATA[AND price = #{price}]]></if>
			<if test="storeUnit != null and storeUnit != ''"><![CDATA[AND store_unit = #{storeUnit}]]></if>
			<if test="pid != null and pid != ''"><![CDATA[AND pid = #{pid}]]></if>
			<if test="sales != null and sales != ''"><![CDATA[AND sales = #{sales}]]></if>
			<if test="status != null and status != ''"><![CDATA[AND status = #{status}]]></if>
			<if test="version != null and version != ''"><![CDATA[AND version = #{version}]]></if>
			<if test="ctime != null and ctime != ''"><![CDATA[AND ctime = #{ctime}]]></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="sku != null"><![CDATA[sku = #{sku},]]></if>
			<if test="title != null"><![CDATA[title = #{title},]]></if>
			<if test="price != null"><![CDATA[price = #{price},]]></if>
			<if test="storeUnit != null"><![CDATA[store_unit = #{storeUnit},]]></if>
			<if test="pid != null"><![CDATA[pid = #{pid},]]></if>
			<if test="sales != null"><![CDATA[sales = #{sales},]]></if>
			<if test="status != null"><![CDATA[status = #{status},]]></if>
			<if test="version != null"><![CDATA[version = #{version},]]></if>
			<if test="ctime != null"><![CDATA[ctime = #{ctime},]]></if>
		</set>
	</sql>

	<!-- 返回插入的编号,在事务开启状态下有效 -->
	<select id="lastSequence" resultType="int"><![CDATA[SELECT LAST_INSERT_ID() AS id]]></select>

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

	<!-- 查询,通过主键IN(array) -->
	<select id="selectEntryArray" parameterType="java.lang.reflect.Array" resultType="productSkuPop">
		<![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="productSkuPop" resultType="productSkuPop">
		<![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="productSkuPop" resultType="int">
		<![CDATA[SELECT COUNT(id) AS dataCount]]>
		<include refid="QUERY_FROM_TABLE"/>
		<include refid="QUERY_WHERE_CLAUSE"/>
	</select>
	
	<!-- 其它SQL语句 -->
	
	<select id="findBySkuList" parameterType="java.util.List" resultType="productSkuPop">
		SELECT id,sku,title,price,store_unit AS storeUnit, pid,
		sales, status, version, ctime
		FROM
		product_pop_sku
		WHERE sku IN
		<foreach collection="list" item="item" separator="," open="(" close=")">
			#{item}
		</foreach>
	</select>
	
	<select id="findBySkuListWithVersion" parameterType="java.util.List" resultType="productSkuPop">
		SELECT id,sku,title,price,store_unit AS storeUnit,pid,
		sales, status, version, ctime
		FROM
		product_pop_sku
		WHERE
		<foreach collection="list" item="item" separator=" OR ">
			(sku = #{item.sku})
		</foreach>
<!-- 		<foreach collection="list" item="item" separator=" OR "> -->
<!-- 			(sku = #{item.sku} AND version = #{item.version}) -->
<!-- 		</foreach> -->
	</select>
	
	<!-- 通过sku,版本控制,如果有人更新过,则版本无法对应,如果有人删除,则状态无法对应-->
	<update id="updatePopSku" parameterType="java.util.Map">
		<![CDATA[UPDATE product_pop_sku]]>
		SET
		title = #{sku.title},price = #{sku.price},store_unit = #{sku.storeUnit},
		version = version + 1, utime= now()
		<![CDATA[WHERE sku = #{sku.sku} AND version = #{version}]]>
	</update>
	
	<!-- 逻辑删除,通过sku,版本控制,如果有人更新过,则版本无法对应,如果有人删除,则状态无法对应-->
	<update id="updateSkuStatus" parameterType="java.util.Map">
		<![CDATA[UPDATE product_pop_sku]]>
		SET
		status = #{status}, version = version + 1, utime= now()
		<![CDATA[WHERE sku = #{sku} AND version = #{version}]]>
	</update>
	
	<!-- 根据pid批量删除,逻辑删除-->
	<update id="deleteByPid" parameterType="java.util.Map">
		<![CDATA[UPDATE product_pop_sku]]>
		SET
		status = #{status}, version = version + 1, utime= now()
		<![CDATA[WHERE pid = #{pid}  AND status=#{onsale}]]>
	</update>
	
	<!-- 插入product_pop_sku记录,使用自增id -->
	<insert id="insertEntry" parameterType="productSkuPop" >
		<![CDATA[
			INSERT INTO product_pop_sku (sku,title,price,store_unit, pid,
		sales, status, version, ctime, utime)
			VALUES (#{sku},#{title},#{price},#{storeUnit},
			#{pid},#{sales},#{status},#{version},now(), now())
		]]>
	</insert>
</mapper>