MyBatis 是一个优秀的持久层框架,它消除了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,简单的 Java 对象)映射成数据库中的记录。
下面,我们将从零开始,逐步学习 MyBatis 的基本概念、安装配置以及如何用它来高效构建 Java 应用。
一、MyBatis 简介
1.1 MyBatis 的特点
- 半自动映射:MyBatis 将 SQL 语句与 Java 代码分离,降低了代码的复杂性。
- 易于上手:无需复杂的配置,可以快速上手。
- 支持自定义结果集:可以自定义结果集的映射,满足复杂的查询需求。
- 插件机制:支持自定义插件,如分页插件、日志插件等。
1.2 MyBatis 的适用场景
- 项目较小,不需要复杂的功能。
- 项目需要简单的数据访问层。
- 项目对性能要求不高。
二、安装与配置
2.1 下载 MyBatis
从 MyBatis 官网下载 MyBatis 的 jar 包。
2.2 添加依赖
在项目的 pom.xml 文件中添加 MyBatis 依赖:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>版本号</version>
</dependency>
2.3 配置 MyBatis
在项目的 resources 目录下创建 mybatis-config.xml 文件,配置 MyBatis 的基本参数:
<?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/数据库名"/>
<property name="username" value="用户名"/>
<property name="password" value="密码"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/example/mapper/UserMapper.xml"/>
</mappers>
</configuration>
三、MyBatis 使用示例
3.1 创建 Mapper 接口
创建一个 UserMapper 接口,定义查询用户的方法:
package com.example.mapper;
import com.example.model.User;
public interface UserMapper {
User findUserById(Integer id);
}
3.2 创建 Mapper 映射文件
在 resources 目录下创建 UserMapper.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">
<select id="findUserById" resultType="com.example.model.User">
SELECT * FROM user WHERE id = #{id}
</select>
</mapper>
3.3 使用 MyBatis
在 Java 代码中,通过 SqlSessionFactory 创建 SqlSession,然后使用 SqlSession 调用 Mapper 接口的方法:
package com.example.mapper;
import com.example.model.User;
public class MyBatisDemo {
public static void main(String[] args) throws Exception {
// 创建 SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(new FileInputStream("mybatis-config.xml"));
// 创建 SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
// 获取 Mapper 接口
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
// 调用 Mapper 接口的方法
User user = userMapper.findUserById(1);
System.out.println(user.getName());
// 关闭 SqlSession
sqlSession.close();
}
}
四、总结
通过以上步骤,我们学习了如何从零开始使用 MyBatis 框架构建 Java 应用。MyBatis 的半自动映射和易于上手的特性使其成为构建轻量级 Java 应用的理想选择。
在实际项目中,根据需求,我们可以使用 MyBatis 提供的多种功能,如缓存、动态 SQL 等,进一步提升应用性能。
