MyBatis 是一个优秀的持久层框架,它消除了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的工作。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,简单的Java对象)映射成数据库中的记录。
MyBatis 的核心优势
在开始实战案例之前,我们先来了解一下 MyBatis 的几个核心优势:
- 半自动的ORM框架:MyBatis 结合了彻底的手工映射和代码生成,在必要的时候完全手动,其他时候自动。
- 灵活的映射文件:通过 XML 文件来定义 SQL 映射,灵活地控制 SQL 语句。
- 插件支持:MyBatis 允许你创建自定义的插件来增强其功能。
- 易于扩展:MyBatis 的设计使其非常容易扩展。
实战案例:使用 MyBatis 查询数据库
假设我们有一个简单的数据库表 users,其中包含 id, username, email 和 age 字段。以下是如何使用 MyBatis 来实现一个查询所有用户的功能。
第一步:创建数据库和表
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
email VARCHAR(100),
age INT
);
第二步:创建实体类
public class User {
private Integer id;
private String username;
private String email;
private Integer age;
// 省略 getter 和 setter
}
第三步:编写 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/testdb"/>
<property name="username" value="root"/>
<property name="password" value=""/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/example/mapper/UserMapper.xml"/>
</mappers>
</configuration>
第四步:创建 Mapper 接口
package com.example.mapper;
public interface UserMapper {
List<User> getAllUsers();
}
第五步:编写 Mapper 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="getAllUsers" resultType="User">
SELECT * FROM users
</select>
</mapper>
第六步:编写测试代码
public class MyBatisTest {
public static void main(String[] args) {
SqlSessionFactory sqlSessionFactory = MyBatisUtil.getSqlSessionFactory();
try (SqlSession session = sqlSessionFactory.openSession()) {
UserMapper mapper = session.getMapper(UserMapper.class);
List<User> users = mapper.getAllUsers();
for (User user : users) {
System.out.println(user.getUsername() + " - " + user.getEmail() + " - " + user.getAge());
}
}
}
}
第七步:运行测试
执行 MyBatisTest 类中的 main 方法,你应该会看到控制台输出所有用户的姓名、电子邮件和年龄。
通过这个简单的案例,我们可以看到 MyBatis 的强大之处。它简化了数据库操作,并且通过灵活的映射配置,我们可以轻松地适应各种数据库操作需求。希望这个入门案例能帮助你更好地理解 MyBatis。
