iBATIS持久化框架:简化JDBC,提升性能

需积分: 3 3 下载量 174 浏览量 更新于2024-08-16 收藏 923KB PPT 举报
"这篇资料主要对比了iBATIS与传统JDBC在持久化方面的差异,强调了iBATIS的优势,包括减少代码量、简单性、性能提升、SQL代码的独立性和可重用性,以及对项目分工和移植性的增强。同时,资料也提到了iBATIS的基本要素,如SqlMaps,以及与Hibernate映射关系的不同。此外,还概述了iBATIS的工作流程和基础配置文件`sqlmapconfig.xml`的结构,包括`<properties>`、`<settings>`、`<transactionManager>`、`<typeAlias>`、`<typeHandler>`和`<sqlMap>`等元素的用途。" iBATIS是一个轻量级的持久化框架,由Clinton Begin创建并由Apache基金会维护。它不同于Hibernate这样的全栈ORM解决方案,而是提供了一种“半自动化”的ORM实现。在iBATIS中,SqlMaps是核心,通过XML文件定义了Java对象与SQL语句之间的映射,极大地减少了数据库操作的代码量,且由于SQL与业务逻辑分离,使得SQL更易于管理和重用。 与传统的JDBC相比,iBATIS有以下显著优势: 1. **减少代码量**:使用iBATIS可以减少大约61%的代码,因为不再需要手动编写大量的数据访问层代码。 2. **最简单的持久化框架**:相比其他ORM框架,iBATIS的学习曲线较平缓,更容易上手。 3. **架构级性能增强**:通过优化事务管理和延迟加载,iBATIS能够在架构层面提高系统性能。 4. **SQL代码分离**:SQL语句不再嵌入在Java代码中,便于维护和调试,同时也便于DBA专注于SQL优化。 5. **增强项目分工**:开发人员和DBA可以独立工作,提高了团队协作效率。 6. **增强移植性**:由于SQL与Java代码分离,更换数据库时只需调整SQL映射文件,减少了迁移成本。 iBATIS的工作流程主要包括以下几个步骤: 1. 配置SqlMapConfig.xml文件,定义数据库连接和SQL映射文件的位置。 2. 创建SqlSessionFactory,根据SqlMapConfig.xml文件生成SqlSession实例。 3. 使用SqlSession执行SQL语句,通过Mapper接口或XML配置文件中的ID来调用相应的SQL。 4. 处理结果集,将数据库返回的数据映射到Java对象。 5. 提交或回滚事务,并关闭SqlSession。 基础配置文件`sqlmapconfig.xml`中,`<properties>`用于引入外部属性文件,如数据库连接信息;`<settings>`设置iBATIS的全局属性;`<transactionManager>`定义事务管理策略;`<typeAlias>`为Java类型创建别名,简化引用;`<typeHandler>`处理数据库数据类型的转换;`<sqlMap>`包含具体的SQL映射文件,定义了数据库操作的细节。 iBATIS提供了一种灵活且高效的数据库访问方式,尤其适合那些需要精细控制SQL的企业应用。结合Spring等其他框架,可以构建出稳定且可扩展的后端系统。

D:\javaJDK17\bin\java.exe "-javaagent:D:\编程软件\idea2022\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=4912:D:\编程软件\idea2022\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath "D:\IDEA java\javaWeb\Maven\maven-project01\target\classes;D:\Maven\apache-maven-3.9.3-bin\apache-maven-3.9.3\mvn_store\org\mybatis\mybatis\3.5.5\mybatis-3.5.5.jar;D:\Maven\apache-maven-3.9.3-bin\apache-maven-3.9.3\mvn_store\mysql\mysql-connector-java\5.1.46\mysql-connector-java-5.1.46.jar;D:\Maven\apache-maven-3.9.3-bin\apache-maven-3.9.3\mvn_store\org\slf4j\slf4j-api\1.7.32\slf4j-api-1.7.32.jar;D:\Maven\apache-maven-3.9.3-bin\apache-maven-3.9.3\mvn_store\ch\qos\logback\logback-core\1.2.6\logback-core-1.2.6.jar;D:\Maven\apache-maven-3.9.3-bin\apache-maven-3.9.3\mvn_store\ch\qos\logback\logback-classic\1.2.6\logback-classic-1.2.6.jar" Demo1.HelloWord Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: java.sql.SQLException: Error setting driver on UnpooledDataSource. Cause: java.lang.ClassNotFoundException: Cannot find class: ${com.mysql.jdbc.Driver} ### The error may exist in UserMapper.xml ### The error may involve test.selectAll ### The error occurred while executing a query ### Cause: java.sql.SQLException: Error setting driver on UnpooledDataSource. Cause: java.lang.ClassNotFoundException: Cannot find class: ${com.mysql.jdbc.Driver} at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:149) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:135) at Demo1.HelloWord.main(HelloWord.java:23) Caused by: java.sql.SQLException: Error setting driver on UnpooledDataSource. Cause: java.lang.ClassNotFoundException: Cannot find class: ${com.mysql.jdbc.Driver} at org.apache.ibatis.datasource.unpooled.UnpooledDataSource.initializeDriver(UnpooledDataSource.java:244) at org.apache.ibatis.datasource.unpooled.UnpooledDataSource.doGetConnection(UnpooledDataSource.java:223) at org.apache.ibatis.datasource.unpooled.UnpooledDataSource.doGetConnection(UnpooledDataSource.java:219) at org.apache.ibatis.datasource.unpooled.UnpooledDataSource.getConnection(UnpooledDataSource.java:95) at org.apache.ibatis.datasource.pooled.PooledDataSource.popConnection(PooledDataSource.java:432) at org.apache.ibatis.datasource.pooled.PooledDataSource.getConnection(PooledDataSource.java:89) at org.apache.ibatis.transaction.jdbc.JdbcTransaction.openConnection(JdbcTransaction.java:139) at org.apache.ibatis.transaction.jdbc.JdbcTransaction.getConnection(JdbcTransaction.java:61) at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:337) at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:86) at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:62) at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:325) at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156) at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109) at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:89) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147) ... 3 more

2023-07-22 上传