ibatis实战:16个关键SQL操作示例
需积分: 12 79 浏览量
更新于2024-09-16
1
收藏 30KB DOCX 举报
"ibatis16个常用sql语句"
Ibatis,作为一个轻量级的持久层框架,允许开发者将SQL语句直接写在XML配置文件中,与Java代码分离,提高了开发效率和可维护性。这里我们将详细探讨16个在实际应用中常见的Ibatis SQL语句。
1. 删除操作(Delete)
当输入参数为单个值时,如`accessTimestamp`,可以使用以下方式编写XML映射文件:
```xml
<delete id="com.fashionfree.stat.accesslog.deleteMemberAccessLogsBefore" parameterClass="long">
delete from MemberAccessLog where accessTimestamp=#value#
</delete>
```
这里`#value#`是占位符,用于传递参数值到SQL语句中。
2. 插入操作(Insert)
如果输入参数是一个对象,例如`MemberAccessLog`模型,可以这样编写XML:
```xml
<insert id="com.fashionfree.stat.accesslog.MemberAccessLog.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>
```
在这里,`#属性名#`用于表示对象属性值。
3. 查询操作(Select)
当输入参数是一个`HashMap`时,例如获取`actionId`和对应的访问次数,可以这样编写:
```xml
<select id="com.fashionfree.stat.accesslog.selectActionIdAndActionNumber" parameterClass="hashMap" resultMap="getActionIdAndActionNumber">
select actionId, count(*) as count
from MemberAccessLog
where memberId = #memberId#
and accessTimestamp > #start#
and accessTimestamp <= #end#
group by actionId
</select>
```
这里的`#memberId#`, `#start#`, 和 `#end#`分别对应HashMap中的键值。
4. 包含数组的查询(In)
当输入参数中包含数组,例如筛选`actionId`在某个数组内的记录,可以使用`<in>`标签:
```xml
<!-- 示例代码省略 -->
<in clause="IN" property="actionIds" open="(" close=")" separator=",">
actionId
</in>
```
这里的`actionIds`是参数对象中的数组属性,`open`、`close`和`separator`分别定义了括号和分隔符。
5. 更新操作(Update)
更新操作类似于插入,但主要是修改已存在的数据,例如:
```xml
<update id="updateUser" parameterClass="com.example.User">
UPDATE Users
SET name = #name#,
email = #email#
WHERE id = #id#
</update>
```
6. 条件查询(If)
可以根据条件动态生成SQL,例如:
```xml
<if test="username != null">
AND username = #{username}
</if>
```
7. 选择性插入(SelectKey)
用于在插入时生成主键值,例如:
```xml
<selectKey keyProperty="id" resultType="int" order="BEFORE">
SELECT LAST_INSERT_ID()
</selectKey>
```
8. 联合查询(Union)
使用`<union>`标签可以合并多个查询结果:
```xml
<select id="getUsers" resultClass="com.example.User">
<union>
SELECT * FROM Users
UNION
SELECT * FROM OtherUsers
</union>
</select>
```
9. 子查询(Subquery)
可以在SQL中嵌套查询,例如:
```xml
<select id="getUsersWithMaxScore" resultClass="com.example.User">
SELECT * FROM Users
WHERE score = (SELECT MAX(score) FROM Users)
</select>
```
10. 批量操作(Batch)
使用`<foreach>`标签进行批处理:
```xml
<insert id="batchInsert">
INSERT INTO Users (name, email)
<foreach item="item" index="index" collection="list" separator=";">
VALUES (${item.name}, ${item.email})
</foreach>
</insert>
```
11. 结果映射(ResultMap)
定义复杂的结果映射关系,包括一对一、一对多、多对一等:
```xml
<resultMap id="userMap" type="com.example.User">
<id property="id" column="user_id"/>
<result property="name" column="username"/>
<result property="email" column="user_email"/>
<association property="address" javaType="com.example.Address">
<id property="id" column="address_id"/>
<result property="city" column="city"/>
</association>
</resultMap>
```
12. 缓存(Cache)
Ibatis支持缓存机制,提高查询性能:
```xml
<cache eviction="LRU" flushInterval="60000" size="512"/>
```
13. 动态SQL(Dynamic)
根据条件动态生成SQL语句,如`<where>`, `<if>`, `<choose>`, `<when>`, `<otherwise>`等。
14. 类型处理器(TypeHandler)
自定义类型转换,处理Java类型与数据库类型的转换问题。
15. 事务管理(Transaction)
Ibatis提供了事务管理,可以控制事务的开启、提交、回滚等操作。
16. 配置全局属性(Settings)
可以在配置文件中设置全局属性,如设置日志、延迟加载等。
以上是Ibatis中16个常见的SQL语句及其应用场景,它们覆盖了CRUD操作及更复杂的查询需求,为开发者提供了强大的数据库交互能力。通过灵活运用这些语句,可以构建出高效、易维护的数据访问层。
2011-10-14 上传
137 浏览量
点击了解资源详情
2011-09-30 上传
点击了解资源详情
点击了解资源详情
2012-03-13 上传
2020-09-01 上传
meishangwen
- 粉丝: 0
- 资源: 3
最新资源
- NIST REFPROP问题反馈与解决方案存储库
- 掌握LeetCode习题的系统开源答案
- ctop:实现汉字按首字母拼音分类排序的PHP工具
- 微信小程序课程学习——投资融资类产品说明
- Matlab犯罪模拟器开发:探索《当蛮力失败》犯罪惩罚模型
- Java网上招聘系统实战项目源码及部署教程
- OneSky APIPHP5库:PHP5.1及以上版本的API集成
- 实时监控MySQL导入进度的bash脚本技巧
- 使用MATLAB开发交流电压脉冲生成控制系统
- ESP32安全OTA更新:原生API与WebSocket加密传输
- Sonic-Sharp: 基于《刺猬索尼克》的开源C#游戏引擎
- Java文章发布系统源码及部署教程
- CQUPT Python课程代码资源完整分享
- 易语言实现获取目录尺寸的Scripting.FileSystemObject对象方法
- Excel宾果卡生成器:自定义和打印多张卡片
- 使用HALCON实现图像二维码自动读取与解码