前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot怎么整合MyBatis?看懂这篇就够了!

SpringBoot怎么整合MyBatis?看懂这篇就够了!

作者头像
reload
发布2024-04-10 10:20:15
2610
发布2024-04-10 10:20:15
举报
文章被收录于专栏:Java后端Java后端

今天通过一个案例来学习一下 SpringBoot整合 MyBatis,以及介绍一下 lombok工具。

一、整合

1、案例

以Mybatis查询所有用户数据为例。

1.1 准备

1)创建SpringBoot工程、数据库表user、实体类User

在数据库 db1下新建一个 tb_user表,并添加一些数据,查询该表数据如下。

建表对应的SQL语句如下

代码语言:javascript
复制
create table tb_user(
 id int primary key auto_increment comment 'ID,唯一标识',
 username varchar(20) not null unique comment '用户名',
 name varchar(10) not null comment '姓名',
 age int comment '年龄',
 gender char(1) default '男' comment '性别'
) comment '用户表';

创建 User类(com.itweb.pojo.User)

注:以下代码除了属性需要手动进行封装外,其余直接右键用快捷方法生成。注意属性的类型要和数据库字段的类型对应,否则会报错

代码语言:javascript
复制
package com.itweb.pojo;

public class User {
    // 封装属性
    private Integer id;
    private String username;
    private String name;
    private Short age;
    private String gender;
    // 带全部参数的构造方法
    public User(Integer id, String username, String name, Short age, String gender) {
        this.id = id;
        this.username = username;
        this.name = name;
        this.age = age;
        this.gender = gender;
    }
    public User() { // 无参构造
    }
    // 提供对应的get和set方法
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Short getAge() {
        return age;
    }
    public void setAge(Short age) {
        this.age = age;
    }
    public String getGender() {
        return gender;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }
    // 提供对应的 toString方法
    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", gender=" + gender +
                '}';
    }
}

2)引入Mybatis相关依赖(创建springboot工程时已经引入),配置Mybatis(数据库连接信息)-->在 application.properties配置文件中添加如下代码

代码语言:javascript
复制
# 配置数据库的连接信息-四要素
# 1.驱动类名称
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 2.数据库连接的url,这里数据库的名称要改为自己的
spring.datasource.url=jdbc:mysql://localhost:3306/db1
# 3.连接数据库的用户名
spring.datasource.username=root
# 4.连接数据库的密码,这里密码要改为自己的
spring.datasource.password=123456

3)编写SQL语句(注解/XML),这里使用注解 首先,创建一个 UserMapper接口(com.itweb.mapper.UserMapper)

代码语言:javascript
复制
package com.itweb.mapper;

import com.itweb.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 tb_user")
    public List<User> list();
}
1.2 测试

在 springboot整合单元测试的类中,编写测试方法进行测试。

代码语言:javascript
复制
package com.itweb;

import com.itweb.mapper.UserMapper;
import com.itweb.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 SpringbootMybatis01ApplicationTests {

    @Autowired
    private UserMapper userMapper;

    @Test
    public void testListUser(){
        List<User> userList = userMapper.list();
        // 以 stream流的形式输出,遍历得到user
        userList.stream().forEach(user ->{
            System.out.println(user);
                });
    }
}

运行结果如下

注:控制台输出,出现中文乱码问题解决

点击 File ->Settings ->File Encodings,把编码格式都改为GBK,然后点击应用返回即可。重新运行测试类,发现控制台乱码问题已解决。

2、配置SQL提示

刚开始在mybatis中编写SQL语句是不会被IDEA识别的,这样当写错SQL时,不仅没有提示而且难以发现。可做如下配置让IDEA自动识别 mybatis中的SQL语句

并且如果IDEA没有与数据库建立连接的话,是不能识别表信息的。所以需要在IDEA中配置MySQL数据库连接,如下

完成上述两步后,再次在mybatis中编写SQL语句就能使用 IDEA强大的智能提示功能了,减少错误,提高效率。

二、lombok

1、引出

以上述创建 User实体类为例,除了属性需要手动进行封装外,其余可以直接右键用快捷方法生成。虽然也很快速,但是代码看起来非常冗长和臃肿。而使用 lombok就是一种更快速,更方便的方法。

2、lombok概述

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

主要注解如下,都是按名称来的,非常好理解和记忆。其中,@Data注解是使用频率较高的。

3、使用lombok

3.1 引入lombok依赖

在项目的pom.xml文件中添加如下lombok依赖

代码语言:javascript
复制
        <!-- lombok依赖-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
3.2 改造 User实体类

删除之前快捷方法生成的get,set,toString,全参和无参构造方法,添加上相应的注解,如下

代码语言:javascript
复制
package com.itweb.pojo;

import lombok.*;

//@Getter
//@Setter
//@ToString
//@EqualsAndHashCode

@Data  // 相当于上面4个
@NoArgsConstructor  // 无参构造
@AllArgsConstructor // 全参构造

public class User {
    // 封装属性
    private Integer id;
    private String username;
    private String name;
    private Short age;
    private String gender;
}
3.3 测试运行

运行测试类里面的测试方法,OK!成功查询出所有数据。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-03-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码农后端 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、整合
    • 1、案例
      • 1.1 准备
      • 1.2 测试
    • 2、配置SQL提示
    • 二、lombok
      • 1、引出
        • 2、lombok概述
          • 3、使用lombok
            • 3.1 引入lombok依赖
            • 3.2 改造 User实体类
            • 3.3 测试运行
        相关产品与服务
        数据库
        云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档