<?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.${bean.pacageName}.dao.${bean.classOracleName}Dao">
	<!-- Result Map -->
	<resultMap id="BaseResultMap" type="com.${bean.pacageName}.bean.${bean.classOracleName}">
	    <#list bean.fields as field>
	    <result column="${field.fieldName}" property="${field.fieldJavaName}"/>
		</#list>
	</resultMap>

	<!-- ${bean.tableName} table all fields -->
	<sql id="Base_Column_List">
		<#list bean.fields as field><#if field_index==0>${field.fieldName}</#if><#if field_index!=0>,${field.fieldName}</#if></#list>
	</sql>

	<!-- 公共查询条件 -->
	<sql id="Example_Where_Clause">
		where 1=1
		<#list bean.fields as field>
		<if test="bean.${field.fieldJavaName}!=null <#if field.fieldType=="VARCHAR2">and bean.${field.fieldJavaName}!=''</#if>">and ${field.fieldName} = _#_{bean.${field.fieldJavaName}, <#if field.fieldType=="VARCHAR2">jdbcType=VARCHAR</#if><#if field.fieldType=="NUMBER">jdbcType=DOUBLE</#if><#if field.fieldType!="VARCHAR2" && field.fieldType!="NUMBER">jdbcType=${field.fieldType}</#if>}</if>
		</#list>
	</sql>

	<!-- 添加记录(所有字段) -->
	<insert id="save" parameterType="Object"  >
	    <selectKey keyProperty="bean.id" resultType="String" order="BEFORE" >
			select lower(sys_guid()) from dual
		</selectKey>
		insert into ${bean.tableName}
		(
		<#list bean.fields as field><#if field_index==0>${field.fieldName}</#if><#if field_index!=0>,${field.fieldName}</#if></#list>
		)
		values 
		(
		<#list bean.fields as field>
		<#if field_index==0>_#_{bean.${field.fieldJavaName}}</#if><#if field_index!=0>,_#_{bean.${field.fieldJavaName},<#if field.fieldType=="VARCHAR2">jdbcType=VARCHAR</#if><#if field.fieldType=="NUMBER">jdbcType=DOUBLE</#if><#if field.fieldType!="VARCHAR2" && field.fieldType!="NUMBER" >jdbcType=${field.fieldType}</#if>}
		</#if>
		</#list>
		)
	</insert>

	<!-- 修改记录,只修改只不为空的字段 -->
	<update id="update" parameterType="Object">
	
		update ${bean.tableName}
		<set>
			<#list bean.fields as field>
			<if test="bean.${field.fieldJavaName} != null <#if field.fieldType=="VARCHAR2">and bean.${field.fieldJavaName}!=''</#if>" >${field.fieldName} = _#_{bean.${field.fieldJavaName}, <#if field.fieldType=="VARCHAR2">jdbcType=VARCHAR</#if><#if field.fieldType=="NUMBER">jdbcType=DOUBLE</#if><#if field.fieldType!="VARCHAR2" && field.fieldType!="NUMBER" >jdbcType=${field.fieldType}</#if>} </if>
			</#list>
		</set>
		where id = _#_{id}

	</update>

	<!-- 删除记录 -->
	<delete id="delete" parameterType="Object">
		delete from ${bean.tableName} where id=_#_{id}
	</delete>
	
	<update id="deleteFlagById" parameterType="Object" >
		update ${bean.tableName} set del_tag = 1 where id=_#_{id}
	</update>

	<!-- 根据id查询 -->
	<select id="getById" resultMap="BaseResultMap" parameterType="Object">
		select <include refid="Base_Column_List" /> from ${bean.tableName} where del_tag=0 and id=_#_{id}
	</select>

	<!-- 列表总数 -->
	<select id="queryByCount" resultType="java.lang.Integer" parameterType="Object">
		select count(1) from ${bean.tableName} <include refid="Example_Where_Clause" />
	</select>
	<!-- 查询列表 -->
	<select id="getList" resultMap="BaseResultMap" parameterType="Object">
		select <include refid="Base_Column_List" /> from ${bean.tableName} <include refid="Example_Where_Clause" />
	</select>
</mapper>