MyBatis 是一款优秀的持久层框架,它消除了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程。MyBatis 通过简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。本文将带你从入门到实战,一步步学会 MyBatis,让你轻松驾驭开源框架。
MyBatis 入门教程
1. MyBatis 简介
MyBatis 的核心是 SQL 映射文件,这个文件包含了 SQL 代码和映射规则。MyBatis 使用 XML 文件来定义 SQL 语句,这使得 SQL 语句与 Java 代码分离,便于维护和扩展。
2. 环境搭建
要开始使用 MyBatis,首先需要搭建开发环境。以下是搭建 MyBatis 开发环境的步骤:
- 下载 MyBatis:访问 MyBatis 官网(http://www.mybatis.org/)下载 MyBatis 的最新版本。
- 添加依赖:在项目的
pom.xml文件中添加 MyBatis 依赖和数据库驱动依赖。 - 创建配置文件:创建
mybatis-config.xml配置文件,配置数据库连接信息、事务管理器和映射文件路径。
3. 映射文件
映射文件是 MyBatis 的核心,它定义了 SQL 语句和 Java 实体之间的关系。以下是映射文件的基本结构:
<!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>
在上面的映射文件中,namespace 属性指定了 Mapper 接口的完整类名,id 属性是 SQL 语句的唯一标识,resultType 属性指定了查询结果的数据类型。
4. Mapper 接口
Mapper 接口定义了数据库操作的抽象方法,MyBatis 会根据映射文件生成相应的实现类。以下是 Mapper 接口的基本结构:
package com.example.mapper;
import com.example.entity.User;
import org.apache.ibatis.annotations.Select;
public interface UserMapper {
@Select("SELECT * FROM user WHERE id = #{id}")
User selectById(Integer id);
}
在上面的 Mapper 接口中,@Select 注解指定了要执行的 SQL 语句。
MyBatis 实战案例
1. 创建数据库和表
首先,我们需要创建一个数据库和一个表来存储用户信息。
CREATE DATABASE mybatis_db;
USE mybatis_db;
CREATE TABLE user (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
age INT
);
2. 添加用户数据
接下来,我们添加一些用户数据到表中。
INSERT INTO user (name, age) VALUES ('张三', 20);
INSERT INTO user (name, age) VALUES ('李四', 25);
INSERT INTO user (name, age) VALUES ('王五', 30);
3. 编写 MyBatis 配置文件
在 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.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis_db"/>
<property name="username" value="root"/>
<property name="password" value=""/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/example/mapper/UserMapper.xml"/>
</mappers>
</configuration>
4. 编写 Mapper 接口
在 UserMapper.java 文件中定义 selectById 方法。
package com.example.mapper;
import com.example.entity.User;
import org.apache.ibatis.annotations.Select;
public interface UserMapper {
@Select("SELECT * FROM user WHERE id = #{id}")
User selectById(Integer id);
}
5. 编写测试代码
在 UserMapperTest.java 文件中编写测试代码,使用 MyBatis 查询用户信息。
package com.example;
import com.example.mapper.UserMapper;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class UserMapperTest {
public static void main(String[] args) {
try {
// 创建 SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(
Resources.getResourceAsStream("mybatis-config.xml"));
// 获取 SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
// 获取 UserMapper
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
// 查询用户信息
User user = userMapper.selectById(1);
System.out.println("用户名:" + user.getName() + ",年龄:" + user.getAge());
// 提交事务
sqlSession.commit();
// 关闭 SqlSession
sqlSession.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
运行 UserMapperTest.java 文件,输出结果为:
用户名:张三,年龄:20
总结
通过本文的学习,相信你已经掌握了 MyBatis 的基本用法和实战技巧。MyBatis 可以大大提高数据库操作的效率,让你在项目中更加轻松地处理数据库操作。希望本文能帮助你快速上手 MyBatis,开启你的数据库之旅!
