SpringBoot集成Mybatis-Plus增删改查

news2024/12/22 23:58:52

一、前言

  • Mybatis:数据持久化框架
  • Mybatis-Plus:对Mybatis进行了增强,它封装了基本的增删改查操作,使我们自己不需要再去写很多重复的代码,大大解放了生产力!

二、创建项目

创建成功后删除src下面的test目录

三、目录结构

四、pom.xml

修改pom.xml内容如下

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <modelVersion>4.0.0</modelVersion>
    <groupId>com.llh</groupId>
    <artifactId>spring-boot-demo</artifactId>
    <version>1.0.0</version>
    <name>spring-boot-demo</name>
    <description>springboot project description</description>

    <properties>
        <mybatis-spring-boot.version>2.1.4</mybatis-spring-boot.version>
        <mybatis-plus.version>3.4.2</mybatis-plus.version>
    </properties>

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

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

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>${mybatis-spring-boot.version}</version>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>${mybatis-plus.version}</version>
        </dependency>

    </dependencies>

</project>

说明:
中 spring-boot-starter-parent 帮我们做了SpringBoot相关依赖包的版本号管理,所以有些依赖包不需要我们自己去写
但像 mybatis-plus-boot-starter 它是不属于spring-boot相关的, parent中没有做版本号管理,所以还需要手动写一下。

五、sql和application.properties

5.1 导入sql语句

CREATE TABLE `user_info` (
	`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '用户id',
	`username` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '用户名' COLLATE 'utf8mb4_general_ci',
	`password` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '密码' COLLATE 'utf8mb4_general_ci',
	`create_time` DATETIME NOT NULL COMMENT '创建时间',
	PRIMARY KEY (`id`) USING BTREE
);

说明:创建一个数据库,然后运行上述sql语句,生成用户表,主要就下面四个字段

  • id 用户id 自增主键
  • username 用户名
  • password 密码
  • create_time 创建时间

5.2 修改application.properties配置文件

# 应用名称
spring.application.name=spring-boot-demo
server.port=8888
# 数据库相关
spring.datasource.url=jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# mybatis相关
mybatis.mapper-locations=classpath:mapper/*Mapper.xml

说明:

  • 数据库地址 localhost:3306/demo, demo就是数据库名称
  • 数据库用户名 spring.datasource.username
  • 数据库密码 spring.datasource.password
  • mybatis.mapper-locations 配置扫码xml文件

六、逻辑代码

SpringBootDemoApplication 类

package com.llh.springbootdemo;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @author llh
 */
@SpringBootApplication
@MapperScan(value = "com.llh.springbootdemo.mapper")
public class SpringBootDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootDemoApplication.class, args);
    }

}

说明:启动类上加上

@MapperScan(value = "com.llh.springbootdemo.mapper")

作用是扫描到mapper里面中的类,注意路径要和项目中实际路径一致


UserInfo 类

package com.llh.springbootdemo.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;

import java.time.LocalDateTime;

/**
 * @author llh
 */
public class UserInfo {
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    private String username;
    private String password;
    private LocalDateTime createTime;

    public Long getId() {
        return id;
    }

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

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public LocalDateTime getCreateTime() {
        return createTime;
    }

    public void setCreateTime(LocalDateTime createTime) {
        this.createTime = createTime;
    }

    @Override
    public String toString() {
        return "UserInfo{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", createTime=" + createTime +
                '}';
    }
}

说明:这里类成员变量和数据库字段对应,Mybatis自动做了驼峰法到下划线的转换
如:数据库 create_time -> 类变量 createTime


UserInfoMapper 类

package com.llh.springbootdemo.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.llh.springbootdemo.entity.UserInfo;

/**
 * @author llh
 */
public interface UserInfoMapper extends BaseMapper<UserInfo> {
}

说明:BaseMapper 类封装了dao层基本的增删改查操作


mapper/UserInfoMapper.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.llh.springbootdemo.mapper.UserInfoMapper">

</mapper>

说明:这里的namespace和上述的UserInfoMapper路径对应一致


UserInfoService 类

package com.llh.springbootdemo.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.llh.springbootdemo.entity.UserInfo;

/**
 * @author llh
 */
public interface UserInfoService extends IService<UserInfo> {
}

说明:这里IService封装了service层基本的增删改查


UserInfoServiceImpl 类

package com.llh.springbootdemo.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.llh.springbootdemo.entity.UserInfo;
import com.llh.springbootdemo.mapper.UserInfoMapper;
import com.llh.springbootdemo.service.UserInfoService;
import org.springframework.stereotype.Service;

/**
 * @author llh
 */
@Service
public class UserInfoServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo> implements UserInfoService {
}


UserInfoController 类

package com.llh.springbootdemo.controller;

import com.llh.springbootdemo.entity.UserInfo;
import com.llh.springbootdemo.service.UserInfoService;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.List;

/**
 * @author llh
 */
@RestController
@RequestMapping("/userInfo")
public class UserInfoController {
    @Resource
    private UserInfoService userInfoService;

    @PostMapping("/add")
    public Boolean add(@RequestBody UserInfo userInfo) {
        userInfo.setCreateTime(LocalDateTime.now());
        return userInfoService.save(userInfo);
    }

    @GetMapping("/delete/{id}")
    public Boolean delete(@PathVariable Long id) {
        return userInfoService.removeById(id);
    }

    @PostMapping("/update")
    public Boolean update(@RequestBody UserInfo userInfo) {
        return userInfoService.updateById(userInfo);
    }

    @GetMapping("/get/{id}")
    public UserInfo get(@PathVariable Long id) {
        return userInfoService.getById(id);
    }

    @GetMapping("/list")
    public List<UserInfo> list() {
        return userInfoService.list();
    }

}

说明:

  • 增删改查接口,基本上不需要自己写sql,直接调用Mybatis-Plus封装好的接口。

七、结语

用Mybatis-Plus是不是很简单,嘿嘿。

简单看一下,Mybatis-Plus增删改查方法接口如下:

Mybatis属于半配置型的数据持久化框架,JPA是直接封装了所有的SQL操作,相对于JPA来说Mybatis更灵活,可以自定义SQL。同时Mybatis-Plus又为你封装了常用的增删改查操作,这样既可以在特殊情况下自定义SQL,又避免了写大量重复的增删改查。

关注微信公众号:“小虎哥的技术博客”。我们会定期发布关于Java技术的详尽文章,让您能够深入了解该领域的各种技巧和方法,让我们一起成为更优秀的程序员👩‍💻👨‍💻!

相关文章源码放在:gitee仓库、github仓库上。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

iTwin Capture Modeler中文版安装包 图文安装教程

iTwin Capture Modeler中文版安装包图文安装教程 一、下载软件 您可以登录官网下载ITwin Capture模型 https://www.bentley.com/zh-Hans 当然也可以在下面的评论区或者后台私信我 选择 二、安装程序 侧面下载的安 上传的安装文件 运行 Bentley iTwin Capture Modeler x64 .…

6.oracle中listagg函数使用

1. 作用 可以实现行转列&#xff0c;将多列数据聚合为一列&#xff0c;实现数据的压缩 2. 语法 listagg(measure_expr&#xff0c;delimiter) within group ( order by order_by_clause); 解释&#xff1a; measure_expr可以是基于任何列的表达式 delimiter分隔符&#xff0c…

centos服务器系统下安装python3并与自带的python2

centos服务器系统下安装python3并与自带的python2 在centos中&#xff0c;自带有python2&#xff0c;因此需要经常安装python3。但是这里有一个坑&#xff0c;就是centos的yum是用python2写的&#xff0c;如果正常编译安装python3&#xff0c;那么yum就会直接挂了。为了方便以…

AI大模型潮水中,医疗数字化加速「求解」

蝴蝶挥动翅膀&#xff0c;医疗行业每个角落开始连锁反应&#xff0c;曾经被忽视的问题也愈发明显。但与之对应的是&#xff0c;对数字化和AI大模型的价值认可&#xff0c;在中国医疗赛道也正在加速来临。 作者|斗斗 编辑|皮爷 出品|产业家 重庆市某地方人民医院&#xf…

仓储财产如何保存,教你一个小技巧~

仓库作为储存重要货物、设备和文件的场所&#xff0c;常常面临着各种潜在的风险&#xff0c;其中之一就是水浸事件。一旦发生水浸&#xff0c;不仅可能造成货物和设备的损坏&#xff0c;还可能导致生产中断和财产损失。 因此&#xff0c;水浸监控系统不仅仅是一项科技创新&…

Camunda 7.x 系列【25】发送任务 接收任务

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 2.7.9 本系列Camunda 版本 7.19.0 源码地址:https://gitee.com/pearl-organization/camunda-study-demo 文章目录 1. 概述2. 案例演示2.1 接收任务2.2 发送任务2.3 测试1. 概述 Send Task发送任务用于将消息…

笔记:transformer系列

1、和其他网络的比较 自注意力机制适合处理长文本&#xff0c;并行度好&#xff0c;在GPU上&#xff0c;CNN和Self-attention性能差不多&#xff0c;在TPU&#xff08;Tensor Processing Uni&#xff09;效果更好。 总结&#xff1a; 自注意力池化层将当做key,value,query来…

GitHub的PUSH显示网络超时,小乌龟网络代理办法

前言 &#xff08;1&#xff09;我能够正常访问GitHub&#xff0c;但是每次将代码提交到GitHub常常显示网络超时。这是因为提交是走的国内的网络&#xff0c;对GitHub访问会被进行限速。 &#xff08;2&#xff09;为了让小乌龟也拥有魔法&#xff0c;我们可以使用代理工具。注…

rabbitmq卸载重新安装3.8版本

卸载之前的版本的rabbitmq 卸载rabbitmq 卸载前先停止rabbitmq服务 /usr/lib/rabbitmq/bin/rabbitmqctl stop查看rabbitmq安装的相关列表 yum list | grep rabbitmq卸载rabbitmq相关内容 yum -y remove rabbitmq-server.noarch 卸载erlang 查看erlang安装的相关列表 …

Linux CentOS安装抓包解包工具Wireshark图形化界面

1.Wireshark介绍 Wireshark 是一个开源的网络协议分析工具&#xff0c;它能够捕获和分析网络数据包&#xff0c;提供深入的网络故障排除、网络性能优化和安全审计等功能。它支持跨多个操作系统&#xff0c;包括 Windows、macOS 和 Linux。 2.Wireshark主要使用方法 捕获数据…

韶音属于什么档次的品牌,韶音骨传导耳机值得入手吗

骨传导领域中流传着一句话&#xff0c;就是“配置看南卡&#xff0c;颜值看韶音”&#xff0c;之所以有这句话&#xff0c;是因为韶音的骨传导耳机在颜值方面可以说是无可挑剔的&#xff0c;每款耳机的颜色挑选上基本都能达到六七种&#xff0c;对于户外而言可以说是回头率满满…

VSCode\PyCharm23.2+PyQGIS(QGIS3.32.1)插件开发配置相关要点

近期利用VSCode\PyCharmPyQGIS进行插件开发&#xff0c;现将要点总结一下&#xff1a; 一、VSCode&#xff0c;我没有配置成功&#xff0c;主要是最后一个阶段调试的时候老是不成功。以后会持续关注。但是有几个要点&#xff1a; 1、VSCodePyQIS开发&#xff0c;智能提示的设…

pip批量下载包、批量安装离线包

requirements.txt 格式 批量下载 pip download -d D:\packs -r requirements.txt-d 参数设置下载包存放的目录 -r 包列表 批量在线安装 pip install -r requirements.txt 批量离线安装 pip install --no-index --find-linksD:\packs -r requirements.txt–no-index 参数表…

c#设计模式-创建型模式 之 原型模式

概述 原型模式是一种创建型设计模式&#xff0c;它允许你复制已有对象&#xff0c;而无需使代码依赖它们所属的类。新的对象可以通过原型模式对已有对象进行复制来获得&#xff0c;而不是每次都重新创建。 原型模式包含如下角色&#xff1a; 抽象原型类&#xff1a;规定了具…

胖小酱之补考也不会

小胖&#xff01;补考还是要重视起来呀&#xff01; 挂科了就要补考&#xff0c;如果不参加补考&#xff0c;毕业时重修该课程。补考不一定能过。挂科后一般都会有补考的&#xff0c;补考一般是在下个学期开学的前几周进行&#xff0c;因此如果自己挂科了要认真复习&#xff0…

mysql -sql触发器

1、创建触发器。 //创建一个触发器在给section关系插入后触发 create trigger timeslot_check1 after insert on sectionreferencing new row as nrow//对每个插入的行都执行for each row//when指定一个条件&#xff0c;仅对于满足条件的元组才会执行触发器剩余的部分when (nr…

SpringCloud入门实战(十四)Sentinel微服务流量防卫兵简介

&#x1f4dd; 学技术、更要掌握学习的方法&#xff0c;一起学习&#xff0c;让进步发生 &#x1f469;&#x1f3fb; 作者&#xff1a;一只IT攻城狮 &#xff0c;关注我&#xff0c;不迷路 。 &#x1f490;学习建议&#xff1a;1、养成习惯&#xff0c;学习java的任何一个技术…

零基础Java学习路线

预计阅读时间&#xff1a; 8分钟 目录 第一阶段&#xff1a; Java 基础第二阶段&#xff1a;数据库第三阶段&#xff1a; Java Web第四阶段&#xff1a;主流框架MavenGitSSM框架Spring Boot 第五阶段&#xff1a;服务器中间件RedisMQElasticsearch项目实践 第六阶段&#xff1a…

NAND Flash Program Operation: One Shot VS. Two Pass

讲解相关内容的文章很少&#xff0c;开始只搜索到本站一篇相关内容&#xff1a;浅谈NAND FLASH的两种编程方式 看完以后思路还不是很清晰&#xff0c;又发现了两篇FMS的主题演讲&#xff0c;在此简单总结分享。 Flash Memory Summit 2016&#xff0c; Thomas Parnell, IBM Res…

Spring-IoC-加强

目录 简略介绍 理解介绍 IoC的优点 Spring的IoC IoC是如何实现的 IoC能做什么 IoC和DI Spring IoC过程 为什么框架需要反射 Spring Bean的循环依赖问题 IoC简单实现 简略介绍 所谓的IoC&#xff08;inversion of control&#xff09;&#xff0c;就是控制反转的意思…