CategoryAttr.xml 5.79 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.CategoryAttrDao">

    <resultMap type="categoryAttr" id="categoryAttrResultMap">
        <id property="id" column="id" />
        <result property="catId" column="cate_id" />
        <result property="attrId" column="attr_id" />
        <result property="searchable" column="searchable" />
        <result property="dealType" column="deal_type"/>
        <result property="order" column="order" />
        <association property="attribute" column="{attrId=attrId}" javaType="attribute" select="com.dili.titan.dao.AttributeDao.selectByAttrId"/>
    </resultMap>

	<!-- category_attr 所有查询列 -->
	<sql id="QUERY_COLUMN_LIST">
		<![CDATA[id,cate_id AS catId,attr_id AS attrId ,searchable,`order`,deal_type]]>
	</sql>

	<!-- category_attr 查询列来源表-->
	<sql id="QUERY_FROM_TABLE"><![CDATA[FROM category_attr]]></sql>
	
	<!-- 全部条件(更多功能可以通过queryData扩展实现)  -->
	<sql id="QUERY_WHERE_CLAUSE">
		<where>
			<if test="id != null and id != ''"><![CDATA[AND id = #{id}]]></if>
			<if test="catId != null and catId != ''"><![CDATA[AND cate_id = #{catId}]]></if>
			<if test="attrId != null and attrId != ''"><![CDATA[AND attr_id = #{attrId}]]></if>
			<if test="searchable != null and searchable != ''"><![CDATA[AND searchable = #{searchable}]]></if>
			<if test="order != null and order != ''"><![CDATA[AND `order` = #{order}]]></if>
            <if test="dealType != null and dealType != ''"><![CDATA[AND deal_type = #{dealType}]]></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="catId != null"><![CDATA[cate_id = #{catId},]]></if>
			<if test="attrId != null"><![CDATA[attr_id = #{attrId},]]></if>
			<if test="searchable != null"><![CDATA[searchable = #{searchable},]]></if>
			<if test="order != null"><![CDATA[`order` = #{order},]]></if>
            <if test="dealType != null"><![CDATA[deal_type = #{dealType},]]></if>
            <![CDATA[utime =now(),]]>
		</set>
	</sql>

	<!-- 插入category_attr记录 -->
	<insert id="insertEntry" parameterType="categoryAttr" >
		<![CDATA[
			INSERT INTO category_attr (id,cate_id,attr_id,searchable,`order`,deal_type,ctime,utime)
			VALUES (#{id},#{catId},#{attrId},#{searchable},#{order},#{dealType},now(),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 category_attr WHERE id IN]]>
		<foreach collection="array" item="id" open="(" separator="," close=")">
			<![CDATA[#{id}]]>
		</foreach>
	</delete>

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

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

	<!-- 查询,通过主键IN(array) -->
	<select id="selectEntryArray" parameterType="java.lang.reflect.Array" resultType="categoryAttr">
		<![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="categoryAttr" resultType="categoryAttr">
		<![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="categoryAttr" resultType="int">
		<![CDATA[SELECT COUNT(id) AS dataCount]]>
		<include refid="QUERY_FROM_TABLE"/>
		<include refid="QUERY_WHERE_CLAUSE"/>
	</select>
	
	<!-- 其它SQL语句 -->
	
	<insert id="batchInsert" parameterType="categoryAttr">
		<![CDATA[
		INSERT INTO category_attr (id,cate_id,attr_id,searchable,`order`,deal_type, ctime,utime)
		]]>	VALUES 
		<foreach collection="list" item="item" index="index" separator=",">
			(#{item.id},#{item.catId},#{item.attrId},#{item.searchable},#{item.order},#{item.dealType}, now(),now())
		</foreach>
	</insert>
	
	
	<select id="findByCateId" parameterType="Integer" resultType="categoryAttr">
		SELECT a.id, a.cate_id AS catId ,a.attr_id AS attrId, a.searchable,a.`order`,a.deal_type AS dealType, a.ctime ,b.required, b.name,b.inputtype,b.type
		FROM attribute b, category_attr a
		WHERE a.cate_id = #{catId} AND a.attr_id = b.id
		order by a.order asc
	</select>

	<delete id="deleteByCateId" parameterType="Integer">
		DELETE FROM category_attr WHERE cate_id = #{cateId}
	</delete>
	

    <select id="findRelationEntryByCateId" parameterType="Integer" resultMap="categoryAttrResultMap">
        SELECT a.id, a.cate_id AS catId ,a.attr_id AS attrId, a.searchable,a.`order`,a.deal_type AS dealType, a.ctime , b.name
        FROM attribute b, category_attr a
        WHERE a.cate_id = #{catId} AND a.attr_id = b.id ORDER BY a.`order` ASC
    </select>
</mapper>