iBATIS是Apache的开源项目,一个ORM解决方案,iBATIS最大的特点就是小巧,上 手很快。 使用iBATIS提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的Java对象, 这一层与通过Hibernate实现ORM 而言基本一致,而对于具体的数据操作,Hibernate 会自动生成SQL 语句,而iBATIS则要求开发者编写具体的SQL语句。相对Hibernate 等 “全自动”ORM机制而言,iBATIS以SQL开发的工作量和数据库移植性上的让步, 为系统设计提供了更大的自由空间。作为“全自动”ORM实现的一种有益补充,iBATIS 的出现显得别具意义。 ### iBATIS学习笔记知识点概览 #### iBATIS简介 - **定义**: iBATIS是Apache的一个开源项目,提供了一种对象关系映射(ORM)解决方案。 - **特点**: - 小巧易用:相较于其他ORM框架如Hibernate,iBATIS更加轻量级,上手容易。 - 自定义SQL:iBATIS允许开发者编写具体的SQL语句,而非完全依赖框架自动生成SQL语句。 - 更大的灵活性:iBATIS在SQL开发的工作量和数据库移植性方面有所牺牲,但为系统设计提供了更大的自由度。 - **适用场景**: - 当需要高度定制化的SQL查询时。 - 对于那些重视性能优化或有复杂查询需求的应用。 #### 搭建环境 - **JAR包导入**: - `iBATIS-2.3.4.726.jar`: iBATIS核心库。 - `mysql-connector-java-5.1.12-bin.jar`: MySQL JDBC驱动,用于连接MySQL数据库。 - **配置文件**: - **JDBC连接属性文件**: - `driver`: 数据库驱动类。 - `url`: 数据库URL地址。 - `username`: 登录用户名。 - `password`: 登录密码。 - **iBATIS总配置文件`SqlMapConfig.xml`**: - 定义了iBATIS的核心配置,包括属性文件引用、事务管理器配置等。 - 示例结构: ```xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd"> <sqlMapConfig> <properties resource="jdbc.properties"/> <transactionManager type="JDBC" commitRequired="false"> <!-- 事务管理器配置 --> </transactionManager> <!-- 其他配置 --> </sqlMapConfig> ``` #### 基本CRUD操作 - **读取配置文件**: - 使用`SqlMapClientBuilder`类中的`buildSqlMapClient()`方法来读取配置文件并构建`SqlMapClient`实例。 - **SqlMapClientAPI**: - 提供了一系列的方法用于执行SQL语句,包括查询、插入、更新和删除操作。 - **批处理**: - iBATIS支持批处理操作,可以通过`SqlMapClient`的`startBatch()`、`executeBatch()`等方法进行批量数据操作。 - **iBATIS优点总结**: - **优点**: - 易于学习和使用。 - 高度灵活的SQL定制能力。 - 较低的学习成本。 - **缺点**: - 相较于“全自动”ORM框架,需要手动编写SQL语句。 - 可能导致代码重复性增加。 #### SqlMapConfig标签 - **`<properties>`**: - 引用外部属性文件,通常用于配置数据库连接信息。 - **`<settings>`**: - 设置全局配置项,如缓存刷新间隔等。 - **`<resultObjectFactory>`**: - 配置结果对象的创建工厂。 - **`<transactionManager>`**: - 配置事务管理器。 - **`<dataSource>`**: - 配置数据源。 - **`<typeHandler>`**: - 配置类型处理器,用于处理特定类型的转换。 - **`<sqlMap>`**: - 配置具体的SQL映射文件。 #### SqlMap标签详解 - **`<typeAlias>`**: - 为Java类型定义别名。 - **`<resultMap>`**: - 定义返回结果的映射关系,用于将查询结果映射到Java对象。 - **`<parametMap>`**: - 定义参数的映射关系。 - **`<selectKey>`**: - 用于生成主键值,常用于自增主键的场景。 - **`<select>`**: - 定义查询语句。 - **`<insert>`**: - 定义插入语句。 - **`<update>`**: - 定义更新语句。 - **`<delete>`**: - 定义删除语句。 - **`<procedure>`**: - 调用数据库存储过程。 - **`<statement>`**: - 执行DDL语句。 - **`<sql>`**: - 定义可复用的SQL片段。 - **`<include>`**: - 引入其他SQL语句片段。 #### SQL参数详解 - **`#`符号占位符**: - 用于预编译SQL语句中的参数。 - **`$`符号占位符**: - 直接将参数值插入到SQL语句中。 - **自动参数映射**: - iBATIS根据字段名称自动映射。 - **内联参数映射**: - 在SQL语句中直接指定参数名称。 - **外联参数映射**: - 通过参数映射文件定义参数映射关系。 #### 动态SQL语句 - **动态标签分类**: - `<if>`、`<choose>`等标签用于条件判断。 - `<foreach>`用于循环遍历集合。 - **共同属性**: - 大部分动态标签支持`test`属性,用于指定执行条件。 - **动态标签**: - `<dynamic>`: 定义动态SQL。 - `<if>`: 单条件判断。 - `<choose>`、`<when>`、`<otherwise>`: 多条件选择。 - `<foreach>`: 遍历集合。 #### 高级查询技术 - **映射继承**: - 实现子类继承父类的映射规则。 - **XML返回类型**: - 定义查询结果为XML格式。 - **RowHandler接口**: - 定义处理查询结果的方法。 #### 事务 - **事务定义**: - 一系列操作被视为一个整体,要么全部成功,要么全部失败。 - **事务特性**: - 原子性(Atomicity): 事务中的所有操作要么都完成,要么都不完成。 - 一致性(Consistency): 事务前后数据保持一致状态。 - 隔离性(Isolation): 并发事务之间不会相互影响。 - 持久性(Durability): 一旦事务提交,其结果是永久性的。 - **事务分类**: - 主动事务: 开发者显式控制事务的开启和提交。 - 被动事务: 由框架自动管理事务。 - **事务使用**: - 通过`SqlMapClient`的`startTransaction()`方法开启事务,`commitTransaction()`提交事务,`rollbackTransaction()`回滚事务。 #### 高速缓存 - **缓存配置**: - 在`SqlMapConfig.xml`文件中配置缓存相关属性。 - **缓存类型**: - 一级缓存: 默认启用,作用范围为一次会话。 - 二级缓存: 可选启用,跨会话的缓存。 - **缓存配置属性**: - `flushOnExecute`: 控制是否每次执行完SQL语句后清除缓存。 - `flushInterval`: 缓存的刷新间隔时间。 - `property`: 配置其他自定义缓存属性。 ### 结论 iBATIS作为一个轻量级的ORM框架,在灵活性和性能方面有着显著的优势。它适合那些需要高度定制化SQL查询的场景,同时也适合希望保持对底层SQL控制权的开发者。通过本文档的学习,可以快速掌握iBATIS的基本使用方法,并深入理解其内部机制,从而更好地应用于实际项目中。
剩余21页未读,继续阅读
- 粉丝: 0
- 资源: 4
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 毕设和企业适用springboot商城类及智慧园区智能化管理系统源码+论文+视频.zip
- 毕设和企业适用springboot人才招聘类及网络营销平台源码+论文+视频.zip
- 毕设和企业适用springboot人才招聘类及视频直播系统源码+论文+视频.zip
- 毕设和企业适用springboot人才招聘类及无人机管理平台源码+论文+视频.zip
- 毕设和企业适用springboot汽车电商类及新闻传播平台源码+论文+视频.zip
- 毕设和企业适用springboot汽车电商类及行业资讯平台源码+论文+视频.zip
- 毕设和企业适用springboot汽车电商类及医疗信息管理平台源码+论文+视频.zip
- 毕设和企业适用springboot人才招聘类及在线教育互动平台源码+论文+视频.zip
- 毕设和企业适用springboot人才招聘类及云端协作平台源码+论文+视频.zip
- 毕设和企业适用springboot人才招聘类及在线药品管理平台源码+论文+视频.zip
- 毕设和企业适用springboot汽车电商类及语音识别系统源码+论文+视频.zip
- 毕设和企业适用springboot汽车电商类及云端储物管理系统源码+论文+视频.zip
- 毕设和企业适用springboot汽车电商类及在线学习平台源码+论文+视频.zip
- 毕设和企业适用springboot人才招聘类及智慧医疗管理平台源码+论文+视频.zip
- 毕设和企业适用springboot人才招聘类及智能农业解决方案源码+论文+视频.zip
- 毕设和企业适用springboot人才招聘类及智能农业平台源码+论文+视频.zip