Springboot | Mybatis入门01

Springboot | Mybatis入门01

Mybatis介绍

Mybatis官方文档:https://mybatis.org/mybatis-3/zh/index.html

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

简单来说,Mybatis就是读取MySql数据库数据,将数据转为Java类对象,提供给Springboot使用

Mybatis简单入门

所有代码在gitee仓库:https://gitee.com/wang-taoan/l06_mybatis01

1.确定需求

目标需求:发送get请求,返回后端从数据库中读取的数据

2.创建数据库、添加数据

数据库管理工具:Navicat

数据库:MySQL

CREATE DATABASE mybatis;

USE mybatis

CREATE TABLE user (
    id INT NOT NULL AUTO_INCREMENT,
    name VARCHAR(255) NOT NULL,
    age INT,
    sex CHAR(1),
    create_time DATETIME,
    PRIMARY KEY (id)
);

INSERT INTO user (name, age, sex, create_time)
VALUES ('John Doe', 30, 'M', '2023-10-22 09:00:00');

INSERT INTO user (name, age, sex, create_time)
VALUES ('Jane Smith', 25, 'F', '2023-10-22 10:30:00');

INSERT INTO user (name, age, sex, create_time)
VALUES ('Alice Johnson', 28, 'F', '2023-10-22 13:15:00');

3.新建springboot项目

新建一个普通项目

在该项目下新建一个springboot模块,命名为mybatis

依赖勾选:

  • Spring Web
  • MySQL Driver
  • MyBatis Framework

4.配置数据库连接和mybatis

项目名/mybatis/src/main/resources目录下新建yml文件application.yml

更换自己的数据库名、用户名、密码

spring:  
  datasource:  
    driver-class-name: com.mysql.cj.jdbc.Driver  
    url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8  
    username: root  
    password: 123456  
  
mybatis:  
  typeAliasesPackage: com.example.mybatis.domain  
  mapperLocations: classpath:mapper/*.xml

5.编写核心代码

项目名/mybatis/src/main/java/com/example/mybatis 目录下,新建controller、service、mapper、domain 包

项目名/mybatis/src/main/resources目录下,新建mapper目录

在各个目录下编写对应的java、xml文件

// domain/User
public class User {  
    private int id;  
    private String name;  
    private int age;  
    private int sex;  
    private String createTime;  
   
}

// mapper/UserMapper
public interface UserMapper {  
    List<User> selectAllUser();  
}

// service/UserService
@Service  
public class UserService {  
    @Autowired  
    private UserMapper userMapper;  
  
    public List<User> selectAllUser()  
    {  
        return userMapper.selectAllUser();  
    }  
}

// controller/HelloController
@RestController  
public class HelloController {  
    @Autowired  
    private UserService userService;  
    @GetMapping("/hello")  
    public List<User> hello(){  
        return userService.selectAllUser();  
    }  
}

mapper/UserMapper.xml 如下

<?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.mybatis.mapper.UserMapper">  
    <resultMap id="UserResult" type="User">  
        <id     property="id"   column="id"     />  
        <result property="name" column="name"   />  
        <result property="age"  column="age"   />  
        <result property="sex"  column="sex"   />  
        <result property="createTime"  column="create_time"   />  
    </resultMap>  
  
    <select id="selectAllUser" resultMap="UserResult">  
        select * from user    </select>  
  
</mapper>

Springboot主启动类上加上注释

@MapperScan("com.example.mybatis.mapper")

6.启动程序、测试接口

启动springboot程序

用apifox测试接口

得到了服务器从数据库返回的数据

Mybatis Mapper XML知识

Mybatis通过XML文件,将数据库表中字段与Java类属性一一映射,将数据转为Java类对象

对应的mapper包下的mapper接口如下

创建、注入bean的注解

由spring容器创建bean对象:

  • @Mapper
  • @Service
  • @component

spring容器注入bean对象:

  • @Autowired

辨别@Mapper和@MapperScan

概述:推荐使用@MapperScan,最便捷

@Mapper 注解@Mapper 注解用于标识单个 Mapper 接口,将这个接口标记为 MyBatis 的 Mapper 接口。

@Mapper
public interface UserMapper {
    User getUserById(int id);
    void insertUser(User user);
    // 其他数据库操作方法
}

@MapperScan 注解@MapperScan 注解通常用于配置 MyBatis 扫描路径,以便 Spring Boot 能够自动扫描和注册多个 Mapper 接口。

@SpringBootApplication
@MapperScan("com.example.mybatis.mapper")
public class YourApplication {
    public static void main(String[] args) {
        SpringApplication.run(YourApplication.class, args);
    }
}

如果给每个mapper接口注解了@Mapper了,就不用在启动类上@MapperScan

如果在启动类上@MapperScan了,就不需要给每个mapper接口@Mapper了

总结:如果接口少可以用@Mapper,但最好直接用@MapperScan一次性配置多个 Mapper 接口的扫描路径

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值