2023.11.25 关于 MyBatis 的配置与使用

目录

引言

MyBatis 介绍

掌握两个点

在框架中的定位

创建数据库

配置 MyBatis 

引入依赖

配置文件

创建实体类 

构建 Mapper 层代码实现

添加 mapper 接口

添加 UserMapper.xml 

实现 Service 层 

实现 Controller 层

最终测验 


阅读下面文章之前建议了解并创建一个 Spring Boot 项目

Spring Boot 项目的创建与使用


引言

  • 所谓的 SSM 项目
  • 现在其实指的就是 Spring Boot + Spring MVC + MyBatis 

MyBatis 介绍

  • MyBatis 是一款优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射
  • MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作
  • 简单来说 Mybatis 是更简单完成程序和数据库交互的工具,也就是更简单的操作和读取数据库工具

掌握两个点

  • 配置 MyBatis 开发环境
  • 使用 MyBatis 模式和语法操作数据库

在框架中的定位

  • 框架交互流程图

2023.11.25 关于 MyBatis 的配置与使用_第1张图片

创建数据库

  • 既然我们要讲解 MyBatis 的配置与使用,数据库的创建是必不可少的
  • 此处我们在本机的 MySQL 数据库中创建一个 message 数据库
  • 且在 message 数据库中再创建一个 user 表,用来存放用户信息
drop database if exists message;
create database message;
use message;

create table user(
    id int primary key auto_increment,
    name varchar(20),
    age int
);

insert into user values(null,"xiaolin",18);
insert into user values(null,"maolin",20);
insert into user values(null,"xiaomei",19);

配置 MyBatis 

引入依赖

  • 我们在 pom.xml 中引入相关依赖

	com.mysql
	mysql-connector-j
	runtime
	


	org.mybatis.spring.boot
	mybatis-spring-boot-starter
	2.3.0

配置文件

  • 此处配置均在配置文件 application.properties 下添加
# 配置数据库连接
spring.datasource.url=jdbc:mysql://localhost:3306/message?characterEncoding=utf8&useSSL=false
spring.datasource.username=root
# 此处填你自己设置的数据库密码
spring.datasource.password=1111
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
  • 配置连接字符串
# 配置 mybatis xml 的文件路径
mybatis.mapper-locations=classpath:mybatis/*Mapper.xml
  • 配置 MyBatis 中的 XML 路径
  • 我们需在 resources/mapper 创建所有表的 xml 文件

注意:

  • 当我们仅引入依赖,未配置上述文件
  • 此时启动我们的 SSM 项目,一定会发生报错,即启动失败

2023.11.25 关于 MyBatis 的配置与使用_第2张图片

  • 数据库连接配置文件:该文件包含了连接数据库所需的信息,如数据库的 URL、用户名、密码等,如果未配置该文件,那么应用程序将无法连接到数据库,从而无法进行数据的读写操作

2023.11.25 关于 MyBatis 的配置与使用_第3张图片

  • mybatis xml 文件路径:该文件定义了 mybatis 的 SQL 映射语句和结果映射。如果未配置该文件,则 mybatis 将无法找到 SQL 映射语句,从而无法执行数据库操作

创建实体类 

  • 此处我们创建一个 User 实体类为了对应上我们在 message 数据库中创建的 user 表
  • 从而建立好一个映射关系
  • 两点要求:
  • 具有 getter 和 setter 方法
  • 属性名必须与 sql 字段名一致
import lombok.Data;

@Data
public class User {
    private int id;
    private String name;
    private int age;
}
  • 此处我们使用 LomBok 来通过注解给 User 实体类添加上 getter 和 setter 方法

构建 Mapper 层代码实现

  • MyBatis 通过两个部分建立后端和数据库的联系
  • 接口(该接口中的每个方法 均映射了 XML 文件中的具体 SQL 语句)
  • XML 实现接口(用来写具体的 SQL 语句)

2023.11.25 关于 MyBatis 的配置与使用_第4张图片


添加 mapper 接口

  • 此处我们创建一个 UserMapper 接口
  • 接口下的每个方法就对应 对数据库 user 表的一个操作
  • 这里实现的是根据 id 查询用户信息
import com.example.demo.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

//添加 @Mapper 注解 代表该接口会伴随着 项目的启动而注入到容器中
@Mapper
public interface UserMapper {
//    根据 id 查询用户信息
    User getUserById(@Param("user_id") Integer id);
}

注意:

  • 此处的 @Param 注解用于给方法的参数重命名

添加 UserMapper.xml 

  • 该 xml 文件需与上述的 mapper 接口相对应

添加 *Mapper.xml  的固定格式





  • 因为此处的 UserMapper.xml 需与上文的 UserMapper 接口相对应
  • 即 namespace 需填 UserMapper 接口的文件路径

2023.11.25 关于 MyBatis 的配置与使用_第5张图片

  • 又因为此处我们需要写的是 根据 id 查询用户信息,即应该使用 select 语句




    
    
  • 该新添加的 select 标签具有三处对应关系

2023.11.25 关于 MyBatis 的配置与使用_第6张图片

实现 Service 层 

  • 在 MyBatis 中,服务层(Service 层)的主要作用是封装业务逻辑
  • 实现业务流程的复杂性,提高代码的可重用性和可维护性
  • 简单来说 服务层中的方法一般用来编排 mapper 层的各个接口,从而实现所需的业务逻辑
  • Controller 会调用 Service 层的方法,而不是直接调用 Mapper 层的方法

实例理解 :

  • 有一个业务逻辑需要在 user 表中连续插入多条数据,则可在 service 层通过 for 循环的方式调用 mapper 层中对应的方法来实现该逻辑

  • 此处我们的业务逻辑很简单
  • 仅实现根据 id 查询用户信息即可

2023.11.25 关于 MyBatis 的配置与使用_第7张图片

  • UserService 类中具体代码实现
import com.example.demo.entity.User;
import com.example.demo.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

//添加 @Service 注解 代表该类会伴随着 项目的启动而注入到容器中
@Service
public class UserService {

    @Autowired
    private UserMapper userMapper;

    public User getUserById(Integer id) {
        return userMapper.getUserById(id);
    }
}

实现 Controller 层

  •  控制器层用于直接与客户端进行交互
  • 接收客户端 HTTP 请求,并实现相应的业务逻辑

  • 此处客户端的 HTTP 请求正是想根据 id 查询用户信息

2023.11.25 关于 MyBatis 的配置与使用_第8张图片

  • UserController 类中具体代码实现
import com.example.demo.entity.User;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@ResponseBody
@Controller
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping("/get-user-by-id")
    public User getUserById(Integer id) {
        if(id == null){
            return null;
        }
        return userService.getUserById(id);
    }
}

最终测验 

  • 我们在浏览器的 URL 框中输入与 UserController 所对应的 URL 地址,从而实现调用到 getUserById 方法

2023.11.25 关于 MyBatis 的配置与使用_第9张图片

  • 如上图所示,我们成功查询到了数据库中 id = 1 的用户信息

  • 看完上述文章后,重新理解下图

2023.11.25 关于 MyBatis 的配置与使用_第10张图片

  • 这便是上述文章所写的整个交互过程

你可能感兴趣的:(Spring,mybatis,java,开发语言)