菜鸟之路Day33一一Mybatis入门

菜鸟之路Day33一一Mybatis入门

作者:blue

时间:2025.5.18

文章内容学习自黑马程序员BV1m84y1w7Tb

文章目录

MyBatis是一款优秀的持久层框架,用于简化JDBC的开发

入门案例:使用Mybatis查询所有用户数据

1.准备工作(创建springboot工程,数据库表user,实体类User)

创建springboot工程

创建User表

并在其中任意添加若干条数据项

创建实体类User

java 复制代码
package com.bluening.mybatis_demo.pojo;

public class User {
    private int id;
    private String name;
    private int age;
    private int gender;
    private String phone;

    public User() {
    }

    public User(int id, String name, int age, int gender, String phone) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.gender = gender;
        this.phone = phone;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getGender() {
        return gender;
    }

    public void setGender(int gender) {
        this.gender = gender;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", gender=" + gender +
                ", phone='" + phone + '\'' +
                '}';
    }
}

2.引入Mybatis的相关依赖,配置Mybatis(数据库连接信息)

在application.properties配置文件中配置数据库连接信息

复制代码
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306
spring.datasource.username=root
spring.datasource.password=1234

3.编写SQL语句(注解/XML)

java 复制代码
package com.bluening.mybatis_demo.mapper;

import com.bluening.mybatis_demo.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper //在运行时,会自动生成该接口的实现类对象(代理对象),并将该对象交给IOC容器管理
public interface UserMapper {
    //查询用户全部信息
    @Select("select * from user")
    public List<User> findAll();
}
  • @Mapper@Select 是 MyBatis 的注解,用于声明映射器和 SQL 查询。
  • @Mapper 注解
    • 告诉 MyBatis 这是一个映射器接口。
    • 运行时 MyBatis 会自动生成该接口的代理实现类,并注册到 Spring 的 IOC 容器中。
  • @Select 注解
    • 直接在接口方法上声明 SQL 查询语句。
    • 等效于在 XML 配置文件中编写 <select> 标签。
  • 方法签名
    • 返回类型 List<User> 表示查询结果将映射为 User 对象列表。
    • 方法名 findAll() 是自定义的,用于描述查询功能。
  • 执行流程
    1. 调用 userMapper.findAll() 时,MyBatis 执行 SQL:SELECT * FROM user
    2. 将结果集自动映射到 User 对象列表。

单元测试

java 复制代码
package com.bluening.mybatis_demo;

import com.bluening.mybatis_demo.mapper.UserMapper;
import com.bluening.mybatis_demo.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

@SpringBootTest//springboot整合单元测试的注解
class MybatisDemoApplicationTests {

    @Autowired
    private UserMapper userMapper;

    @Test
    public void testListUser() {
        List<User> users = userMapper.findAll();
        for (User user : users) {
            System.out.println(user);
        }
    }

}

4.lombok

以上代码存在实体类过于臃肿的问题,这时我们可以使用lombok来优化

Lombok是一个实用的java类库,能通过注解的形式自动生成构造器,getter/setter,equals,hashcode,toString等方法,并可以自动化生成日志变量,简化java开发,提高效率

注解 作用
@Getter/Setter 为所有的属性提供get/set方法
@ToString 会给类自动生成易阅读的toString方法
@EqualsAndHashCode 根据类所拥有的非静态字段自动重写equals方法和hashCode方法
@Data 提供了更综合生成代码的功能(@Getter+@Setter+@ToString+@EqualsHashCode)
@NoArgsConstructor 为实体类生成无参的构造器方法
@AllArgsConstructor 为实体类生成除了static修饰的字段之外带有各参数的构造器方法

引入依赖

xml 复制代码
 <!--lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

修改实体类

java 复制代码
import lombok.Data;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private int id;
    private String name;
    private int age;
    private int gender;
    private String phone;
}
相关推荐
考虑考虑1 天前
Jpa使用union all
java·spring boot·后端
用户3721574261351 天前
Java 实现 Excel 与 TXT 文本高效互转
java
浮游本尊1 天前
Java学习第22天 - 云原生与容器化
java
渣哥1 天前
原来 Java 里线程安全集合有这么多种
java
间彧1 天前
Spring Boot集成Spring Security完整指南
java
间彧1 天前
Spring Secutiy基本原理及工作流程
java
Java水解1 天前
JAVA经典面试题附答案(持续更新版)
java·后端·面试
洛小豆1 天前
在Java中,Integer.parseInt和Integer.valueOf有什么区别
java·后端·面试
前端小张同学1 天前
服务器上如何搭建jenkins 服务CI/CD😎😎
java·后端
ytadpole1 天前
Spring Cloud Gateway:一次不规范 URL 引发的路由转发404问题排查
java·后端