java ibatis 参数_ibatis 常用语句 带参数的 | 学步园

本文详细介绍了Ibatis中不同类型的参数使用,包括:长整型参数删除、对象参数插入、HashMap参数查询、数组参数处理、字符串参数解析、分页查询、特殊字符处理以及include和sql标签的使用,提供了丰富的示例代码。
摘要由CSDN通过智能技术生成

Xml代码  61ea8868d73387584350db2eb5aecb1f.png

parameterClass="long">

delete from

MemberAccessLog

where

accessTimestamp = #value#

(2) 输入参数为一个对象

Xml代码  61ea8868d73387584350db2eb5aecb1f.png

parameterClass="com.fashionfree.stat.accesslog.model.MemberAccessLog>

insert into MemberAccessLog

(

accessLogId, memberId, clientIP,

httpMethod, actionId, requestURL,

accessTimestamp, extend1, extend2,

extend3

)

values

(

#accessLogId#, #memberId#,

#clientIP#, #httpMethod#,

#actionId#, #requestURL#,

#accessTimestamp#, #extend1#,

#extend2#, #extend3#

)

(3) 输入参数为一个java.util.HashMap

Xml代码  61ea8868d73387584350db2eb5aecb1f.png

parameterClass="hashMap"

resultMap="getActionIdAndActionNumber">

select

actionId, count(*) as count

from

MemberAccessLog

where

memberId = #memberId#

and accessTimestamp > #start#

and accessTimestamp <= #end#

group by actionId

(4) 输入参数中含有数组

Xml代码  61ea8868d73387584350db2eb5aecb1f.png

update

Question

set

status = #status#

#actionIds[]#

说明:actionIds为传入的数组的名字;

使用dynamic标签避免数组为空时导致sql语句语法出错;

使用isNotNull标签避免数组为null时ibatis解析出错

(5)传递参数只含有一个数组

Xml代码  61ea8868d73387584350db2eb5aecb1f.png

resultClass="hashMap">

select

moduleId, actionId

from

StatMemberAction

#[]#

order by

moduleId

说明:注意select的标签中没有parameterClass一项

另:这里也可以把数组放进一个hashMap中,但增加额外开销,不建议使用

(6)让ibatis把参数直接解析成字符串

Xml代码  61ea8868d73387584350db2eb5aecb1f.png

parameterClass="hashMap" resultClass="int">

select

count(distinct memberId)

from

MemberAccessLog

where

accessTimestamp >= #start#

and accessTimestamp < #end#

and actionId in $actionIdString$

说明:使用这种方法存在sql注入的风险,不推荐使用

(7)分页查询 (pagedQuery)

Java代码  61ea8868d73387584350db2eb5aecb1f.png

parameterClass="hashMap" resultMap="MemberAccessLogMap">

parameterClass="hashMap" resultClass="int">

select

accessLogId, memberId, clientIP,

httpMethod, actionId, requestURL,

accessTimestamp, extend1, extend2,

extend3

from

MemberAccessLog

accessTimestamp <= #accessTimestamp#

select

count(*)

from

MemberAccessLog

limit #startIndex# , #pageSize#

说明:本例中,代码应为:

HashMap hashMap = new HashMap();

hashMap.put(“accessTimestamp”, someValue);

pagedQuery(“com.fashionfree.stat.accesslog.selectMemberAccessLogBy”, hashMap);

pagedQuery方法首先去查找名为com.fashionfree.stat.accesslog.selectMemberAccessLogBy.Count 的mapped statement来进行sql查询,从而得到com.fashionfree.stat.accesslog.selectMemberAccessLogBy查询的记录个数,

再进行所需的paged sql查询(com.fashionfree.stat.accesslog.selectMemberAccessLogBy),具体过程参见utils类中的相关代码

(8)sql语句中含有大于号>、小于号<

1. 将大于号、小于号写为: > < 如:

Xml代码  61ea8868d73387584350db2eb5aecb1f.png

delete from

MemberAccessLog

where

accessTimestamp <= #value#

2. 将特殊字符放在xml的CDATA区内:

Xml代码  61ea8868d73387584350db2eb5aecb1f.png

delete from

MemberAccessLog

where

accessTimestamp <= #value#

]]>

推荐使用第一种方式,写为< 和 > (XML不对CDATA里的内容进行解析,因此如果CDATA中含有dynamic标签,将不起作用)

(9)include和sql标签   将常用的sql语句整理在一起,便于共用:

Xml代码  61ea8868d73387584350db2eb5aecb1f.png

select

samplingTimestamp,onlineNum,year,

month,week,day,hour

from

OnlineMemberNum

where samplingTimestamp <= #samplingTimestamp#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值