MyBatis 是一个优秀的持久层框架,它消除了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
MyBatis 简介
MyBatis 遵循约定优于配置的原则,通过半自动的方式减少了数据库操作时的复杂性。它支持自定义 SQL、存储过程以及高级映射,使得在处理复杂查询时更为灵活。
MyBatis 安装与配置
1. 添加依赖
在项目的 pom.xml 文件中添加以下依赖:
<dependencies>
<!-- MyBatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<!-- MySQL 驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
<!-- 数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.6</version>
</dependency>
</dependencies>
2. 配置数据库连接
在 resources 目录下创建 application.properties 文件,配置数据库连接信息:
# 数据库配置
db.url=jdbc:mysql://localhost:3306/your_database
db.user=root
db.password=root
db.driver=com.mysql.cj.jdbc.Driver
MyBatis 映射文件
映射文件是 MyBatis 的核心配置文件,用于定义 SQL 语句与 Java 对象的映射关系。
1. 创建映射文件
在 src/main/resources 目录下创建 mappers 目录,并在该目录下创建对应的 XML 映射文件,例如 UserMapper.xml。
<?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="selectById" resultType="com.example.entity.User">
SELECT * FROM user WHERE id = #{id}
</select>
</mapper>
2. 定义接口
在 src/main/java 目录下创建对应的接口,例如 UserMapper.java。
package com.example.mapper;
import com.example.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
@Mapper
public interface UserMapper {
User selectById(Long id);
}
MyBatis 实战应用
1. 创建实体类
在 src/main/java 目录下创建对应的实体类,例如 User.java。
package com.example.entity;
public class User {
private Long id;
private String name;
private Integer age;
// getter 和 setter 方法
}
2. 测试 MyBatis
在 src/test/java 目录下创建测试类,例如 UserMapperTest.java。
package com.example.mapper;
import com.example.entity.User;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class UserMapperTest {
@Test
public void testSelectById() {
// 创建 SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build();
// 创建 SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
// 创建 UserMapper
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
// 调用 selectById 方法
User user = userMapper.selectById(1L);
// 断言
assertEquals("张三", user.getName());
assertEquals(18, user.getAge());
// 关闭 SqlSession
sqlSession.close();
}
}
通过以上步骤,您已经成功学习了 MyBatis 的基本使用方法。在实际项目中,MyBatis 可以帮助您更高效地处理数据库操作,提高开发效率。希望这篇文章能够帮助您更好地掌握 MyBatis。
