现在的位置: 首页 > 综合 > 正文

【Ibatis】(三)、ibatis映射文件

2013年03月28日 ⁄ 综合 ⁄ 共 2720字 ⁄ 字号 评论关闭

Xml代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE sqlMap  
  3. PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"  
  4. "http://www.ibatis.com/dtd/sql-map-2.dtd">  
  5. <sqlMap namespace="User">  
  6.     <!-- 定义该映射文件的Cache机制 -->  
  7.     <cacheModel type="LRU" id="userCache">  
  8.         <!-- 设定缓存存活的时间 -->  
  9.         <flushInterval hours="24"/>  
  10.         <!-- 设定指定的操作,清空缓存 -->  
  11.         <flushOnExecute statement="updateUser"/>  
  12.         <!-- 设定缓存的容量(对象) -->  
  13.         <property name="size" value="1000"/>  
  14.     </cacheModel>  
  15.     <!-- 定义别名 -->  
  16.     <typeAlias alias="user" type="com.wyq.pojo.User"/>  
  17.     <!-- 通过缓存可以提高查询效率 -->  
  18.     <select id="getUsers"   
  19.     parameterClass="java.lang.Integer"  
  20.     resultClass="user" cacheModel="userCache">  
  21.     <!-- 采用!【DATA[]】格式,是为了避免sql重的字符与xml映射文件的合法性造成影响 -->  
  22.     <![CDATA[ 
  23.     select id,name,sex from t_user 
  24.     ]]>  
  25.     </select>  
  26.     <update id="updateUser" parameterClass="user">  
  27.         <![CDATA[ 
  28.             update t_user set name=#name#,sex=#sex# where id=#id# 
  29.         ]]>  
  30.     </update>  
  31.     <insert id="insertUser" parameterClass="user">  
  32.         insert into t_user(name,sex) values(#name#,#sex#)  
  33.     </insert>  
  34.     <delete id="deleteUser" parameterClass="java.lang.String">  
  35.         delete from t_user where id=#value#  
  36.     </delete>  
  37. </sqlMap>  

 <statement id="statementName"
        [parameterClass="some.class.Name"] //表示输入的参数类型为Class
        [resultClass="some.class.Name"] //表示输出的参数类型为Class
        [parameterMap="nameOfParameterMap"] //表示输入的参数类型为Map
        [resultMap="nameOfResultMap"] //表示输出的参数类型为Class
        [cacheModel="nameOfCache"]
        >
        select * from t_user where sex = [?|#propertyName#]
        order by [$simpleDynamic$]
    </statement>
1、对于参数定义,尽量使用parameterClass,即直接将pojo作为statement的调用参数,如果输入的参数是java.util.map,那么map中的键值将作为输入参数,普通基本类型就是直接输入。
2、对于返回结果而言,尽量也使用resultClass,直接将字段名与pojo相对应。
3、而parameterMap与resultMap实现了pojo到数据库字段的映射配置,parameterMap 使用较少,而resultMap 则大多用于嵌套查询以及存储过程的 。

Xml代码  收藏代码
  1. <resultMap id="get_user_result" class="user">  
  2. <result property="name" column="xingming"  
  3. jdbcType="VARCHAR" javaType="java.lang.String"/>  
  4. <result property="sex" column="xingbie"  
  5. jdbcType="int" javaType="java.lang.Integer"/>  
  6. <result property="id" column="id"  
  7. jdbcType="int" javaType="java.lang.Integer"/>  
  8. </resultMap>  
  9. <parameterMap id="update_user_para" class="redemption" >  
  10. <parameter property="name"  
  11. jdbcType="VARCHAR"  
  12. javaType="java.lang.String"  
  13. nullValue=""  
  14. />  
  15. <parameter property="sex"  
  16. jdbcType="int"  
  17. javaType="java.lang.Integer"  
  18. nullValue=""  
  19. />  
  20. </parameterMap>  
  21. <procedure id="getUserList"  
  22. resultMap="get_user_result"  
  23. >  
  24. {call sp_getUserList()}  
  25. </procedure>  
  26. <procedure id="doUserUpdate"  
  27. parameterMap="update_user_para"  
  28. >  
  29. {call sp_doUserUpdate(#id#,#name#,#sex#)}  
  30. </procedure>  

抱歉!评论已关闭.