iBatis常用16条SQL语句解析
34 浏览量
更新于2024-09-01
收藏 98KB PDF 举报
iBatis,现更名为MyBatis,是一个由Apache基金会维护的开源项目,它是一个优秀的对象/关系映射(O/R Mapping)解决方案。其特点是小巧且易于上手,适用于那些不需要过于复杂功能的场景。以下是iBatis中常用的16条SQL语句示例:
1. 输入参数为单个值:
当你需要根据单一参数删除数据时,如`accessTimestamp`,可以使用以下方式:
```xml
<delete id="deleteMemberAccessLogsBefore" parameterClass="long">
delete from MemberAccessLog
where accessTimestamp = #value#
</delete>
```
这里`#value#`代表传递的参数值。
2. 输入参数为一个对象:
当需要插入一个对象的所有属性时,例如`MemberAccessLog`模型,可以这样做:
```xml
<insert id="insert" 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#
)
</insert>
```
在这里,`#property#`代表对象中对应的属性值。
3. 条件查询:
iBatis允许你在SQL语句中构建动态条件,例如:
```xml
<select id="selectByCondition" parameterClass="com.fashionfree.stat.accesslog.model.MemberAccessLog" resultClass="com.fashionfree.stat.accesslog.model.MemberAccessLog">
select * from MemberAccessLog
<dynamic prepend="WHERE">
<isNotEmpty property="memberId">
memberId = #memberId#
</isNotEmpty>
<isNotEmpty prepend="AND" property="accessTimestamp">
accessTimestamp between #accessTimestampStart# and #accessTimestampEnd#
</isNotEmpty>
</dynamic>
</select>
```
这段代码可以根据`memberId`和`accessTimestamp`的非空情况添加相应的查询条件。
4. 分页查询:
使用`limit`和`offset`进行分页查询,例如:
```xml
<select id="selectPaged" parameterClass="map" resultClass="com.fashionfree.stat.accesslog.model.MemberAccessLog">
SELECT * FROM MemberAccessLog
WHERE someCondition
ORDER BY someColumn
<if test="pageSize != null and pageSize > 0">
LIMIT #pageSize#
<if test="pageNumber != null and pageNumber > 0">
OFFSET (#pageNumber - 1) * #pageSize#
</if>
</if>
</select>
```
5. 动态SQL:
iBatis支持在SQL语句中使用`<if>`、`<choose>`(`<when>`、`<otherwise>`)、`<foreach>`等元素来构建复杂的动态SQL。
6. 存储过程调用:
可以通过`<call>`标签调用数据库的存储过程:
```xml
<call id="callProcedure" parameterClass="map">
{call someProcedure(?, ?, ?)}
</call>
```
7. 结果映射:
iBatis允许自定义结果集映射,包括一对一、一对多、多对一、多对多的映射。
8. 自动类型转换:
iBatis可以根据配置自动将数据库字段值转换为Java对象的属性。
9. 缓存机制:
iBatis支持二级缓存,可以提高数据访问效率。
10. 事务管理:
iBatis提供事务控制,可以与Spring等框架集成进行声明式事务管理。
11. SQL片段重用:
可以通过`<sql>`标签定义可重用的SQL片段,减少代码重复。
12. 动态SQL标签:
`#{}`用于预编译处理,防止SQL注入。
13. 结果集映射自动填充:
iBatis可以通过`autoMappingBehavior`设置自动映射级别。
14. 自定义插件:
可以创建自定义拦截器插件,对SQL执行过程进行扩展。
15. 延迟加载:
对于一对一或一对多的关系,iBatis支持延迟加载,以提高性能。
16. 异常处理:
iBatis提供了`SqlException`,用于捕获和处理SQL相关的异常。
以上是iBatis常用的一些SQL语句及其特性,通过这些,开发者可以更高效地操作数据库并与Java对象进行交互。
137 浏览量
2012-03-13 上传
2011-10-14 上传
2012-04-25 上传
点击了解资源详情
2011-09-30 上传
2012-04-05 上传
2019-03-16 上传
weixin_38682026
- 粉丝: 1
- 资源: 881
最新资源
- OPNET 用户指南_翻译稿
- 数据库的设计-----VFP
- FLEX 3 CookBook 简体中文学习基础资料PDF
- TOMCAT移植到JBOSS
- Myeclipse7[1].0+JBoss5.0测试EJB3.0环境搭建过程详解
- PROTEUS中文教程
- NCURSES Programming HOWTO中文第二版
- 高性能计算之并行编程技术--MPI并行程序设计
- ORACLE备份策略
- 软件评测师07年大题与答案,Word版
- The Productive Programmer.pdf
- c#团队开发之命名规范
- 计算机操作系统(汤子瀛)习题答案.pdf
- ArcGIS Server轻松入门
- 基于组播技术的网络抢答系统设计
- USB数据采集的几个问题