MyBatis 是一个优秀的持久层框架,它消除了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
以下是从基础到实践的 MyBatis 入门指南,帮助你轻松掌握高效 SQL 操作。
1. MyBatis 简介
MyBatis 是一个半自动化的持久层框架,它将 SQL 映射语句存储在 XML 或注解中,将接口和 Java 对象映射成数据库中的记录。它允许你将 SQL 语句与对象分离,使得代码更加简洁、易于维护。
2. MyBatis 安装与配置
2.1 安装
首先,你需要在项目中引入 MyBatis 依赖。以下是 Maven 依赖配置:
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!-- 数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.22</version>
</dependency>
<!-- MySQL 驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
</dependencies>
2.2 配置
在项目的 src/main/resources 目录下创建 mybatis-config.xml 文件,配置数据源、事务管理器和映射器等:
<?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/database_name"/>
<property name="username" value="root"/>
<property name="password" value=""/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/example/mapper/UserMapper.xml"/>
</mappers>
</configuration>
3. 创建 Mapper 接口
在项目中创建对应的 Mapper 接口,定义 SQL 映射语句:
package com.example.mapper;
import com.example.model.User;
import org.apache.ibatis.annotations.Select;
public interface UserMapper {
@Select("SELECT * FROM user WHERE id = #{id}")
User findUserById(int id);
}
4. 创建 XML 映射文件
在项目中创建对应的 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">
<resultMap id="userResultMap" type="com.example.model.User">
<id property="id" column="id"/>
<result property="username" column="username"/>
<result property="password" column="password"/>
</resultMap>
<select id="findUserById" resultMap="userResultMap">
SELECT * FROM user WHERE id = #{id}
</select>
</mapper>
5. 使用 MyBatis
在 Java 代码中,通过 MyBatis 的 SqlSessionFactoryBuilder 创建 SqlSessionFactory,再通过 SqlSessionFactory 创建 SqlSession,最后通过 SqlSession 执行 SQL 映射语句:
package com.example.mapper;
import com.example.model.User;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class Main {
public static void main(String[] args) {
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(
Resources.getResourceAsStream("mybatis-config.xml"));
try (SqlSession session = sqlSessionFactory.openSession()) {
UserMapper userMapper = session.getMapper(UserMapper.class);
User user = userMapper.findUserById(1);
System.out.println(user.getUsername());
}
}
}
6. 总结
通过以上步骤,你已经完成了 MyBatis 的入门学习。在实际项目中,你可以根据自己的需求进行扩展和优化,例如使用注解代替 XML 配置、分页插件等。希望这篇文章能帮助你轻松掌握 MyBatis,提高你的 SQL 操作效率。
