MyBatis是一款优秀的Java持久层框架,它消除了几乎所有的JDBC代码和手动设置参数以及获取结果集的工作。MyBatis通过简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,简单的Java对象)映射成数据库中的记录。
初识MyBatis
什么是MyBatis?
MyBatis本质上是一个半自动化的持久层框架,它允许我们使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs映射成数据库中的记录。
为什么选择MyBatis?
- 简化JDBC操作:无需编写复杂的JDBC代码。
- 灵活的SQL映射:可以使用XML或注解定义SQL语句,支持动态SQL。
- 易于扩展:插件机制方便自定义功能。
从零开始搭建MyBatis环境
1. 创建Maven项目
使用Maven创建一个基本的Java项目。
<dependencies>
<!-- MyBatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!-- MySQL驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
<!-- SLF4J日志门面 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.30</version>
</dependency>
</dependencies>
2. 配置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/mybatis_example"/>
<property name="username" value="root"/>
<property name="password" value=""/>
</dataSource>
</environment>
</environments>
<!-- 映射文件 -->
<mappers>
<mapper resource="com/mybatis/example/UserMapper.xml"/>
</mappers>
</configuration>
3. 定义实体类
创建实体类User.java。
public class User {
private Integer id;
private String name;
private String email;
// 省略getter和setter方法
}
4. 创建映射文件
创建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.mybatis.example.UserMapper">
<select id="selectUser" resultType="User">
SELECT * FROM user WHERE id = #{id}
</select>
</mapper>
5. 创建Mapper接口
创建UserMapper.java接口。
public interface UserMapper {
User selectUser(Integer id);
}
MyBatis的核心概念
1. Mapper接口
Mapper接口中的方法与映射文件中的SQL语句一一对应,通过方法名称来匹配对应的SQL语句。
2. 映射文件
映射文件定义了SQL语句以及与之对应的Java对象之间的关系。
3. SQL映射
SQL映射包括SQL语句、参数、返回类型等信息。
4. 配置文件
配置文件包含数据库配置、事务管理器、数据源等。
实战案例:查询用户信息
以下是一个简单的查询用户信息的案例。
public class MyBatisDemo {
public static void main(String[] args) {
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsInputStream("mybatis-config.xml"));
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = userMapper.selectUser(1);
System.out.println("User Name: " + user.getName());
} catch (Exception e) {
e.printStackTrace();
}
}
}
总结
MyBatis是一个功能强大的持久层框架,可以帮助我们快速、高效地完成数据库操作。通过本文的学习,相信你已经掌握了MyBatis的基本使用方法。在后续的学习过程中,你可以尝试使用MyBatis完成更复杂的数据库操作,并探索其更多高级功能。
