引言
MyBatis 是一个优秀的持久层框架,它消除了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的工作。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
第一章:MyBatis 简介
1.1 MyBatis 的优势
- 简化数据库操作
- 高度可配置性
- 支持自定义 SQL、存储过程和高级映射
- 与 Spring 等其他框架集成
1.2 MyBatis 的架构
MyBatis 主要由以下几个部分组成:
- SQL 映射文件
- 接口
- 实体类
- MyBatis 配置文件
第二章:环境搭建
2.1 环境准备
- Java Development Kit (JDK)
- Integrated Development Environment (IDE) 如 IntelliJ IDEA 或 Eclipse
- MySQL 数据库
- Maven 或 Gradle 构建工具
2.2 创建 Maven 项目
<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.22</version>
</dependency>
</dependencies>
第三章:配置 MyBatis
3.1 创建 MyBatis 配置文件
在 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/your_database"/>
<property name="username" value="your_username"/>
<property name="password" value="your_password"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/example/mapper/UserMapper.xml"/>
</mappers>
</configuration>
3.2 创建 Mapper 接口
在相应的包下创建接口,例如 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 {
@Select("SELECT * FROM users WHERE id = #{id}")
User getUserById(int id);
}
3.3 创建实体类
在相应的包下创建实体类,例如 User.java。
package com.example.entity;
public class User {
private int id;
private String name;
private String email;
// Getters and Setters
}
第四章:编写 SQL 映射文件
4.1 创建 SQL 映射文件
在 src/main/resources 目录下创建对应的 Mapper 文件,例如 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="getUserById" resultType="com.example.entity.User">
SELECT * FROM users WHERE id = #{id}
</select>
</mapper>
第五章:使用 MyBatis
5.1 创建 SqlSessionFactory
package com.example;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class MyBatisUtil {
public static SqlSessionFactory getSqlSessionFactory() throws Exception {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
return new SqlSessionFactoryBuilder().build(inputStream);
}
}
5.2 使用 MyBatis 执行查询
package com.example;
import com.example.entity.User;
import com.example.mapper.UserMapper;
import org.apache.ibatis.session.SqlSession;
public class Main {
public static void main(String[] args) {
try (SqlSession session = MyBatisUtil.getSqlSessionFactory().openSession()) {
UserMapper mapper = session.getMapper(UserMapper.class);
User user = mapper.getUserById(1);
System.out.println(user.getName());
} catch (Exception e) {
e.printStackTrace();
}
}
}
第六章:高级特性
6.1 关联映射
MyBatis 支持复杂的关联映射,如一对一、一对多和多对多。
6.2 动态 SQL
MyBatis 提供了动态 SQL 功能,可以编写动态的 SQL 语句。
6.3 缓存机制
MyBatis 提供了查询缓存机制,可以减少数据库访问次数。
第七章:总结
通过以上章节,我们学习了如何使用 MyBatis 进行数据库操作。MyBatis 提供了强大的功能和灵活性,可以有效地简化数据库操作,提高开发效率。
附录:常见问题解答
- Q:MyBatis 与 Hibernate 有何区别? A:MyBatis 是一个半ORM框架,它允许你手动编写 SQL 语句,而 Hibernate 是一个全ORM框架,它自动生成 SQL 语句。
- Q:MyBatis 如何处理事务?
A:MyBatis 支持手动和自动事务管理。在 MyBatis 配置文件中配置事务管理器,并在相应的接口方法中调用
session.commit()或session.rollback()来处理事务。
希望这份指南能帮助你更好地掌握 Java MyBatis 框架,实现高效的数据库操作。
