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

本文介绍了一个具体的MyBatis应用案例,详细解释了如何设置LRU缓存模型、定义缓存刷新机制及参数映射。此外,还探讨了如何利用typeAlias和resultMap实现POJO与数据库字段之间的映射。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Xml代码 收藏代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!DOCTYPEsqlMap
  3. PUBLIC"-//iBATIS.com//DTDSQLMap2.0//EN"
  4. "http://www.ibatis.com/dtd/sql-map-2.dtd">
  5. <sqlMapnamespace="User">
  6. <!--定义该映射文件的Cache机制-->
  7. <cacheModeltype="LRU"id="userCache">
  8. <!--设定缓存存活的时间-->
  9. <flushIntervalhours="24"/>
  10. <!--设定指定的操作,清空缓存-->
  11. <flushOnExecutestatement="updateUser"/>
  12. <!--设定缓存的容量(对象)-->
  13. <propertyname="size"value="1000"/>
  14. </cacheModel>
  15. <!--定义别名-->
  16. <typeAliasalias="user"type="com.wyq.pojo.User"/>
  17. <!--通过缓存可以提高查询效率-->
  18. <selectid="getUsers"
  19. parameterClass="java.lang.Integer"
  20. resultClass="user"cacheModel="userCache">
  21. <!--采用!【DATA[]】格式,是为了避免sql重的字符与xml映射文件的合法性造成影响-->
  22. <![CDATA[
  23. selectid,name,sexfromt_user
  24. ]]>
  25. </select>
  26. <updateid="updateUser"parameterClass="user">
  27. <![CDATA[
  28. updatet_usersetname=#name#,sex=#sex#whereid=#id#
  29. ]]>
  30. </update>
  31. <insertid="insertUser"parameterClass="user">
  32. insertintot_user(name,sex)values(#name#,#sex#)
  33. </insert>
  34. <deleteid="deleteUser"parameterClass="java.lang.String">
  35. deletefromt_userwhereid=#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. <resultMapid="get_user_result"class="user">
  2. <resultproperty="name"column="xingming"
  3. jdbcType="VARCHAR"javaType="java.lang.String"/>
  4. <resultproperty="sex"column="xingbie"
  5. jdbcType="int"javaType="java.lang.Integer"/>
  6. <resultproperty="id"column="id"
  7. jdbcType="int"javaType="java.lang.Integer"/>
  8. </resultMap>
  9. <parameterMapid="update_user_para"class="redemption">
  10. <parameterproperty="name"
  11. jdbcType="VARCHAR"
  12. javaType="java.lang.String"
  13. nullValue=""
  14. />
  15. <parameterproperty="sex"
  16. jdbcType="int"
  17. javaType="java.lang.Integer"
  18. nullValue=""
  19. />
  20. </parameterMap>
  21. <procedureid="getUserList"
  22. resultMap="get_user_result"
  23. >
  24. {callsp_getUserList()}
  25. </procedure>
  26. <procedureid="doUserUpdate"
  27. parameterMap="update_user_para"
  28. >
  29. {callsp_doUserUpdate(#id#,#name#,#sex#)}
  30. </procedure>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值