MyBatis 是一个优秀的持久层框架,它消除了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
MyBatis 简介
MyBatis 最初由原代码库iBatis迁移而来,后来由开源社区维护。它的设计理念是保持简单,易于使用,同时提供灵活性和扩展性。MyBatis 通过 XML 或注解的方式定义 SQL 映射,使得 SQL 语句和 Java 代码分离,提高了代码的可读性和可维护性。
MyBatis 核心概念
1. 映射器(Mapper)
映射器是 MyBatis 的核心,它定义了 SQL 语句和 Java 实体之间的映射关系。映射器通常是一个接口,接口中的方法定义了 SQL 语句的执行逻辑。
2. 映射文件(Mapper XML)
映射文件定义了 SQL 语句、参数和结果集的映射关系。它是一个 XML 文件,可以放置在类路径下的任何位置。
3. 实体类(POJO)
实体类表示数据库表中的记录,它们通常对应于数据库表中的一行。
4. SQL 语句
SQL 语句用于操作数据库,如查询、更新、删除等。
MyBatis 实践
1. 创建 MyBatis 项目
首先,需要创建一个 Java 项目,并添加 MyBatis 相关的依赖。
<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 文件,配置数据库连接、事务管理器等。
<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/test"/>
<property name="username" value="root"/>
<property name="password" value=""/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/example/mapper/UserMapper.xml"/>
</mappers>
</configuration>
3. 创建映射文件
在 com/example/mapper 目录下创建 UserMapper.xml 文件,定义 SQL 语句和实体类之间的映射关系。
<mapper namespace="com.example.mapper.UserMapper">
<select id="selectById" resultType="com.example.entity.User">
SELECT * FROM user WHERE id = #{id}
</select>
</mapper>
4. 编写实体类
在 com/example/entity 目录下创建 User 类,表示数据库表中的记录。
package com.example.entity;
public class User {
private Integer id;
private String name;
private String email;
// getter 和 setter 方法
}
5. 编写接口
在 com/example/mapper 目录下创建 UserMapper 接口,定义 SQL 语句的执行逻辑。
package com.example.mapper;
public interface UserMapper {
User selectById(Integer id);
}
6. 使用 MyBatis
在主类中,创建 SQL 会话工厂和映射器,并执行 SQL 语句。
package com.example;
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) {
try (SqlSession session = sqlSessionFactory.openSession()) {
UserMapper mapper = session.getMapper(UserMapper.class);
User user = mapper.selectById(1);
System.out.println(user.getName());
}
}
}
总结
本文从零开始,深入浅出地介绍了 MyBatis 框架,包括其核心概念、实践步骤等。通过本文的学习,读者可以快速上手 MyBatis,并将其应用于实际项目中。
