ibatis
Posted 十一路客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ibatis相关的知识,希望对你有一定的参考价值。
1.ibatis插入操作时,允许为null的字段必须设置字段对应的类型。
https://www.cnblogs.com/mqyg/p/4046513.html
2. ibatis相关操作
(1)oracle批量插入
<insert id="hdBatchInsertInheritorAttachment" parameterClass="java.util.List">
INSERT
INTO AONE_RUS_HD_INHERITOR_FILE(col1,col2,col3,col4,col5)
SELECT SEQ_AONE_RUS_HD_INHERITOR_FILE.nextval, A.* from(
<iterate conjunction=" union all ">
SELECT
#list[].open_task_id:NUMERIC#,
#list[].col1:NUMERIC#,
#list[].col2:VARCHAR#,
#list[].col3:VARCHAR#,
#list[].col4:NUMERIC#,
#list[].col5:TIMESTAMP#
FROM DUAL
</iterate>
)A
</insert>
(2)动态查询
1)dynamic的prepend只要检测到第一个为“真”的条件比较元素,则覆盖其prepend属性并组装where关键字为动态SQL的一部分。
2)isNotNull的prepend只要检测到参数值满足比较条件,则前置组装and关键字为动态SQL的一部分。
注意一点:上面的例子中,ibtis文档中说 - dynamic元素中的prepend属性“where”将覆盖第一个为“真”的条件比较元素(即isGreaterThan)的prepend属性
按照这个理解,则第一个为“真”的条件比较元素(即isGreaterThan)的prepend属性是不需要的,或者“and”是不需要的,(ibatis文档中的原文是 For example, in the case of the first true condition, there is no need for the AND, and in fact it would break the statement) 来自 <https://blog.csdn.net/huyanzhiwei/article/details/52186396>
<select id="queryStatisticResultList" parameterClass="StatisticBean" resultClass="StatisticResult">
SELECT
FROM tb_Info t
LEFT JOIN tb_fb fb ON t.id = fb.refid
<dynamic prepend="where">
<!-- 更新日期 -->
<isNotEmpty prepend="and" property="dateFrom">
<![CDATA[
t.updatedate >= to_date(#dateFrom#||'00:00:00',
'yyyy-mm-dd hh24:mi:ss')
]]>
</isNotEmpty>
<isNotEmpty prepend="and" property="dateTo">
<![CDATA[
t.updatedate <= to_date(#dateTo#||'23:59:59',
'yyyy-mm-dd hh24:mi:ss')
]]>
</isNotEmpty>
<!-- 不区分大小写 -->
<isNotEmpty prepend="and" property="dataVersion">
upper(t.data_version) like
upper('%'||#dataVersion#||'%')
</isNotEmpty>
<isNotNull prepend="and" property="issueArr">
<iterate property="issueArr" open="(" close=")"
conjunction="or">
upper(t.issue) like
upper('%'||#issueArr[]#||'%')
</iterate>
</isNotNull>
<isNotNull prepend="and" property="issueTypeArr">
<iterate property="issueTypeArr" open="(" close=")"
conjunction="or">
upper(t.issuetype) like
upper('%'||#issueTypeArr[]#||'%')
</iterate>
</isNotNull>
<isNotNull prepend="and" property="dataStatusArr">
<iterate property="dataStatusArr" open="(" close=")"
conjunction="or">
fb.datastatus like
('%'||#dataStatusArr[]#||'%')
</iterate>
</isNotNull>
<!--不区分大小写 -->
<isNotEmpty prepend="and" property="dataVersion">
upper(t.data_version) like
upper('%'||#dataVersion#||'%')
</isNotEmpty>
<isNotNull prepend="and" property="issueArr">
<iterate property="issueArr" open="(" close=")"
conjunction="or">
upper(t.issue) like
upper('%'||#issueArr[]#||'%')
</iterate>
</isNotNull>
</dynamic>
</select>
(3)批量更新
<!-- 更新无效工单状态 -->
<update id="updateNullityStatus" parameterClass="com.test.infomanager.model.CommonBean">
update test_table set status='04' ,
IsExported='1',lastmoddate=#lastmoddate#
<dynamic prepend="where">
ID in
<iterate property="idArr" open="(" close=")" conjunction=",">
#idArr[]#
</iterate>
</dynamic>
</update>
以上是关于ibatis的主要内容,如果未能解决你的问题,请参考以下文章