ibatis : sqlMap 的一般配置

// 比较标准的sqlMap配置,省略sql-map-config.xml.. CebitCorpInfo.xml <?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="CebitCorpInfo"> <typeAlias alias="supply" type="com.biz518.product.domain.Supply" /> <resultMap id="info_map" class="com.biz.cebit.domain.CebitCorpInfo"> <result property="id" column="id"/> <result property="title" column="title"/> <result property="content" column="content" jdbcType="CLOB" javaType = "java.lang.String"/> <result property="issdate" column="issdate"/> <result property="corpid" column="corpid"/> </resultMap> <select id="getCebitCorpInfoById" parameterClass="java.lang.Integer" resultMap="info_map"> select * from cebitcorpinfo where id = #value# </select> <select id="getCebitCorpInfoListByCorp" parameterClass="java.lang.Integer" resultClass="com.biz.cebit.domain.CebitCorpInfo"> select * from cebitcorpinfo where corpid = #value# </select> <update id="updateCebitCorpInfo" parameterClass="com.biz.cebit.domain.CebitCorpInfo"> update cebitcorpinfo set <isNotEqual prepend="" property="id" compareValue="0"> id=#id# </isNotEqual> <isNotEmpty prepend="," property="title"> title=#title# </isNotEmpty> <isNotEmpty prepend="," property="content"> content=#content# </isNotEmpty> <isNotEqual prepend="," property="corpid" compareValue="0"> corpid=#corpid# </isNotEqual> <isNotEmpty prepend="," property="issdate"> issdate=#issdate# </isNotEmpty> <dynamic prepend="where"> <isNotEqual prepend="" property="id" compareValue="0"> id=#id# </isNotEqual> </dynamic> </update> <delete id="delCebitCorpInfoById" parameterClass="java.lang.Integer"> delete from cebitcorpinfo where id = #value# </delete> <insert id="insertCebitCorpInfo" parameterClass="com.biz.cebit.domain.CebitCorpInfo"> <selectKey resultClass="int" keyProperty="id"> SELECT seq_cebitcorpinfo.NEXTVAL FROM DUAL </selectKey> insert into cebitcorpinfo( < isNotEmpty prepend="" property="id"> id </ isNotEmpty > <isNotEmpty prepend="," property="title"> title </isNotEmpty> <isNotEmpty prepend="," property="content"> content </isNotEmpty> < isNotEmpty prepend="," property="corpid"> corpid </ isNotEmpty > <isNotEmpty prepend="," property="issdate"> issdate </isNotEmpty> )values( < isNotEmpty prepend="" property="id"> #id# </ isNotEmpty > <isNotEmpty prepend="," property="title"> #title# </isNotEmpty> <isNotEmpty prepend="," property="content"> #content# </isNotEmpty> < isNotEmpty prepend="," property="corpid"> #corpid# </ isNotEmpty > <isNotEmpty prepend="," property="issdate"> #issdate# </isNotEmpty> ) </insert> </sqlMap> // typeAlias 别名 // parameterClass 是指传入的参数类型 // 当查询结果中有 CLOB 时,可以使用 resultMap 来处理 (一般正常情况直接用 resultClass = 某个VO类) // <isNotEqual prepend="" property="id" compareValue="0"> id = #id# </isNotEqual> 意思是当这个 id (property) 不等于( isNotEqual ) 0 ( compareValue ) 的时候 , 添加 id = #id# , prepend是"预先"的意思,指在 id = #id# 前面需要加的 // isNotEmpty 和 isNotEqual 类似,意思是 不为空时. 由于 id 是 int 类型,所以用了 isNotEqual // <dynamic prepend="where"> 是指 当满足条件时,动态加一个 where // <selectKey > 支持主键自动生成,keyProperty="id"定义了主键名称 <!-- Oracle --> <insert id="insertProduct-ORACLE" parameterClass="com.domain.Product"> <selectKey resultClass="int" keyProperty="id" > SELECT STOCKIDSEQUENCE.NEXTVAL AS ID FROM DUAL </selectKey> insert into PRODUCT (PRD_ID,PRD_DESCRIPTION) values (#id#,#description#) </insert> <!-- Microsoft SQL Server --> <insert id="insertProduct-MS-SQL" parameterClass="com.domain.Product"> insert into PRODUCT (PRD_DESCRIPTION) values (#description#) <selectKey resultClass="int" keyProperty="id" > SELECT @@IDENTITY AS ID </selectKey> insert 对应数据库的 insert 操作,该操作返回本次操作插入记录的主键值。 select 对应数据库的 select 操作,该操作返回特定的 POJO 或 对象。 update 对应数据库的 update 操作,该操作返回被更新的记录个数。 delete 对应数据库的 delete 操作,该操作返回被删除的记录个数。 procedure 对应数据库存储过程。 statement 类型最为通用,可以代替以上所有的类型。但由于缺乏操作直观性故不推荐。 </insert> // 注意: 当数据库字段名和类中属性名不一样时,需要隐式转换下,DEMO如下: <statement id="getPoduct" resultClass="com.iatis.example.Product"> select PRD_ID as id, PRD_DESCRIPTION as description from PRODUCT where PRD_ID = #value# </statement> 动态 Mapped Statement 之 Iterate Iterate 的属性: prepend - 可被覆盖的 SQL 语句组成部分,添加在语句的前面(可选) property - 类型为 java.util.List 的用于遍历的元素(必选) open - 整个遍历内容体开始的字符串,用于定义括号(可选) close -整个遍历内容体结束的字符串,用于定义括号(可选) conjunction - 每次遍历内容之间的字符串,用于定义 AND 或 OR(可选) 例子: 遍历类型为 java.util.List 的元素。 <iterate prepend="AND" property="uerNameList" open="(" close=")" onjunction="OR" > username=#userNameList[]# </iterate> // 注意:使用<iterate>时,在List元素名后面包括方括号[]非常重要,方括号[]将对象标记为List,以防解析器简单地将List输出成String。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值