iBATIS-SqlMaps 2.0开发指南:入门与配置详解

需积分: 22 0 下载量 63 浏览量 更新于2024-09-19 收藏 983KB PDF 举报
iBATIS-SqlMaps-2_cn 是一本针对iBATIS 2.0版本的开发指南,由Clinton Begin撰写并由刘涛翻译。这本书详细介绍了iBATIS SqlMap技术,这是一个轻量级的对象关系映射框架,用于简化数据库访问,减少代码量,提高性能。以下是部分内容概要: 1. **SQLMap概念**: SQLMap是iBATIS的一个扩展,它将SQL语句封装成可配置的对象,使得开发者能够通过调用这些对象来执行复杂的数据库操作,而无需编写大量硬编码的SQL。 2. **工作原理**: iBATIS-SqlMaps利用XML配置文件定义SQL Map,其中包含了各种`MappedStatements`,每个声明都有一个关联的SQL语句和处理参数的方式。通过`<sqlMap>`元素,开发者可以组织和管理这些SQL语句,使其更易于维护。 3. **安装与升级**: 如果是从iBATIS 1.x版本升级,需要关注《从1.x版本升级》章节,评估是否有必要进行升级,并学习如何迁移XML配置文件以适应新版本的要求。 4. **XML配置文件**: 配置文件的关键部分包括 `<properties>`、`<setting>`、`<typeAlias>`、`<transactionManager>`、`<dataSource>` 和 `<sqlMap>` 元素。它们分别用于设置全局属性、事务管理器配置、类型别名、数据源引用以及定义SQL Map的结构。 5. **SQLMap映射文件**: 映射文件中的 `MappedStatements` 包括不同类型的Statement,如SQL语句、存储过程和参数处理,如`parameterClass`、`parameterMap`、`InlineParameter`、`resultClass` 和 `resultMap`。此外,还涉及如何处理结果集(如`cacheModel`)和命名结果(`xmlResultName`)。 6. **参数处理**: 参数处理非常灵活,包括`<parameter>`元素和`InlineParameterMap`,支持基本类型(如String、Integer、Boolean)和Map类型的输入。同时,还讨论了如何处理复杂类型属性,避免常见的N+1 Select问题,例如在1:1和1:M/N:M关系中。 7. **性能优化**: 书中还重点讲解了如何通过延迟加载和联合查询来优化性能,特别是在处理1:1和复杂集合关系时。通过巧妙地设计ResultMap,可以避免不必要的数据库查询次数。 iBATIS-SqlMaps-2_cn是一本深入浅出的教程,不仅介绍了iBATIS SqlMap的基本概念和技术细节,还提供了实用的性能优化策略,适合希望使用iBATIS进行数据库操作的开发人员参考和学习。

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