<?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.jeeplus.modules.sys.dao.DictDao">
    
	<select id="get" resultType="Dict">
		SELECT 
			* 
		FROM sys_dict 
		WHERE id = #{id}
	</select>
	
	<select id="findList" resultType="Dict">
		SELECT 
			* 
		FROM sys_dict 
		WHERE del_flag = #{DEL_FLAG_NORMAL} 
		<if test="type != null and type != ''">
			AND type = #{type}
		</if>
		<if test="description != null and description != ''">
			AND description LIKE 
					<if test="dbName == 'oracle'">'%'||#{description}||'%'</if>
					<if test="dbName == 'mysql'">CONCAT('%', #{description}, '%')</if>
		</if>
		<choose>
			<when test="page !=null and page.orderBy != null and page.orderBy != ''">
				ORDER BY ${page.orderBy}
			</when>
			<otherwise>
				ORDER BY type, sort ASC
			</otherwise>
		</choose>
	</select>
	
	<select id="findAllList" resultType="Dict">
		SELECT 
			* 
		FROM sys_dict 
		WHERE del_flag = #{DEL_FLAG_NORMAL} 
		ORDER BY type, sort, update_date DESC
	</select>
	
	<select id="findTypeList" resultType="string">
		SELECT 
			type 
		FROM sys_dict 
		WHERE del_flag = #{DEL_FLAG_NORMAL} 
		GROUP BY type
		ORDER BY type
	</select>
	
	<insert id="insert">
		INSERT INTO sys_dict(
			id, 
			value, 
			label, 
			type, 
			description, 
			sort, 
			create_by, 
			create_date, 
			update_by, 
			update_date, 
			remarks, 
			del_flag
		) VALUES (
			#{id}, 
			#{value}, 
			#{label}, 
			#{type}, 
			#{description}, 
			#{sort}, 
			#{createBy.id}, 
			#{createDate}, 
			#{updateBy.id}, 
			#{updateDate}, 
			#{remarks}, 
			#{delFlag}
		)
	</insert>
	
	<update id="update">
		UPDATE sys_dict SET 
			value = #{value}, 
			label = #{label}, 
			type = #{type}, 
			description = #{description}, 
			sort = #{sort}, 
			update_by = #{updateBy.id}, 
			update_date = #{updateDate}, 
			remarks = #{remarks}
		WHERE id = #{id}
	</update>
	
	<update id="delete">
		DELETE FROM sys_dict 
		WHERE id = #{id}
	</update>
	
	<update id="deleteByLogic">
		UPDATE sys_dict SET 
			del_flag = #{DEL_FLAG_DELETE}
		WHERE id = #{id}
	</update>
	
</mapper>