iBATIS SQL Maps开发指南

需积分: 22 1 下载量 63 浏览量 更新于2024-07-22 收藏 983KB PDF 举报
iBatis Java API iBatis 是一个Java持久层框架,提供了一个简洁、灵活的方式来访问关系数据库。iBatis 的主要特点是将Java对象与数据库表之间的映射关系实现自动化,减少了手动编写SQL语句的工作量。 iBatis 的主要概念 * SQLMap:iBatis 的核心组件,负责将Java对象与数据库表之间的映射关系实现自动化。 * SQLMap 的概念:SQLMap 是一个抽象的概念,表示了Java对象与数据库表之间的映射关系。 * SQLMap 如何工作?:SQLMap 通过读取XML配置文件来确定Java对象与数据库表之间的映射关系,然后将Java对象转换为SQL语句,并执行SQL语句来访问数据库。 安装和配置 * 安装SQLMaps:需要将iBatis 的JAR文件添加到 CLASSPATH 中,并且需要将SQLMap 的XML配置文件部署到正确的位置。 * JAR 文件和依赖性:iBatis 需要依赖于其他库,例如JDBC驱动程序和日志库。 * 从 1.x 版本升级:iBatis 提供了从 1.x 版本升级到 2.0 版本的升级指南。 SQLMap XML 配置文件 * <properties> 元素:用于定义 SQLMap 的配置属性。 * <setting> 元素:用于定义 SQLMap 的设置参数。 * <typeAlias> 元素:用于定义类型别名。 * <transactionManager> 元素:用于定义事务管理器。 * <datasource> 元素:用于定义数据源。 * <sqlMap> 元素:用于定义 SQLMap 的配置信息。 Mapped Statements * Statement 的类型:iBatis 支持多种类型的语句,例如 SELECT、INSERT、UPDATE、DELETE 等。 * SQL 语句:iBatis 支持多种类型的 SQL 语句,例如静态 SQL 语句和动态 SQL 语句。 * 自动生成的主键:iBatis 支持自动生成主键,例如使用 UUID 或者序列号。 * 存储过程:iBatis 支持调用存储过程来执行数据库操作。 Parameter * parameterClass:用于定义参数的类型。 * parameterMap:用于定义参数的映射关系。 * InlineParameter:用于定义内联参数。 * resultClass:用于定义结果类。 * resultMap:用于定义结果映射关系。 * cacheModel:用于定义缓存模型。 ResultMap *隐式的 ResultMap:iBatis 支持隐式的 ResultMap,用于自动将结果集映射到 Java 对象中。 * 基本类型的 Result:iBatis 支持将结果集映射到基本类型,例如 String、Integer、Boolean 等。 * Map 类型的 Result:iBatis 支持将结果集映射到 Map 对象中。 * 复杂类型属性:iBatis 支持将结果集映射到复杂类型的属性中,例如自定义类型的属性。 避免 N+1 Select * 避免 N+1 Select(1:1):iBatis 支持避免 N+1 Select 问题,例如使用延迟加载或联合查询来减少数据库查询次数。 * 避免 N+1 Select(1:M 和 M:N):iBatis 支持避免 N+1 Select 问题,例如使用延迟加载或联合查询来减少数据库查询次数。 iBatis 是一个功能强大且灵活的持久层框架,提供了多种方式来访问关系数据库。通过使用 iBatis,可以减少手动编写 SQL 语句的工作量,并提高数据库访问的效率。

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