- <?xmlversion="1.0"encoding="UTF-8"?>
- <!DOCTYPEsqlMap
- PUBLIC"-//iBATIS.com//DTDSQLMap2.0//EN"
- "http://www.ibatis.com/dtd/sql-map-2.dtd">
- <sqlMapnamespace="User">
- <!--定义该映射文件的Cache机制-->
- <cacheModeltype="LRU"id="userCache">
- <!--设定缓存存活的时间-->
- <flushIntervalhours="24"/>
- <!--设定指定的操作,清空缓存-->
- <flushOnExecutestatement="updateUser"/>
- <!--设定缓存的容量(对象)-->
- <propertyname="size"value="1000"/>
- </cacheModel>
- <!--定义别名-->
- <typeAliasalias="user"type="com.wyq.pojo.User"/>
- <!--通过缓存可以提高查询效率-->
- <selectid="getUsers"
- parameterClass="java.lang.Integer"
- resultClass="user"cacheModel="userCache">
- <!--采用!【DATA[]】格式,是为了避免sql重的字符与xml映射文件的合法性造成影响-->
- <![CDATA[
- selectid,name,sexfromt_user
- ]]>
- </select>
- <updateid="updateUser"parameterClass="user">
- <![CDATA[
- updatet_usersetname=#name#,sex=#sex#whereid=#id#
- ]]>
- </update>
- <insertid="insertUser"parameterClass="user">
- insertintot_user(name,sex)values(#name#,#sex#)
- </insert>
- <deleteid="deleteUser"parameterClass="java.lang.String">
- deletefromt_userwhereid=#value#
- </delete>
- </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 则大多用于嵌套查询以及存储过程的。
- <resultMapid="get_user_result"class="user">
- <resultproperty="name"column="xingming"
- jdbcType="VARCHAR"javaType="java.lang.String"/>
- <resultproperty="sex"column="xingbie"
- jdbcType="int"javaType="java.lang.Integer"/>
- <resultproperty="id"column="id"
- jdbcType="int"javaType="java.lang.Integer"/>
- </resultMap>
- <parameterMapid="update_user_para"class="redemption">
- <parameterproperty="name"
- jdbcType="VARCHAR"
- javaType="java.lang.String"
- nullValue=""
- />
- <parameterproperty="sex"
- jdbcType="int"
- javaType="java.lang.Integer"
- nullValue=""
- />
- </parameterMap>
- <procedureid="getUserList"
- resultMap="get_user_result"
- >
- {callsp_getUserList()}
- </procedure>
- <procedureid="doUserUpdate"
- parameterMap="update_user_para"
- >
- {callsp_doUserUpdate(#id#,#name#,#sex#)}
- </procedure>