引言
MyBatis 是一个优秀的持久层框架,它消除了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
本文将带您从入门到实践,逐步了解 MyBatis 的基本概念、配置、使用方法,并通过实际案例来加深理解。
MyBatis 基本概念
1. 映射器(Mapper)
映射器接口定义了一个或多个 SQL 映射语句,MyBatis 通过这些映射器接口和映射文件(XML)来生成对应的 SQL 语句。
2. 映射文件(XML)
映射文件是 MyBatis 的核心配置文件,它包含了 SQL 语句和 MyBatis 的各种配置信息。
3. 实体类(POJO)
实体类用于封装数据库中的数据,MyBatis 将数据库表中的数据映射到对应的实体类中。
4. SQL 语句
SQL 语句用于操作数据库,MyBatis 将映射器接口中的方法与 SQL 语句进行绑定。
MyBatis 入门配置
1. 添加依赖
在 Maven 项目中,添加以下依赖到 pom.xml 文件中:
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
</dependencies>
2. 创建映射文件
在 src/main/resources 目录下创建一个名为 mapper 的文件夹,并在其中创建一个名为 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="selectById" resultType="com.example.entity.User">
SELECT * FROM user WHERE id = #{id}
</select>
</mapper>
3. 创建映射器接口
在 src/main/java 目录下创建一个名为 com.example.mapper 的包,并在其中创建一个名为 UserMapper 的接口。
package com.example.mapper;
import com.example.entity.User;
import org.apache.ibatis.annotations.Select;
public interface UserMapper {
@Select("SELECT * FROM user WHERE id = #{id}")
User selectById(Integer id);
}
4. 创建实体类
在 src/main/java 目录下创建一个名为 com.example.entity 的包,并在其中创建一个名为 User 的类。
package com.example.entity;
public class User {
private Integer id;
private String name;
private Integer age;
// 省略 getter 和 setter 方法
}
5. 配置 MyBatis
在 src/main/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.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test?useSSL=false"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
</configuration>
MyBatis 实际应用案例
1. 查询数据
package com.example.mapper;
import com.example.entity.User;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
public class UserMapperTest {
public static void main(String[] args) {
try {
// 创建 SqlSessionFactory
SqlSessionFactory sqlSessionFactory = MyBatisUtil.getSqlSessionFactory();
// 获取 SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
// 获取 UserMapper
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
// 查询数据
User user = userMapper.selectById(1);
System.out.println(user);
// 关闭 SqlSession
sqlSession.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
2. 添加数据
package com.example.mapper;
import com.example.entity.User;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
public class UserMapperTest {
public static void main(String[] args) {
try {
// 创建 SqlSessionFactory
SqlSessionFactory sqlSessionFactory = MyBatisUtil.getSqlSessionFactory();
// 获取 SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
// 获取 UserMapper
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
// 添加数据
User user = new User();
user.setName("张三");
user.setAge(20);
userMapper.insert(user);
// 提交事务
sqlSession.commit();
// 关闭 SqlSession
sqlSession.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
总结
通过本文的学习,您应该已经对 MyBatis 有了一定的了解。MyBatis 可以大大简化数据库操作,提高开发效率。在实际项目中,您可以根据需要配置和扩展 MyBatis,以满足不同的需求。希望本文能对您的学习有所帮助。
