型;
当结果集中包括 LOB 数据时,需要在结果集映射配置项中指定对应的 Handler 类,下面我们采用 Spring 所提供的实现类对 Post 结果集的映射进行配置。
清单 12 . 对 LOB 数据进行映射
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="Post">
<typeAlias alias="post" type="com.baobaotao.domain.Post"/>
<resultMap id="result" class="post">
<result property="postId" column="post_id"/>
<result property="userId" column="user_id"/>
<result property="postText" column="post_text" ① 读取 CLOB 类型数据
typeHandler="org.springframework.orm.ibatis.support.ClobStringTypeHandler"/>
<result property="postAttach" column="post_attach" ② 读取 BLOB 类型数据
typeHandler="org.springframework.orm.ibatis.support.BlobByteArrayTypeHandler"/>
</resultMap>
<select id="getPost" resultMap="result">
SELECT post_id,user_id,post_text,post_attach,post_time
FROM t_post WHERE post_id =#postId#
</select>
<insert id="addPost">
INSERT INTO t_post(user_id,post_text,post_attach,post_time)
VALUES(#userId#,
#postText,handler=org.springframework.orm.ibatis.support.ClobStringTypeHandler#, ③
#postAttach,handler=org.springframework.orm.ibatis.support.BlobByteArrayTypeHandler#, ④
#postTime#)
</insert>
</sqlMap>
Spring让LOB数据操作变得简单易行(8)
时间:2011-02-14 IBM 陈雄华
提示
为每一个 LOB 类型字段分别指定处理器并不是一个好主意,iBatis 允许在 sql-map-config.xml 配置文件中通过 <typeHandler> 标签统一定义特殊类型数据的处理器,如:
<typeHandler jdbcType="CLOB" javaType="java.lang.String" callback="org.springframework.orm.ibatis.support.ClobStringTypeHandler"/>
当 iBatis 引擎从结果集中读取或更改 LOB 类型数据时,都需要指定处理器。我们在 ① 和 ② 处为读取 LOB 类型的数据指定处理器,相似的,在 ③ 和 ④ 处为插入 LOB 类型的数据也指定处理器。
此外,我们还必须为 SqlClientMap 提供一个 LobHandler:
清单 13. 将 LobHandler 注入到 SqlClientMap 中
<bean id="lobHandler" class="org.springframework.jdbc.support.lob.DefaultLobHandler"
lazy-init="true" />
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="lobHandler" ref="lobHandler" /> ①设置LobHandler
<property name="configLocation"
value="classpath:com/baobaotao/dao/ibatis/sql-map-config.xml" />
</bean>
处理 LOB 数据时,Spring 要求在事务 |