MyBatis 是一个优秀的持久层框架,它对 JDBC 的操作数据库的过程进行了封装,让开发者只需要关注 SQL 本身,而不需要花费精力去处理诸如注册驱动、创建连接、创建 statement 等繁杂的过程。本文将带您深入了解 MyBatis 的核心概念、配置和使用方法,助您轻松实现 Java 数据库操作。
一、MyBatis 核心概念
1. 映射器(Mapper)
映射器是 MyBatis 的核心,它将 SQL 语句和 Java 方法关联起来。通过映射器,我们可以将 SQL 语句映射到对应的 Java 方法上,实现数据库的增删改查操作。
2. 映射文件(Mapper XML)
映射文件是 MyBatis 的配置文件,它包含了 SQL 语句、参数、返回类型等配置信息。映射文件将 SQL 语句和 Java 方法关联起来,实现数据库操作。
3. SQL 映射接口(Mapper Interface)
SQL 映射接口是 Java 接口,它包含了数据库操作的抽象方法。MyBatis 通过动态代理技术,根据 SQL 映射接口生成对应的代理类,实现数据库操作。
4. 实体类(Entity)
实体类是数据库表的映射,它包含了数据库表中的字段。在 MyBatis 中,我们可以将实体类与 SQL 映射接口关联起来,实现数据的增删改查操作。
二、MyBatis 配置
1. 配置文件(mybatis-config.xml)
配置文件是 MyBatis 的核心配置文件,它包含了 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/test"/>
<property name="username" value="root"/>
<property name="password" value=""/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/example/mapper/UserMapper.xml"/>
</mappers>
</configuration>
2. 映射文件(Mapper XML)
映射文件包含了 SQL 语句、参数、返回类型等配置信息。以下是一个简单的 UserMapper 映射文件示例:
<?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="selectUserById" resultType="com.example.entity.User">
SELECT * FROM user WHERE id = #{id}
</select>
</mapper>
3. SQL 映射接口(Mapper Interface)
SQL 映射接口是 Java 接口,它包含了数据库操作的抽象方法。以下是一个简单的 UserMapper 接口示例:
package com.example.mapper;
import com.example.entity.User;
public interface UserMapper {
User selectUserById(Integer id);
}
三、MyBatis 使用方法
1. 创建数据库和表
首先,我们需要创建一个数据库和对应的表,以下是一个简单的 User 表结构:
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`age` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2. 编写实体类
接下来,我们需要编写一个 User 实体类,它将映射到 User 表:
package com.example.entity;
public class User {
private Integer id;
private String name;
private Integer age;
// 省略 getter 和 setter 方法
}
3. 编写 Mapper 接口
然后,我们需要编写一个 UserMapper 接口,它将包含数据库操作的抽象方法:
package com.example.mapper;
import com.example.entity.User;
public interface UserMapper {
User selectUserById(Integer id);
}
4. 编写 Mapper XML
接下来,我们需要编写一个 UserMapper 映射文件,它将包含 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="selectUserById" resultType="com.example.entity.User">
SELECT * FROM user WHERE id = #{id}
</select>
</mapper>
5. 创建 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>
<!-- ... 其他配置 ... -->
<mappers>
<mapper resource="com/example/mapper/UserMapper.xml"/>
</mappers>
</configuration>
6. 使用 MyBatis
最后,我们可以使用 MyBatis 进行数据库操作。以下是一个简单的示例:
package com.example.mapper;
import com.example.entity.User;
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) {
// 创建 SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(new FileInputStream("mybatis-config.xml"));
// 获取 SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
// 获取 UserMapper
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
// 执行查询
User user = userMapper.selectUserById(1);
// 输出结果
System.out.println(user);
// 关闭 SqlSession
sqlSession.close();
}
}
以上是 MyBatis 的基本使用方法,通过学习本文,您应该已经掌握了 MyBatis 的核心概念、配置和使用方法。希望本文能帮助您轻松实现 Java 数据库操作。
