<?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.mingsoft.job.dao.IJobDao">
    <!-- 表字段 -->
    <sql id="column_list">
        j.jobid,j.name,j.number,j.address,j.createdatetime,j.updatedatetime,j.status,j.email,j.requirements,j.type,j.orgid,j.duty,r.orgname,r.parentid
    </sql>
	<!-- 将实体属性与表字段对接开始 -->    
    <resultMap id="resultMap" type="com.mingsoft.job.entity.JobEntity">
       <id column="jobid" property="jobid" />
       <result column="name" property="name" />
       <result column="number" property="number" />
       <result column="address" property="address" />
       <result column="createdatetime" property="createdatetime" />
       <result column="updatedatetime" property="updatedatetime" />
       <result column="status" property="status" />
       <result column="email" property="email" />
       <result column="requirements" property="requirements" />
       <result column="type" property="type" />
       <result column="duty" property="duty" />
	<association property="org" column="orgid" javaType="com.mingsoft.job.entity.OrgEntity">
	   <result property="orgid" column="orgid" />
	   <result property="orgname" column="orgname" />
	   <result property="parentid" column="parentid" />
	</association>
    </resultMap>
	<!-- 将实体属性与表字段对接结束 -->
    <!-- 新增 -->
    <insert id="saveEntity" useGeneratedKeys="true" keyProperty="jobid"
       parameterType="com.mingsoft.job.entity.JobEntity">
       insert into job
       <trim prefix="(" suffix=")" suffixOverrides=",">
           <if test="name != null">name,</if>
           <if test="number != null">number,</if>
           <if test="address != null">address,</if>
           <if test="createdatetime != null">createdatetime,</if>
           <if test="updatedatetime != null">updatedatetime,</if>
           <if test="status != null">status,</if>
           <if test="email != null">email,</if>
           <if test="requirements != null">requirements,</if>
           <if test="type != null">type,</if>
           <if test="orgid != null">orgid,</if>
           <if test="duty != null">duty,</if>
       </trim>
       <trim prefix="values (" suffix=")" suffixOverrides=",">
           <if test="name != null">#{name},</if>
           <if test="number != null">#{number},</if>
           <if test="address != null">#{address},</if>
           <if test="createdatetime != null">#{createdatetime},</if>
           <if test="updatedatetime != null">#{updatedatetime},</if>
           <if test="status != null">#{status},</if>
           <if test="email != null">#{email},</if>
           <if test="requirements != null">#{requirements},</if>
           <if test="type != null">#{type},</if>
           <if test="orgid != null">#{orgid},</if>
           <if test="duty != null">#{duty},</if>
       </trim>
    </insert>
    <!-- 查询 -->
    <select id="queryAll" resultMap="resultMap" parameterType="java.lang.String">
       select
       <include refid="column_list" />
       from job j , org r where j.orgid = r.orgid
    </select>
    <!-- 查询带分页 -->
    <select id="query" resultMap="resultMap" parameterType="java.util.Map">
       select
       <include refid="column_list" />
       from job j , org r 
       <where>
       	j.orgid = r.orgid
	   	<if test="whereMap!=null">
	   		<if test="whereMap.name!=null">
	   			and j.name like CONCAT('%',#{name},'%')
	   		</if>
	   		<if test="whereMap.address!=null">
	   			and j.address = #{address}
	   		</if>
			<if test="whereMap.status!=null">
				and j.status in 
				<foreach collection="whereMap.status" item="status" index="index" open="(" separator="," close=")">
					#{status}
				</foreach>
			</if>
			<if test="whereMap.type!=null">
				and j.type in 
				<foreach collection="whereMap.type" item="type" index="index" open="(" separator="," close=")">
					#{type}
				</foreach>
			</if>
	   			   			   			   		
	   	</if>
	   </where>
       <if test="orderBy != null">
           order by ${orderBy}
       </if>
       <if test="order != null">
           ${order}
       </if>
    </select>
    
	<!-- 根据ID查找实体 -->
	<select id="getEntity" resultMap="resultMap" parameterType="int">
       select
       <include refid="column_list" />
        from job j , org r where j.orgid = r.orgid and j.jobid = #{jobid}
	</select>

    
	<!--查询会员已申请的职位  -->    
    <select id="queryApply" resultMap="resultMap" >
       select
       j.jobid, j.name, j.number, j.address, j.createdatetime, j.updatedatetime, j.status, j.email, j.requirements, j.type, j.orgid, j.duty
       from job as j, people_job as p
       <where>
			j.jobid = p.jobid and p.peopleId = #{peopleId}
	   </where>
       <if test="orderBy != null">
           order by ${orderBy}
       </if>
       <if test="order != null">
           ${order}
       </if>
    </select>
    
    	<!--查询会员已申请职位数  -->    
    <select id="countApply" resultType="int">
       select count(1) from job b 
       <where>
				b.jobid IN (
		SELECT
			j.jobid
		FROM
			people_job j
		WHERE
			j.peopleid = #{peopleId}
		)
	   </where>
    </select>      
    
    
    <!-- 更新 -->
    <update id="updateEntity" parameterType="com.mingsoft.job.entity.JobEntity">
       update job
       <set>
           <if test="name != null">name=#{name},</if>
           <if test="number != null">number=#{number},</if>
           <if test="address != null">address=#{address},</if>
           <if test="createdatetime != null">createdatetime=#{createdatetime},</if>
           <if test="updatedatetime != null">updatedatetime=#{updatedatetime},</if>
           <if test="status != null">status=#{status},</if>
           <if test="email != null">email=#{email},</if>
           <if test="requirements != null">requirements=#{requirements},</if>
           <if test="type != null">type=#{type},</if>
           <if test="orgid != null">orgid=#{orgid},</if>
           <if test="duty != null">duty=#{duty},</if>
       </set>
       where jobid=#{jobid}
    </update>
    
    <!-- 更新状态 -->
    <update id="updateJobStatus" parameterType="com.mingsoft.job.entity.JobEntity">
       update job
       <set>
           <if test="updatedatetime != null">updatedatetime=#{updatedatetime},</if>
           <if test="status != null">status=#{status},</if>
       </set>
       where jobid=#{jobid}
    </update> 
       
    <!-- 删除 -->
    <delete id="deleteEntity">
       delete from job
       where 
       jobid =#{jobid}
       and peopleId = #{peopleId} 
    </delete>
</mapper>
