百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

手把手教你如何使用MyBatisPlus 手把手教你如何使用淘宝

yuyutoo 2024-10-12 00:03 11 浏览 0 评论

哈喽,大家好,我是指北君。
本篇文章,我们通过 MyBatis Plus 来对一张表进行 CRUD 操作,来看看是如何简化我们开发的。

1、创建测试表

创建 USER 表:

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `ID` int(11) NOT NULL,
  `USER_NAME` varchar(32) COLLATE utf8mb4_bin DEFAULT NULL,
  `USER_AGE` int(11) DEFAULT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

向 USER 表中插入两条数据:

INSERT INTO `user` VALUES ('1', 'IT可乐', '18');
INSERT INTO `user` VALUES ('2', 'YSOcean', '22');

打开表,发现有两条数据了:

2、创建 Spring Boot 工程

通过 IDEA 创建 Spring Boot 工程,如果不能连接 https://start.spring.io/ 网址,可以将网址变成 https://start.aliyun.com/ ,如下所示:

3、导入依赖

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.3.2</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>    

首先mybatis-plus 我们导入最新版 3.3.2。另外,由于我数据采用的是 MySql,所以这里导入了 Mysql 的连接依赖。

另外,为了简化JavaBean 类的书写,我这里额外导入一个 lombok 插件依赖。

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

通过这个依赖的相关注解,我们可以不用书写繁琐的 get/set 方法。

4、编写数据库配置文件

在 springboot 项目的 resource 目录下,新建 application.yml 文件,添加如下内容:

server:
  port: 8082

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mybatisplus?useUnicode=true&characterEncoding=UTF-8
    username: root
    password: root
    # >= 6.x: com.mysql.cj.jdbc.Driver
    # <= 5.x: com.mysql.jdbc.Driver
    driver-class-name: com.mysql.cj.jdbc.Driver

注意:url里面填写的 mybatisplus 是我的数据库名称,注意修改,username和password分别填写自己的数据库连接名称和密码。

5、编写代码

①、实体类User.java

@Getter
@Setter
public class User {
    private Long id;

    private String userName;
    
    private String userAge;

}

②、创建UserMapper 接口

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ys.mybatisplusstudy.entry.User;

public interface UserMapper extends BaseMapper<User> {
}

③、启动类增加@MapperScan注解

@SpringBootApplication
@MapperScan("com.ys.mybatisplusstudy.mapper")
public class MybatisplusstudyApplication {

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

}

如果不想在启动类加 @MapperScan 注解,也可在每个 Mapper 接口上增加 @Mapper 注解。

所有配置上面都以完成,是不是很简单,接下来我们对这张表进行CRUD 测试。

6、CRUD 测试

我们在编写 UserMapper 接口时,其继承了一个 BaseMapper 接口:

public interface UserMapper extends BaseMapper<User> {
}

我们进入到 BaseMapper 内部,发现其结构如下:

这些方法便是我们常用的增删改查了,下面我们分别演示几个常用的。

①、insert:新增一条记录

@SpringBootTest
class MybatisplusstudyApplicationTests {

    @Autowired
    private UserMapper userMapper;


    /**
     * 新增一条记录
     */
    @Test
    public void testInsert(){
        User user = new User();
        user.setId(3L);
        user.setUserName("test insert");
        user.setUserAge("1");
        int insert = userMapper.insert(user);
        System.out.println("影响记录数:"+insert);
    }

}

执行完毕后,我们查看数据库:

②、delete:删除记录

/**

 * 根据id删除一条记录
   */
   @Test
   public void testDeleteById(){
   int num = userMapper.deleteById(3L);
   System.out.println("删除的记录数为:"+num);
   QueryWrapper wrapper = new QueryWrapper();
   wrapper.eq("id",3L);
   userMapper.delete(wrapper);
   }

/**

 * 构造相关条件删除记录
   */
   @Test
   public void testDelete(){
   QueryWrapper wrapper = new QueryWrapper();
   wrapper.eq("USER_NAME","test insert");
   int num = userMapper.delete(wrapper);
   System.out.println("删除的记录数为:"+num);
   }

③、update:修改记录

/**

 * 根据id修改
   */
   @Test
   public void testudpateById(){
   User user = new User();
   user.setId(3L);
   user.setUserName("test update");
   int num = userMapper.updateById(user);
   System.out.println("修改的记录数为:"+num);
   }

④、select:查询记录

/**

 * 查询User表所有记录
   */
   @Test
   public void testSelectAll(){
   List<User> users = userMapper.selectList(null);
   users.forEach(x-> System.out.println(x.getId()+"-"+x.getUserName()+"-"+x.getUserAge()));
   }

/**

 * 查询指定记录
   */
   @Test
   public void testSelectWrapper(){
   QueryWrapper wrapper = new QueryWrapper();
   wrapper.eq("user_name","IT可乐");
   List<User> users = userMapper.selectList(wrapper);
   users.forEach(x-> System.out.println(x.getId()+"-"+x.getUserName()+"-"+x.getUserAge()));
   }

发现没有,做增删改查是如此的丝滑流畅,都不用写SQL语句了。

当然,这都只是单表的简单玩法,后面我们会介绍高阶玩法。

7、打印SQL语句

这里补充一个小知识点,通过如下配置,我们可以查看执行的 SQL 语句日志。

在 applicatio.yml 文件中,进行如下配置:

# 配置slq打印日志
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

当然,这种配置只是把 SQL 日志打印到控制台便于我们调试,后面会介绍更加强大的 SQL 分析工具。


来源:https://mp.weixin.qq.com/s/uc4MfyVlne_Ek1EPBk8jUQ

作者:指北君

相关推荐

ETCD 故障恢复(etc常见故障)

概述Kubernetes集群外部ETCD节点故障,导致kube-apiserver无法启动。...

在Ubuntu 16.04 LTS服务器上安装FreeRADIUS和Daloradius的方法

FreeRADIUS为AAARadiusLinux下开源解决方案,DaloRadius为图形化web管理工具。...

如何排查服务器被黑客入侵的迹象(黑客 抓取服务器数据)

---排查服务器是否被黑客入侵需要系统性地检查多个关键点,以下是一份详细的排查指南,包含具体命令、工具和应对策略:---###**一、快速初步检查**####1.**检查异常登录记录**...

使用 Fail Ban 日志分析 SSH 攻击行为

通过分析`fail2ban`日志可以识别和应对SSH暴力破解等攻击行为。以下是详细的操作流程和关键分析方法:---###**一、Fail2ban日志位置**Fail2ban的日志路径因系统配置...

《5 个实用技巧,提升你的服务器安全性,避免被黑客盯上!》

服务器的安全性至关重要,特别是在如今网络攻击频繁的情况下。如果你的服务器存在漏洞,黑客可能会利用这些漏洞进行攻击,甚至窃取数据。今天我们就来聊聊5个实用技巧,帮助你提升服务器的安全性,让你的系统更...

聊聊Spring AI Alibaba的YuQueDocumentReader

序本文主要研究一下SpringAIAlibaba的YuQueDocumentReaderYuQueDocumentReader...

Mac Docker环境,利用Canal实现MySQL同步ES

Canal的使用使用docker环境安装mysql、canal、elasticsearch,基于binlog利用canal实现mysql的数据同步到elasticsearch中,并在springboo...

RustDesk:开源远程控制工具的技术架构与全场景部署实战

一、开源远程控制领域的革新者1.1行业痛点与解决方案...

长安汽车一代CS75Plus2020款安装高德地图7.5

不用破解原车机,一代CS75Plus2020款,安装车机版高德地图7.5,有红绿灯读秒!废话不多讲,安装步骤如下:一、在拨号状态输入:在电话拨号界面,输入:*#518200#*(进入安卓设置界面,...

Zookeeper使用详解之常见操作篇(zookeeper ui)

一、Zookeeper的数据结构对于ZooKeeper而言,其存储结构类似于文件系统,也是一个树形目录服务,并通过Key-Value键值对的形式进行数据存储。其中,Key由斜线间隔的路径元素构成。对...

zk源码—4.会话的实现原理一(会话层的基本功能是什么)

大纲1.创建会话...

Zookeeper 可观测性最佳实践(zookeeper能够确保)

Zookeeper介绍ZooKeeper是一个开源的分布式协调服务,用于管理和协调分布式系统中的节点。它提供了一种高效、可靠的方式来解决分布式系统中的常见问题,如数据同步、配置管理、命名服务和集群...

服务器密码错误被锁定怎么解决(服务器密码错几次锁)

#服务器密码错误被锁定解决方案当服务器因多次密码错误导致账户被锁定时,可以按照以下步骤进行排查和解决:##一、确认锁定状态###1.检查账户锁定状态(Linux)```bash#查看账户锁定...

zk基础—4.zk实现分布式功能(分布式zk的使用)

大纲1.zk实现数据发布订阅...

《死神魂魄觉醒》卡死问题终极解决方案:从原理到实战的深度解析

在《死神魂魄觉醒》的斩魄刀交锋中,游戏卡死犹如突现的虚圈屏障,阻断玩家与尸魂界的连接。本文将从技术架构、解决方案、预防策略三个维度,深度剖析卡死问题的成因与应对之策,助力玩家突破次元壁障,畅享灵魂共鸣...

取消回复欢迎 发表评论: