Ibatis入门与实战:持久化操作与优缺点解析

需积分: 0 0 下载量 103 浏览量 更新于2024-08-23 收藏 1019KB PPT 举报
"Ibatis学习教程,包括iBATIS的基本概念、与Hibernate的对比以及开发环境的搭建" 在本文中,我们将深入探讨Ibatis这一流行的Java持久层框架。Ibatis是由ClintonBegin于2001年发起的开源项目,最初专注于密码软件开发,现在则作为一个SQL映射框架广泛应用。Ibatis的主要优点在于它的轻量化、易上手和灵活性,它允许开发者直接编写SQL语句,从而更好地控制数据查询和处理。同时,SQL语句存储在配置文件中,有助于降低程序的耦合度并便于维护。 然而,Ibatis也存在一些不足之处。首先,开发者需要手动编写SQL语句,这增加了开发工作量。其次,由于依赖于具体的SQL语法,数据库移植可能较为困难。此外,对于复杂的删除、修改操作以及大数据查询,Ibatis的支持相对有限。最后,由于SQL语句不在代码中直接体现,可能影响代码的可读性。 相比之下,Hibernate作为ORM(对象关系映射)框架,能够自动生成SQL语句,提供从对象到数据库表的全套映射,降低了开发者对SQL的直接依赖。但这也意味着Hibernate的灵活性较低,且其API相对较复杂,需要更多的配置工作。 要开始Ibatis的开发,首先需要访问官方网站下载最新的ibatis-2.3.4.726.jar包。值得注意的是,Ibatis本身并不提供SQL日志输出功能。为了在开发过程中跟踪和理解Ibatis的操作细节,我们需要添加log4j-1.2.14.jar,并创建一个名为log4j.properties的配置文件,设置日志级别为DEBUG,以便在标准输出流中查看详细的日志信息。 通过学习Ibatis,开发者可以掌握如何使用这个框架进行持久化操作,包括映射原理和SQLMapped的开发。同时,理解Ibatis与其他主流框架的整合方式,将有助于提升开发效率和项目的可扩展性。Ibatis提供了一种介于完全手动的JDBC和全自动化ORM框架之间的解决方案,适合那些寻求更高控制权和灵活性的开发者。

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 上传