MyBatis框架使用总结与配置文件解析

需积分: 6 1 下载量 191 浏览量 更新于2024-10-26 收藏 3.79MB RAR 举报
资源摘要信息:"MyBatis_Review.rar" MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 ### 配置文件写法 MyBatis的配置文件是整个框架运行的基础,其中包含了数据库连接信息、事务管理器、映射器等关键配置。一个典型的MyBatis配置文件(mybatis-config.xml)通常包含以下几个主要部分: 1. **properties**:配置数据库连接信息,如数据库URL、用户名、密码等。 2. **settings**:设置全局属性,如映射器的延迟加载、缓存开关、别名、日志工厂等。 3. **typeAliases**:为Java类定义别名,简化复杂类型的全限定名。 4. **typeHandlers**:配置类型处理器,用于Java类型与JDBC类型之间的转换。 5. **objectFactory**:对象工厂,用于创建目标对象实例。 6. **plugins**:配置插件,可以拦截Executor、StatementHandler、ParameterHandler和ResultSetHandler的调用。 7. **environments**:配置不同的运行环境,如开发环境、测试环境和生产环境。 8. **environment**:每个环境的具体配置,包括事务管理器和数据源。 9. **transactionManager**:配置事务管理方式,MyBatis支持JDBC事务管理和MANAGED事务管理。 10. **dataSource**:配置数据源,MyBatis内置了UNPOOLED、POOLED和JNDI数据源。 11. **mappers**:指定映射文件或接口的位置,让MyBatis知道如何找到映射文件。 ### session的获得方法 在MyBatis中,SqlSession是一个非常重要的概念,它是应用程序与持久层之间执行交互操作的一个单线程对象。以下是如何获取SqlSession的常见方式: 1. **SqlSessionFactoryBuilder**: 这是一个用于构建SqlSessionFactory的工具类。通常在初始化MyBatis时,通过读取配置文件来创建SqlSessionFactory对象。 ```java String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); ``` 2. **SqlSessionFactory**: 一旦创建了SqlSessionFactory,在应用的整个运行期间,它应该是单例的。通过SqlSessionFactory对象,可以获取到SqlSession实例。 ```java try (SqlSession session = sqlSessionFactory.openSession()) { // 使用session进行数据库操作 } ``` 3. **SqlSessionTemplate**: 在Spring框架整合MyBatis时,常常使用SqlSessionTemplate来代替直接使用SqlSession,它提供了线程安全的SqlSession操作。 ```java @Autowired private SqlSessionTemplate sqlSessionTemplate; // 在方法中直接注入sqlSessionTemplate,进行数据库操作 ``` ### 固定语法 在MyBatis中,有一些固定的语法需要掌握,主要包括以下几个方面: 1. **Mapper文件**:映射文件是MyBatis的核心组件,它定义了SQL语句和操作的映射规则。通常,一个Mapper文件中包含以下几个元素: - `namespace`: 命名空间,通常与Mapper接口的全限定名相同。 - `select|insert|update|delete`: 定义操作数据库的SQL语句。 - `id`: 唯一标识一个SQL语句的ID,它应该与Mapper接口中的方法名相同。 - `parameterType`: 指定输入参数的类型。 - `resultType`: 指定输出结果的类型。 - `#{}`: 在SQL语句中设置参数占位符,其中的值对应于方法的参数。 - `<resultMap>`: 定义复杂的映射关系,可以实现高级的类型转换、级联等。 2. **动态SQL**: MyBatis支持动态SQL的构建,可以实现基于条件的复杂查询。主要标签包括: - `<if>`: 根据条件判断是否包含某段SQL代码。 - `<choose>`(when, otherwise): 类似于Java中的switch语句。 - `<where>`: 自动添加WHERE关键字,并且会忽略条件中的AND或OR。 - `<set>`: 在UPDATE语句中用于包含SET关键字的条件。 - `<foreach>`: 循环迭代指定的集合或数组,常用于IN语句或者批量插入。 3. **缓存机制**: MyBatis提供了两级缓存机制,第一级缓存是SqlSession级别的缓存,第二级缓存是Mapper级别的缓存,可以被同一个SqlSessionFactory创建的所有SqlSession共享。 通过理解和掌握上述知识点,可以更好地使用MyBatis框架进行数据库的操作和管理。这些知识点在MyBatis框架的应用中至关重要,是进行高效数据库编程的基础。