MyBatis 是一个优秀的持久层框架,它消除了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的工作。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
MyBatis 简介
MyBatis 遵循“约定大于配置”的原则,使得其配置和接口的编写变得极其简单。它允许你将 SQL 映射语句存储在 XML 文件中,或者直接注解在接口方法上。这使得数据库操作更加灵活,同时保持了代码的整洁。
MyBatis 的核心组件
1. SQL 映射语句
SQL 映射语句是 MyBatis 的核心。它们定义了如何将 SQL 语句与 Java 代码进行映射。
2. Mapper 接口
Mapper 接口定义了需要执行的 SQL 语句,MyBatis 会通过反射机制生成对应的实现类。
3. 数据库连接池
数据库连接池负责分配、管理和释放数据库连接。MyBatis 默认使用 JDBC 连接池,也可以通过配置使用其他连接池。
4. 数据源
数据源负责获取数据库连接。MyBatis 提供了数据源接口,你可以实现自己的数据源。
MyBatis 快速入门
1. 环境搭建
首先,你需要在项目中添加 MyBatis 的依赖。以下是 Maven 依赖的示例:
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
</dependencies>
2. 配置 MyBatis
创建一个 mybatis-config.xml 文件,配置数据库连接信息、事务管理器和 SQL 映射文件路径:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/your_database"/>
<property name="username" value="root"/>
<property name="password" value="password"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/example/mapper/UserMapper.xml"/>
</mappers>
</configuration>
3. 创建 Mapper 接口
在 com.example.mapper 包下创建一个 UserMapper 接口:
package com.example.mapper;
public interface UserMapper {
List<User> findAll();
}
4. 创建 SQL 映射文件
在 com/example/mapper 包下创建一个 UserMapper.xml 文件,定义 SQL 映射语句:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mapper.UserMapper">
<select id="findAll" resultType="com.example.entity.User">
SELECT * FROM user
</select>
</mapper>
5. 使用 MyBatis
在项目中创建一个 SqlSessionFactory 实例,然后通过 SqlSession 获取数据库连接:
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(new FileInputStream("mybatis-config.xml"));
try (SqlSession session = sqlSessionFactory.openSession()) {
List<User> users = session.selectList("com.example.mapper.UserMapper.findAll");
for (User user : users) {
System.out.println(user);
}
}
通过以上步骤,你就可以使用 MyBatis 进行数据库操作了。MyBatis 提供了丰富的功能,例如动态 SQL、插件、缓存等,你可以根据需求进行学习和使用。
