MyBatis 是一个流行的 Java 持久层框架,它提供了 SQL 映射和对象关系映射的功能,让开发者能够更加便捷地操作数据库。MyBatis 通过 XML 或注解的方式配置 SQL 语句,并将 Java 对象与数据库表进行映射,以简化 JDBC 的复杂操作。以下是 MyBatis 使用的详细介绍,包括环境配置、基本概念、主要特性以及操作步骤。
环境配置
-
添加依赖:在 Maven 项目的
pom.xml
文件中添加 MyBatis 的依赖。<dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version> </dependency>
如果使用 Spring Boot,可以添加 MyBatis Spring Boot Starter 的依赖。
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.4</version> </dependency>
-
配置数据源:在
application.properties
或application.yml
文件中配置数据库的数据源信息。spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase spring.datasource.username=root spring.datasource.password=yourpassword spring.datasource.driver-class-name=com.mysql.jdbc.Driver
-
配置 MyBatis:指定 MyBatis 的配置文件或 Mapper 文件的位置。
mybatis.config-location=classpath:mybatis-config.xml mybatis.mapper-locations=classpath:mapper/*.xml
基本概念
- SqlSessionFactory:MyBatis 通过 SqlSessionFactory 实例来创建 SqlSession,SqlSessionFactory 的实例化通常通过 SqlSessionFactoryBuilder 从 XML 配置文件或一个预先配置的 Configuration 实例中构建得到。
- SqlSession:表示和数据库交互的会话,用于执行 SQL 语句。
- Mapper:在 MyBatis 中,Mapper 接口与 XML 文件或注解关联,定义了数据库操作方法。MyBatis 自动生成 Mapper 接口的实现。
主要特性
- 映射 SQL 语句:MyBatis 允许将 SQL 语句写在 XML 文件中或通过注解的方式直接在接口方法上定义。
- 动态 SQL:MyBatis 支持动态 SQL 语句的构建,如条件查询、循环语句等。
- 对象和数据库表的映射:MyBatis 支持复杂的对象关系映射,包括一对一、一对多和多对多关系。
操作步骤
-
定义 Mapper XML 文件:创建一个 Mapper XML 文件,定义 SQL 语句和映射规则。
<!-- UserMapper.xml --> <mapper namespace="com.example.mapper.UserMapper"><select id="selectUser" resultType="com.example.model.User">SELECT * FROM users WHERE id = #{id}</select> </mapper>
-
创建 Mapper 接口:定义一个 Mapper 接口,与 Mapper XML 文件对应。
package com.example.mapper;public interface UserMapper {User selectUser(int id); }
-
使用 SqlSession:通过 SqlSessionFactory 获取 SqlSession,然后通过 SqlSession 调用 Mapper 接口的方法。
SqlSession session = sqlSessionFactory.openSession(); try {UserMapper mapper = session.getMapper(UserMapper.class);User user = mapper.selectUser(1); } finally {session.close(); }
MyBatis 通过以上机制,实现了从 Java 应用到数据库的流畅交互,极大地简化了数据库编程工作。此外,MyBatis 社区提供了大量插件和扩展,进一步增强了其灵活性和功能性。