<?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="houseDao" >
<resultMap id="BaseResultMap" type="house" >
<id column="ID" property="id" jdbcType="INTEGER" />
<result column="TITLE" property="title" jdbcType="VARCHAR" />
<result column="DESCRIPTION" property="description" jdbcType="VARCHAR" />
<result column="PRICE" property="price" jdbcType="REAL" />
<result column="PUBDATE" property="pubdate" jdbcType="DATE" />
<result column="FLOORAGE" property="floorage" jdbcType="INTEGER" />
<result column="CONTACT" property="contact" jdbcType="VARCHAR" />
<!-- 开始映射外键 -->
<!-- 映射用户表 -->
<association property="users" column="user_id" select="selectUsers"/>
<!-- 映射类型表 -->
<association property="types" column="type_id" select="selectTypes"/>
<!-- 映射街道表 -->
<association property="street" column="street_id" select="selectStreet"/>
</resultMap>
<!-- 关联用户表 -->
<resultMap id="usersMapper" type="users" >
<id column="ID" property="id" jdbcType="INTEGER" />
<result column="NAME" property="name" jdbcType="VARCHAR" />
<result column="PASSWORD" property="password" jdbcType="VARCHAR" />
<result column="TELEPHONE" property="telephone" jdbcType="VARCHAR" />
<result column="USERNAME" property="username" jdbcType="VARCHAR" />
<result column="ISADMIN" property="isadmin" jdbcType="VARCHAR" />
</resultMap>
<!-- 关联街道表 -->
<resultMap id="streetMapper" type="street" >
<id column="ID" property="id" />
<result column="NAME" property="name" jdbcType="VARCHAR" />
<association property="district" column="district_id" select ="selectDirstrict"/>
</resultMap>
<!-- 关联区县表 -->
<resultMap id="districtDaoMapper" type="district" >
<id column="ID" property="id"/>
<result column="NAME" property="name"/>
</resultMap>
<!-- 在根据区县id查询一遍区县表 -->
<select id="selectDirstrict" resultMap="districtDaoMapper">
select * form district where id=#{district_id}
</select>
<!--关联类型表 -->
<resultMap id="typeMapper" type="types" >
<id column="ID" property="id"/>
<result column="NAME" property="name" jdbcType="VARCHAR" />
</resultMap>
<!-- 用户表 -->
<select id="selectUsers" resultMap="usersMapper">
select * from users where id=#{user_id}
</select>
<!-- 街道表 -->
<select id="selectStreet" resultMap="streetMapper">
select * from street where id=#{street_id}
</select>
<!-- 类型表 -->
<select id="selectTypes" resultMap="typeMapper">
select * from types where id=#{type_id}
</select>
<sql id="Base_Column_List" >
ID, USER_ID, TYPE_ID, TITLE, DESCRIPTION, PRICE, PUBDATE, FLOORAGE, CONTACT, STREET_ID
</sql>
<!--根据id查询房屋信息 -->
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
select
<include refid="Base_Column_List" />
from house
where ID = #{id,jdbcType=INTEGER}
</select>
<!-- 根据id删除房屋信息 -->
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
delete from house
where ID = #{id,jdbcType=INTEGER}
</delete>
<!-- 添加房屋信息 -->
<insert id="insert" parameterType="house" >
insert into house
(
USER_ID, TYPE_ID, TITLE,
DESCRIPTION, PRICE, PUBDATE,
FLOORAGE, CONTACT, STREET_ID
)
values
(
#{users.id,jdbcType=INTEGER},
#{types.id,jdbcType=INTEGER}, #{title,jdbcType=VARCHAR},
#{description,jdbcType=VARCHAR}, #{price,jdbcType=REAL},
#{pubdate,jdbcType=DATE}, #{floorage,jdbcType=INTEGER},
#{contact,jdbcType=VARCHAR}, #{street.id,jdbcType=INTEGER}
)
</insert>
<!-- 根据id修改房屋信息 -->
<update id="updateByPrimaryKey" parameterType="house" >
update house set
USER_ID = #{users.id,jdbcType=INTEGER},
TYPE_ID = #{types.id,jdbcType=INTEGER},
TITLE = #{title,jdbcType=VARCHAR},
DESCRIPTION = #{description,jdbcType=VARCHAR},
PRICE = #{price,jdbcType=REAL},
PUBDATE = #{pubdate,jdbcType=DATE},
FLOORAGE = #{floorage,jdbcType=INTEGER},
CONTACT = #{contact,jdbcType=VARCHAR},
STREET_ID = #{street.id,jdbcType=INTEGER}
where ID = #{id,jdbcType=INTEGER}
</update>
<!-- 动态查询房屋信息的总记录数 -->
<select id="reCount" parameterType="houseC" resultType="Integer">
select count(0) from house h
<where>
<if test="priceBegin!=null">
and h.price > #{priceBegin}
</if>
<if test="priceEnd!=null">
and h.price <![CDATA[<]]> #{priceEnd}
</if>
<!-- h.street_id是数据库的字段名 -->
<if test="street!=null">
and h.street_id = #{street.id}
</if>
<!-- h.type_id是数据库的字段名 -->
<if test="types!=null">
and h.type_id = #{types.id}
</if>
<if test="floorageBegin!=null">
and h.floorage > #{floorageBegin}
</if>
<if test="floorageEnd!=null">
and h.floorage <![CDATA[<]]> #{floorageEnd}
</if>
</where>
</select>
<!-- 分页动态查询房屋信息 -->
<select id="getHouseInfoByDymanic" parameterType="hashmap" resultType="house">
select * from house h
<where>
<if test="priceBegin!=null">
and h.price > #{priceBegin}
</if>
<if test="priceEnd!=null">
and h.price <![CDATA[<]]> #{priceEnd}
</if>
<if test="street!=null">
and h.street_id = #{street.id}
</if>
<if test="types!=null||!types==null">
and h.type_id = #{types.id}
</if>
<if test="floorageBegin!=null">
and h.floorage > #{floorageBegin}
</if>
<if test="floorageEnd!=null">
and h.floorage <![CDATA[<]]> #{floorageEnd}
</if>
</where>
limit #{stratRow},#{endRow}
</select>
<!-- 查询全部的房屋信息 -->
<select id="getHouseInfo" resultType="house">
select * from house
</select>
<!-- 分页查询全部的房屋信息 -->
<select id="getHousePage" parameterType="hashmap" resultType="house">
select * from house limit #{startRow},#{endRow}
</select>
</mapper>