SpringBoot3整合Mybatis plus

Java版本:17
Spring Boot版本:3.1.10
Mybatis plus版本:3.5.5
源码地址:Gitee仓库

01 创建我们的项目工程

首先,我们创建一个maven工程spring-boot3-demo,pom文件配置如下。

  • 这里我们将spring-boot-starter-parent作为我们的父pom
  • 我们引入了Lombok依赖,用于简化我们的代码
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.1.10</version>
    </parent>

    <groupId>com.knowz.demo</groupId>
    <artifactId>spring-boot3-demo</artifactId>
    <version>1.0.0</version>
    <packaging>pom</packaging>

    <modules>
        <module>mybatis-plus-demo</module>
    </modules>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>
</project>

02 创建一个module,用于整合Mybatis plus

首先,配置我们的pom文件,引入我们需要的依赖。
这里我们主要引入了web依赖、MySQL链接依赖和Mybatis plus依赖。
web依赖和MySQL链接的依赖版本号都继承自spring-boot-starter-parent管理的版本号

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.knowz.demo</groupId>
        <artifactId>spring-boot3-demo</artifactId>
        <version>1.0.0</version>
    </parent>

    <artifactId>mybatis-plus-demo</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
            <version>3.5.5</version>
        </dependency>

        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
        </dependency>
    </dependencies>
</project>

03 接下来是对我们的项目进行一些配置

主要是需要配置我们的数据库链接、Mybatis plus的一些配置

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 这是我本地的虚拟机的ip,大家改为自己数据库ip即可
spring.datasource.url=jdbc:mysql://172.16.81.100:3306/spring_boot3_demo?useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=root
# 记得修改自己数据库的用户名和密码
spring.datasource.password=qwe123

# 当我们数据库表的主键是自增id时,配置为AUTO即可
mybatis-plus.global-config.db-config.id-type=AUTO
# 打印SQL日志,这里有2种配置,任选其一即可,后面我会演示其效果
#mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
logging.level.com.knowz.demo.mybatisplus.mapper=debug

04 开始使用Mybatis plus

4.1 创建我们的数据库表

我们首先创建一张用户表,SQL脚本如下:

CREATE TABLE `t_user` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
  `name` varchar(10) NOT NULL COMMENT '姓名',
  `age` smallint DEFAULT NULL COMMENT '年龄',
  `status` tinyint DEFAULT NULL COMMENT '状态',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='用户表';

4.2 编写我们的Java代码

  • 创建我们的实体类
package com.knowz.demo.mybatisplus.model;

import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

@Data
@TableName("t_user")
public class User {
    private Long id;
    private String name;
    private Integer age;
    private Integer status;
}

  • 编写mapper层代码
package com.knowz.demo.mybatisplus.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.knowz.demo.mybatisplus.model.User;

public interface UserMapper extends BaseMapper<User> {
}
  • 编写service层代码,这里我们继承了ServiceImpl,它给我们提供了很多常用的方法
package com.knowz.demo.mybatisplus.service;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.knowz.demo.mybatisplus.mapper.UserMapper;
import com.knowz.demo.mybatisplus.model.User;
import org.springframework.stereotype.Service;

@Service
public class UserService extends ServiceImpl<UserMapper, User> {
}
  • 编写controller层代码
package com.knowz.demo.mybatisplus.controller;

import com.knowz.demo.mybatisplus.model.User;
import com.knowz.demo.mybatisplus.service.UserService;
import jakarta.annotation.Resource;
import jakarta.websocket.server.PathParam;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RequestMapping("/users")
@RestController
public class UserController {
    @Resource
    private UserService userService;

    @GetMapping("list")
    public List<User> list() {
        return userService.list();
    }

    @PostMapping("save")
    public boolean save(@RequestBody User user) {
        return userService.save(user);
    }

    @GetMapping("{id}")
    public User getById(@PathVariable("id") Long id) {
        return userService.getById(id);
    }
}

4.3 最后,启动我们的main方法

我们在main方法有个@MapperScan注解,配置我们的mapper类路径后,Spring Boot 会帮我们生成bean放到IOC容器中,这样我们就不用每个mapper类写一个@Mapper注解了。

@MapperScan("com.knowz.demo.mybatisplus.mapper")
@SpringBootApplication
public class MybatisPlusApplication {
    public static void main(String[] args) {
        SpringApplication.run(MybatisPlusApplication.class, args);
    }
}

启动成功后,调用我们的接口localhost:8080/users/3,就能够获取数据了。
我们使用postman调用截图如下:
在这里插入图片描述
当我们在application.properties文件配置了打印SQL日志时的效果:
在这里插入图片描述

2024-04-13T16:31:55.337+08:00 DEBUG 88356 --- [nio-8080-exec-3] c.k.d.m.mapper.UserMapper.selectById     : ==>  Preparing: SELECT id,name,age,status FROM t_user WHERE id=?
2024-04-13T16:31:55.338+08:00 DEBUG 88356 --- [nio-8080-exec-3] c.k.d.m.mapper.UserMapper.selectById     : ==> Parameters: 3(Long)
2024-04-13T16:31:55.339+08:00 DEBUG 88356 --- [nio-8080-exec-3] c.k.d.m.mapper.UserMapper.selectById     : <==      Total: 1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/542097.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AUTOSAR-COMStack-002_Update-Bit 机制

最近在工作中第一次使用了AUTOSAR COM Update-Bit功能&#xff0c;对使用了Update-Bit功能信号的使用&#xff0c;不能得心应手&#xff0c;发送信号比较顺利&#xff1b;测试接收信号功能时&#xff0c;对应的RTE接口始终不能接收到对应的模拟发送的信号值&#xff0c;后来翻阅…

004Node.js常用快捷键

1.常用的终端命令&#xff1a; &#xff08;1&#xff09;del 文件名&#xff1a; 删除文件 &#xff08;2&#xff09;ipconfig: 查看IP命令 &#xff08;3&#xff09;mkdir 目录名 &#xff1a;在当前目录新建指定目录 &#xff08;4&#xff09;rd 目录名&#xff1a;在当前…

Leetcode算法训练日记 | day25

一、组合总和Ⅲ 1.题目 Leetcode&#xff1a;第 216 题 找出所有相加之和为 n 的 k 个数的组合&#xff0c;且满足下列条件&#xff1a; 只使用数字1到9每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次&#xff0c;组合可以以任何顺…

标准孔板简单适应性强

即使生活一地鸡毛&#xff0c;但仍然要觉得未来可期&#xff0c;做自己而不是解释自己&#xff0c;只要能变好&#xff0c;慢点又如何&#xff0c;愿我们都是苦尽甘来的人&#xff0c;熬得住就出众&#xff0c;熬不住就出局&#xff0c;鹤壁永成矿山&#xff0c;在行业坚持十余…

tested4142

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和…

Stacked Hourglass Networks for Human Pose Estimation 用于人体姿态估计的堆叠沙漏网络

Stacked Hourglass Networks for Human Pose Estimation 用于人体姿态估计的堆叠沙漏网络 这是一篇关于人体姿态估计的研究论文&#xff0c;标题为“Stacked Hourglass Networks for Human Pose Estimation”&#xff0c;作者是 Alejandro Newell, Kaiyu Yang, 和 Jia Deng&a…

mysql题目4

tj11&#xff1a; select count(*) 员工总人数 from tb_dept a join tb_employee b on a.deptnob.deptno where a.dname 市场部

Github 2024-04-14 php开源项目日报Top9

根据Github Trendings的统计,今日(2024-04-14统计)共有9个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量PHP项目9TypeScript项目1Laravel: 以优雅语法简化Web开发 创建周期:4028 天开发语言:PHP协议类型:MIT LicenseStar数量:30824 个Fork数量:1…

[大模型] BlueLM-7B-Chat WebDemo 部署

BlueLM-7B-Chat WebDemo 部署 模型介绍 BlueLM-7B 是由 vivo AI 全球研究院自主研发的大规模预训练语言模型&#xff0c;参数规模为 70 亿。BlueLM-7B 在 C-Eval 和 CMMLU 上均取得领先结果&#xff0c;对比同尺寸开源模型中具有较强的竞争力(截止11月1号)。本次发布共包含 7…

ASP.NET MVC使用Layui选择多图片上传

前言&#xff1a; 多图上传在一些特殊的需求中我们经常会遇到&#xff0c;其实多图上传的原理大家都有各自的见解。对于Layui多图上传和我之前所说的通过js获取文本框中的文件数组遍历提交的原理一样&#xff0c;只不过是Layui中的upload.render方法已经帮我们封装好了&#x…

微信跳转页面时发生报错

报错如下图所示&#xff1a; 解决方法&#xff1a;&#xff08;从下面四种跳转方式中任选一种&#xff0c;哪种能实现效果就用哪个&#xff09; 带历史回退 wx.navigateTo() //不能跳转到tabbar页面 不带历史回退 wx.redirectTo() //跳转到另一个页面wx.switchTab() //只能…

Nature Machine Intelligence 纽约大学团队提出基于深度学习和语音生成技术的脑电-语音解码

由于神经系统的缺陷导致的失语会导致严重的生活障碍&#xff0c;它可能会限制人们的职业和社交生活。近年来&#xff0c;深度学习和脑机接口&#xff08;BCI&#xff09;技术的飞速发展为开发能够帮助失语者沟通的神经语音假肢提供了可行性。开发神经-语音解码器的尝试大多数依…

【树莓派初始化】教你从0开始搭建树莓派的使用环境

文章目录 前言1.什么是树莓派&#xff1f;1.1什么用户适合购买树莓派学习编程&#xff1f; 2.如何初始化一个树莓派2.1 烧录系统2.2 测试开机2.3 设置树莓派显示输出的分辨率2.4 网络链接2.5 Putty链接树莓派2.6 VNC链接树莓派2.7 使用filezilla软件传输文件到树莓派 3.使用Xsh…

相关性气泡图-数据模拟到作图(自备)

目录 普通气泡图ggplot2 相关性气泡图 数据处理1&#xff1a;生成两个dataframe 数据处理2&#xff1a;计算相关性R和P 数据处理3&#xff1a;添加细节 绘图 核心&#xff1a;气泡的信息主要体现在气泡大小和气泡颜色变化。 普通气泡图ggplot2 rm(list ls()) librar…

【Golang学习笔记】从零开始搭建一个Web框架(三)

文章目录 分组控制分组嵌套中间件 前情提示&#xff1a; 【Golang学习笔记】从零开始搭建一个Web框架&#xff08;一&#xff09;-CSDN博客 【Golang学习笔记】从零开始搭建一个Web框架&#xff08;二&#xff09;-CSDN博客 分组控制 分组控制(Group Control)是 Web 框架应提供…

Linux系统——Zookeeper集群

目录 一、Zookeeper概述 1.Zookeeper简介 2.Zookeeper工作机制 3.Zookeeper数据结构 4.Zookeeper应用场景 4.1统一命名服务 4.2统一配置管理 4.3统一集群管理 4.4服务器动态上下线 4.5软负载均衡 5.Zookeeper选举机制 5.1第一次启动选举机制 5.2非第一次启动选举机…

006Node.js cnpm的安装

百度搜索 cnpm,进入npmmirror 镜像站https://npmmirror.com/ cmd窗口输入 npm install -g cnpm --registryhttps://registry.npmmirror.com

ESP32系统监测(基于ESP-IDF)

主要参考资料&#xff1a; CSDN文章《ESP32 IDF开发调试奇技淫巧》: https://blog.csdn.net/qq_43332314/article/details/131859971 目录 查询系统剩余堆/最小堆大小查询线程剩余栈大小方法一方法二 查询CPU占用率 查询系统剩余堆/最小堆大小 查询系统剩余堆、最小堆大小的 A…

K8s下部署grafana

1. 系统要求 最小化的软硬件要求 最小化硬件要求 磁盘空间: 1 GB内存: 750 MiB (approx 750 MB)CPU: 250m (approx 2.5 cores) 2. k8s部署grafana步骤 1) 创建名字空间 kubectl create namespace my-grafana 2) 创建yaml vim grafana.yaml yaml包含如下三个资源对象 Ob…

AIGC 探究:人工智能生成内容的技术原理、广泛应用、创新应用、版权问题与未来挑战

AIGC&#xff08;Artificial Intelligence Generated Content&#xff09;即人工智能生成内容&#xff0c;其核心在于利用深度学习技术&#xff0c;尤其是基于神经网络的模型&#xff0c;来模拟人类创作过程&#xff0c;自主生成高质量的文本、图像、音频、视频等各类内容。神经…