USER_TEST_HPP_SqlMap.xml相关配置

<?xml version="1.0" encoding="UTF-8" ?>

<!-- 声明sqlMap片段: -->
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd" >

<!-- @author Wu,Yang -->
<!-- 不加namespace,那么所有sqlMap里 标签的id都不允许相同,是区别sqlMap的 -->
<sqlMap namespace="USER_TEST_HPP">

  <!-- typeAlias其实就是将bean的替换成一个短的名字 -->
    <typeAlias alias="userTestHpp" type="com.ebiz.bp_mysql.domain.UserTestHpp" />

    <cacheModel id="oneDayCache" type="OSCACHE">
    <!-- 每24小时刷新一次, 一个cacheModel只有一个flushInterval缓存
    OSCache的配置比较活的,你可以根据你的情况进行相应的配置。它主要是针对页面级的对象。
           简单的说,缓存就是Map<key,value>,创建缓存就是添加一个map,使用就是通过key取value.-->
        <flushInterval hours="24" />
        <flushOnExecute statement="insertUserTestHpp" />
        <flushOnExecute statement="updateUserTestHpp" />
        <flushOnExecute statement="deleteUserTestHpp" />
    </cacheModel>

<!-- resultmap结果集的映射,就是将返回的记录逐个字段的映射赋值给对象的属性上 -->
    <resultMap id="userTestHppResultForList" class="userTestHpp">
        <result column="ID" property="id" jdbcType="INTEGER" />
        <result column="USER_NAME" property="user_name" jdbcType="VARCHAR" />
        <result column="REAL_NAME" property="real_name" jdbcType="VARCHAR" />
        <result column="SEX" property="sex" jdbcType="INTEGER" />
        <result column="AGE" property="age" jdbcType="INTEGER" />
        <result column="EDUCATION" property="education" jdbcType="INTEGER" />
        <result column="BIRTH_YEAR" property="birth_year" jdbcType="TIMESTAMP" />
        <result column="USER_DESC" property="user_desc" jdbcType="INTEGER" />
        <result column="IS_DEL" property="is_del" jdbcType="INTEGER" />
    </resultMap>

    <resultMap id="userTestHppResult" class="userTestHpp" extends="userTestHppResultForList">
    </resultMap>

    <sql id="sf-userTestHpp"><!-- 空格加and空格 表示条件判断where -->
    <!--isNotEmpty 动态的判定条件是否存在 -->
        <isNotEmpty prepend=" and " property="id">a.ID = #id:INTEGER#</isNotEmpty>
        <isNotEmpty prepend=" and " property="user_name">a.USER_NAME = #user_name:VARCHAR#</isNotEmpty>
        <isNotEmpty prepend=" and " property="real_name">a.REAL_NAME = #real_name:VARCHAR#</isNotEmpty>
        <isNotEmpty prepend=" and " property="sex">a.SEX = #sex:INTEGER#</isNotEmpty>
        <isNotEmpty prepend=" and " property="age">a.AGE = #age:INTEGER#</isNotEmpty>
        <isNotEmpty prepend=" and " property="education">a.EDUCATION = #education:INTEGER#</isNotEmpty>
        <isNotEmpty prepend=" and " property="birth_year">a.BIRTH_YEAR = #birth_year:TIMESTAMP#</isNotEmpty>
        <isNotEmpty prepend=" and " property="user_desc">a.USER_DESC = #user_desc:INTEGER#</isNotEmpty>
        <isNotEmpty prepend=" and " property="is_del">a.IS_DEL = #is_del:INTEGER#</isNotEmpty>
        <isNotEmpty prepend=" and " property="map.not_in_id">id not in($map.not_in_id$)</isNotEmpty>
        <isNotEmpty prepend=" and " property="map.user_name_like">a.USER_NAME like '%' #map.user_name_like# '%'</isNotEmpty>
    </sql>

<!-- 这样以后改了sql,就不需要去改java代码了 -->
<!-- id表示select里的sql语句,resultClass表示返回结果的类型 -->
<!-- parameterClass表示参数的内容 -->
<!-- #表示这是一个外部调用的需要传进的参数,可以理解为占位符 -->
    <select id="selectUserTestHpp" resultMap="userTestHppResult" parameterClass="userTestHpp" cacheModel="oneDayCache">
        select * from USER_TEST_HPP a where 1 = 1
        <!-- 引入动态查询条件 -->
        <include refid="sf-userTestHpp" />
    </select>

    <select id="selectUserTestHppList" resultMap="userTestHppResultForList" parameterClass="userTestHpp" cacheModel="oneDayCache">
        select * from USER_TEST_HPP a where 1 = 1
        <include refid="sf-userTestHpp" />
        order by  USER_DESC DESC, ID DESC
        <isNotEmpty property="row.count">limit 0, #row.count#</isNotEmpty>
    </select>

    <select id="selectUserTestHppCount" resultClass="int" parameterClass="userTestHpp" cacheModel="oneDayCache">
        select count(*) from USER_TEST_HPP a where 1 = 1
        <include refid="sf-userTestHpp" />
    </select>

    <select id="selectUserTestHppPaginatedList" resultMap="userTestHppResult" parameterClass="userTestHpp" cacheModel="oneDayCache">
        select * from USER_TEST_HPP a where 1 = 1
        <include refid="sf-userTestHpp" />
        order by  USER_DESC DESC, ID DESC
        <isNotEmpty property="row.count">limit #row.first#, #row.count#</isNotEmpty>
    </select>

    <insert id="insertUserTestHpp" parameterClass="userTestHpp">
        <![CDATA[insert into USER_TEST_HPP (]]><!--CDATA 原样输出 -->
        <!-- <dynamic>内则是动态条件所相关的语句,里面填写的都是where相关的条件 对于这个动态的依赖于什么动词则为 prepend=""
        其中可以填写where也可以写group by和order by -->
        
        <dynamic prepend=" ">
            <isNotNull prepend="," property="id">ID</isNotNull>    
            <isNotNull prepend="," property="user_name">USER_NAME</isNotNull>    
            <isNotNull prepend="," property="real_name">REAL_NAME</isNotNull>    
            <isNotNull prepend="," property="sex">SEX</isNotNull>    
            <isNotNull prepend="," property="age">AGE</isNotNull>    
            <isNotNull prepend="," property="education">EDUCATION</isNotNull>    
            <isNotNull prepend="," property="birth_year">BIRTH_YEAR</isNotNull>    
            <isNotNull prepend="," property="user_desc">USER_DESC</isNotNull>    
            <isNotNull prepend="," property="is_del">IS_DEL</isNotNull>
    
        </dynamic>
        <![CDATA[) values (]]>
        <dynamic prepend=" ">
        <isNotNull prepend="," property="id"> #id:INTEGER#</isNotNull>
        <isNotNull prepend="," property="user_name"> #user_name:VARCHAR#</isNotNull>
        <isNotNull prepend="," property="real_name"> #real_name:VARCHAR#</isNotNull>
        <isNotNull prepend="," property="sex"> #sex:INTEGER#</isNotNull>
        <isNotNull prepend="," property="age">#age:INTEGER#</isNotNull>
        <isNotNull prepend="," property="education"> #education:INTEGER#</isNotNull>
        <isNotNull prepend="," property="birth_year">#birth_year:TIMESTAMP#</isNotNull>
        <isNotNull prepend="," property="user_desc"> #user_desc:INTEGER#</isNotNull>
        <isNotNull prepend="," property="is_del"> #is_del:INTEGER#</isNotNull>
        </dynamic>
        <![CDATA[)]]>
        <!-- 这里需要说明一下不同的数据库主键的生成,对各自的数据库有不同的方式: -->
        <!-- mysql:SELECT LAST_INSERT_ID() AS VALUE -->
        <!-- mssql:select @@IDENTITY as value -->
        <!-- oracle:SELECT STOCKIDSEQUENCE.NEXTVAL AS VALUE FROM DUAL -->
        <selectKey resultClass="int" keyProperty="id">SELECT LAST_INSERT_ID()</selectKey>
    </insert>

    <update id="updateUserTestHpp" parameterClass="userTestHpp">
        update USER_TEST_HPP
        <dynamic prepend="set">
        <isNotNull prepend="," property="id">ID = #id:INTEGER#</isNotNull>
        <isNotNull prepend="," property="user_name">USER_NAME = #user_name:VARCHAR#</isNotNull>
        <isNotNull prepend="," property="real_name">REAL_NAME = #real_name:VARCHAR#</isNotNull>
        <isNotNull prepend="," property="sex">SEX = #sex:INTEGER#</isNotNull>
        <isNotNull prepend="," property="age">AGE = #age:INTEGER#</isNotNull>
        <isNotNull prepend="," property="education">EDUCATION = #education:INTEGER#</isNotNull>
        <isNotNull prepend="," property="birth_year">BIRTH_YEAR = #birth_year:TIMESTAMP#</isNotNull>
        <isNotNull prepend="," property="user_desc">USER_DESC = #user_desc:INTEGER#</isNotNull>
        <isNotNull prepend="," property="is_del">IS_DEL = #is_del:INTEGER#</isNotNull>
        </dynamic>
        where 1 = 1
        <isNotEmpty prepend=" and " property="id">ID = #id#</isNotEmpty>
        <isEmpty prepend=" and " property="id">
            <isNotEmpty prepend=" " property="map.pks">
                ID in
                <iterate close=")" open="(" conjunction="," property="map.pks">#map.pks[]#</iterate>
            </isNotEmpty>
        </isEmpty>
    </update>

    <delete id="deleteUserTestHpp" parameterClass="userTestHpp">
        delete from USER_TEST_HPP where 1 = 1
            <!-- #id#里的id可以随意取,但是上面的insert则会有影响 -->
        <!-- 我们也可以这样理解,如果有#占位符,则ibatis会调用parameterClass里的属性去赋值 -->
        <isNotEmpty prepend=" and " property="id">ID = #id#</isNotEmpty>
        <isEmpty prepend=" and " property="id">
            <isNotEmpty prepend=" " property="map.pks">
                ID in
                <!-- Iterate:这属性遍历整个集合,并为List集合中的元素重复元素体的内容。
                  Iterate的属性:
                  prepend - 可被覆盖的SQL语句组成部分,添加在语句的前面(可选)
                  property - 类型为java.util.List的用于遍历的元素(必选)
                  open - 整个遍历内容体开始的字符串,用于定义括号(可选)
                  close -整个遍历内容体结束的字符串,用于定义括号(可选)
                  conjunction - 每次遍历内容之间的字符串,用于定义AND或OR(可选) -->
                <iterate close=")" open="(" conjunction="," property="map.pks">#map.pks[]#</iterate>
            </isNotEmpty>
        </isEmpty>
    </delete>

</sqlMap>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值