MyBatis 入门学习总结
一、 MyBatis概述
MyBatis 是一个优秀的 持久层框架,它封装了 JDBC,简化了与数据库的交互。通过 MyBatis,开发者可以使用简单的 XML 或注解来配置和操作数据库,而无需直接编写繁琐的 JDBC 代码。
MyBatis 的核心特性
- SQL 显式化:与 Hibernate 等 ORM 框架相比,MyBatis 让开发者直接编写 SQL,更加灵活。
- 动态 SQL:支持动态构建 SQL 查询,提高复杂查询的开发效率。
- 简单易用:配置简单,学习成本低。
- 自动映射:将数据库表和 Java 对象自动映射。
二、入门程序学习
步骤1:创建 Spring Boot 工程并引入 MyBatis 相关依赖
- 在创建 Spring Boot 项目时,选择
MyBatis Framework
和MySQL Driver
依赖。
或者:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.13</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
准备数据库表和实体类
创建一个 user
表,包含以下字段:
CREATE TABLE user (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50),
password VARCHAR(50),
name VARCHAR(50),
age INT
);
-- 插入测试数据
INSERT INTO user (username, password, name, age) VALUES
('xxx', 'xxx', 'xxx', xxx),
....................................
创建实体类 User;
配置 MyBatis 数据源
在 application.properties
中配置数据库连接信息:
spring.datasource.url=jdbc:mysql://localhost:3306/web01
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=root@1234
步骤 2:编写 MyBatis 程序
创建 Mapper 接口
- 使用
@Mapper
注解声明接口。 - 编写 SQL 查询语句,使用
@Select
注解直接定义查询语句。
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/*声明当前接口是mybatis的持久层接口;
框架运行时, 会自动的为该接口生成一个实现类对象(代理对象),
并且将该是实现类对象交给IOC容器管理 - bean*/
@Mapper
public interface UserMapper {
@Select("SELECT * FROM user")
List<User> findAll();
}
编写测试逻辑
- 在 Spring Boot 的测试或主程序中注入
UserMapper
接口,并调用其方法查询用户数据。
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
public class MyBatisDemo implements CommandLineRunner {
@Autowired
private UserMapper userMapper;
@Override
public void run(String... args) throws Exception {
List<User> users = userMapper.findAll();
for (User user : users) {
System.out.println("ID: " + user.getId());
System.out.println("用户名: " + user.getUsername());
System.out.println("姓名: " + user.getName());
System.out.println("年龄: " + user.getAge());
}
}
}
MyBatis XML 映射配置教程
在 MyBatis 中,除了通过注解配置 SQL 语句,还可以使用 XML 文件来配置 SQL 语句。XML 配置方式更加适合复杂 SQL 逻辑,并能与代码分离,便于维护。
XML 映射配置的规则
- XML 文件的名称与 Mapper 接口名称一致,并且放在同一包路径下(同包同名)。
namespace
属性与 Mapper 接口的全限定名一致,用于标识对应的 Mapper。- XML 文件中 SQL 语句的
id
必须与 Mapper 接口中的方法名一致,返回类型也要保持一致。
步骤:
(1) 创建 Mapper 接口
在 com.example.mapper
包下创建 UserMapper
接口:
package com.itheima.mapper;
import com.itheima.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
/*声明当前接口是mybatis的持久层接口; 框架运行时,
会自动的为该接口生成一个实现类对象(代理对象),
并且将该是实现类对象交给IOC容器管理 - bean*/
public interface UserMapper {
public List<User> findAll();
}
(2) 创建 XML 映射文件
在 resources/com/example/mapper
下创建 UserMapper.xml
:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.itheima.mapper.UserMapper">
<!--配置SQL: 查询全部用户
resultType : 查询返回的单条记录所需要封装的类型
-->
<select id="findAll" resultType="com.itheima.pojo.User">
select id, username, password, name, age from user
</select>
</mapper>
namespace
:与UserMapper
的全限定名一致。id
:SQL 语句的标识符,需与接口中的方法名一致。resultType
:指定查询结果映射到的实体类。
(3) 配置 MyBatis 核心文件
在 application.properties
文件中配置 MyBatis 数据源:
spring.datasource.url=jdbc:mysql://localhost:3306/web01
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=1234
//打印mybatis运行日志到控制台
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
三、总结
MyBatis 是一款优秀的持久层框架,用于简化 Java 应用程序与数据库之间的交互。它通过 XML 文件或注解的方式,直接操作 SQL,具备以下特点:
- 灵活性:开发者直接控制 SQL,适合复杂查询。
- 高效性:轻量级框架,性能开销小。
- 简单易用:配置简单,入门成本低