惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

腾讯CDC
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
P
Proofpoint News Feed
D
DataBreaches.Net
D
Docker
云风的 BLOG
云风的 BLOG
大猫的无限游戏
大猫的无限游戏
月光博客
月光博客
J
Java Code Geeks
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
罗磊的独立博客
Martin Fowler
Martin Fowler
U
Unit 42
Engineering at Meta
Engineering at Meta
IT之家
IT之家
Vercel News
Vercel News
B
Blog RSS Feed
人人都是产品经理
人人都是产品经理
博客园 - Franky
博客园 - 【当耐特】
Stack Overflow Blog
Stack Overflow Blog
G
Google Developers Blog
MongoDB | Blog
MongoDB | Blog

博客园 - 王永庆

java编程思想(3)感悟(9)---控制程序流 - 王永庆 - 博客园 ibatis学习笔记(5) - 王永庆 - 博客园 ibatis学习笔记(4) - 王永庆 - 博客园 ibatis学习笔记(2) ibatis学习笔记(1) Java编程思想3感悟(8)---一切都是对象 java编程思想3感悟(7)---抽象基类和接口、并发 java编程思想3感悟(6)---是一个与像是一个关系和伴随多态的可互换对象 java编程思想3感悟(5)---复用具体实现和复用接口 java编程思想3感悟(4)---被隐藏的具体实现 java编程思想3感悟(3)---每个对象都提供服务 java编程思想3感悟(2)---每个对象都有一个接口(方法) JSP处理表单的一些经验分享 Java语言异常处理(转载) log4j学习笔记2 Spring控制反转(IoC)的理解 java编程思想3感悟(1)---java的5个特性 bat文件说明 sql学习笔记(二)-----游标的使用
ibatis学习笔记(3) - 王永庆 - 博客园
王永庆 · 2007-11-25 · via 博客园 - 王永庆

ibatis映射文件的书写:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap
PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-2.dtd"
>
<sqlMap namespace="User">
    
<!-- 定义该映射文件的Cache机制 -->
    
<cacheModel type="LRU" id="userCache">
        
<!-- 设定缓存存活的时间 -->
        
<flushInterval hours="24"/>
        
<!-- 设定指定的操作,清空缓存 -->
        
<flushOnExecute statement="updateUser"/>
        
<!-- 设定缓存的容量(对象) -->
        
<property name="size" value="1000"/>
    
</cacheModel>
    
<!-- 定义别名 -->
    
<typeAlias alias="user" type="com.wyq.pojo.User"/>
    
<!-- 通过缓存可以提高查询效率 -->
    
<select id="getUsers" 
    parameterClass
="java.lang.Integer"
    resultClass
="user" cacheModel="userCache">
    
<!-- 采用!【DATA[]】格式,是为了避免sql重的字符与xml映射文件的合法性造成影响 -->
    
<![CDATA[
    select id,name,sex from t_user
    
]]>
    
</select>
    
<update id="updateUser" parameterClass="user">
        
<![CDATA[
            update t_user set name=#name#,sex=#sex# where id=#id#
        
]]>
    
</update>
    
<insert id="insertUser" parameterClass="user">
        insert into t_user(name,sex) values(#name#,#sex#)
    
</insert>
    
<delete id="deleteUser" parameterClass="java.lang.String">
        delete from t_user where id=#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 则大多用于嵌套查询以及存储过程的

<resultMap id="get_user_result" class="user">
<result property="name" column="xingming"
jdbcType
="VARCHAR" javaType="java.lang.String"/>
<result property="sex" column="xingbie"
jdbcType
="int" javaType="java.lang.Integer"/>
<result property="id" column="id"
jdbcType
="int" javaType="java.lang.Integer"/>
</resultMap>
<parameterMap id="update_user_para" class="redemption" >
<parameter property="name"
jdbcType
="VARCHAR"
javaType
="java.lang.String"
nullValue
=""
/>
<parameter property="sex"
jdbcType
="int"
javaType
="java.lang.Integer"
nullValue
=""
/>
</parameterMap>
<procedure id="getUserList"
resultMap
="get_user_result"
>
{call sp_getUserList()}
</procedure>
<procedure id="doUserUpdate"
parameterMap
="update_user_para"
>
{call sp_doUserUpdate(#id#,#name#,#sex#)}
</procedure>