首页 > 其他分享 >MyBatis-Plus快速上手

MyBatis-Plus快速上手

时间:2024-11-16 08:50:20浏览次数:3  
标签:实体类 String private Plus MyBatis Integer 快速

 博主主页: 码农派大星.

    数据结构专栏:Java数据结构

 数据库专栏:MySQL数据库

JavaEE专栏:JavaEE

软件测试专栏:软件测试

关注博主带你了解更多知识

目录

1. MyBatis-Plus介绍

2. 快速上⼿

2.1 添加MyBatis-Plus和MySQL依赖,配置数据库连接信息

2.2 编码

创建实体类UserInfo

编写Mapper接⼝类

2.3 常⻅注解

@TableName

 @TableField

@TableId

2.4 打印⽇志

3. MyBatis-Plus复杂操作

条件构造器

3.1 QueryWrapper

3.2 UpdateWrapper

1. MyBatis-Plus介绍

MyBatis-Plus是⼀个 MyBatis 的增强⼯具, 在 MyBatis 的基础上只做增强不做改变, 为简化开发. 提⾼效率⽽⽣

⽀持数据库:

PostgreSQL, MySQL, MariaDB, Oracle, SQL Server, OceanBase, H2, DB2... 任何能使⽤MyBatis进⾏增删改查,并且⽀持标准SQL的数据库应该都在MyBatis-Plus的⽀持范围

2. 快速上⼿

2.1 添加MyBatis-Plus和MySQL依赖,配置数据库连接信息

Spring Boot

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

MySQL 

 <dependency>
 <groupId>com.mysql</groupId>
 <artifactId>mysql-connector-j</artifactId>
 <scope>runtime</scope>
 </dependency>

配置连接数据库

application.yml⽂件

 # 数据库连接配置
 
spring:
 datasource:
 url: jdbc:mysql://127.0.0.1:3306/mybatis_test?
 characterEncoding=utf8&useSSL=false
 username: root
 password: root
 driver-class-name: com.mysql.cj.jdbc.Drive

2.2 编码

MybatisPlus提供了⼀个基础的 BaseMapper 接⼝,已经实现了单表的CRUD,我们⾃定义的 Mapper只需要继承这个BaseMapper,就⽆需⾃⼰实现单表CRUD

创建实体类UserInfo

实 体类的属性名与表中的字段名⼀⼀对应

编写Mapper接⼝类

2.3 常⻅注解

MyBatis是如何知道,我们要操作的是哪张表,表⾥有哪些字段呢?

@Mapper
public interface UserinfoMapper extends BaseMapper<UserInfo> {


}

 

UserInfoMapper 在继承 BaseMapper 时,指定了⼀个泛型,这个UserInfo就是与数据库表相对应的实

MyBatis-Plus会根据这个实体类来推断表的信息.

默认情况下:

1. 表名:实体类的驼峰表⽰法转换成蛇形表⽰法(下划线分割),作为表名.⽐如UserInfo->user_info

2. 字段:根据实体类的属性名转换为蛇形表⽰法作为字段名.⽐如deleteFlag->delete_flag 

3. 主键:默认为id

那如果实体类和数据库不是按照上述规则定义的呢?MyBatis-Plus也给我们提供了⼀下注解,让我们标 识表的信息 

@TableName

从⽇志可以看到,默认查找的表名为userinfo. 

我们可以通过 @TableName 来标识实体类对应的表

修改实体类名Userinfo为user_info,重新执⾏测试⽅法

@Data

@TableName("user_info")
public class Userinfo {
 private Integer id;
 private String username;
 private String password;
 private Integer age;
 private Integer gender;
 private String phone;
 private Integer deleteFlag;
 private Date createTime;
 private Date updateTime;
}

 @TableField

我们可以通过 @TableField 来标识对应的字段名 

修改属性名deleteflag为delete_flag,重新执⾏测试⽅法

@Data
@TableName("user_info")

public class Userinfo {
 private Integer id;
 private String username;
 private String password;
 private Integer age;
 private Integer gender;
 private String phone;

 @TableField("delete_flag")
 private Integer deleteflag;
 private Date createTime;
 private Date updateTime;
}

@TableId

我们可以通过 @TableId 来指定对应的主键

修改属性名userId为id

@Data

@TableName("user_info")
public class Userinfo {

 @TableId("id")
 private Integer userId;
 private String username;
 private String password;
 private Integer age;
 private Integer gender;
 private String phone;

再次运⾏程序,程序运⾏结果正常

2.4 打印⽇志

Mybatis-Plus配置⽇志如下:

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

3. MyBatis-Plus复杂操作

条件构造器

QueryWrapper:⽤于构造查询条件,在AbstractWrapper的基础上拓展了⼀个select⽅法,允许指 定查询字段

UpdateWrapper:⽤于构造更新条件,可以在更新数据时指定条件

3.1 QueryWrapper

QueryWrapper并不只⽤于查询语句,⽆论是修改,删除,查询,都可以使⽤QueryWrapper来构建查询条件.

如何完成如下sql语句查询呢

SELECT id,username,password,age FROM user_info WHERE age = 18 AND username 
"%min%"

测试如下:

    @Autowired
    private UserinfoMapper userinfoMapper;

    @Test
    void SelectByWrapper(){
        QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<>();
        queryWrapper.select("username","password","gender")
                        .eq("age",18)
                        .like("username","min");
        userinfoMapper.selectList(queryWrapper).forEach(System.out::println);
    }

 

lt :"less than" 的缩写,表⽰⼩于.

le :"lessthanorequalto"的缩写,表⽰⼩于等于

ge :"greaterthanorequalto"的缩写,表⽰⼤于等于.

gt :"greaterthan"的缩写,表⽰⼤于.

eq :"equals"的缩写,表⽰等于.

ne :"notequals"的缩写,表⽰不等于 

3.2 UpdateWrapper

对于更新,我们也可以直接使⽤UpdateWrapper,在不创建实体对象的情况下,直接设置更新字段和条 件

完成下列sql修改

 UPDATE user_info SET delete_flag=0, age=5 WHERE id IN (2,3)
 @Test
    void updateByWrapper() {
        UpdateWrapper<UserInfo> updateWrapper = new UpdateWrapper<>();
        updateWrapper.set("delete_flag",0).set("age",5).in("id", List.of(2,3));
        userinfoMapper.update(updateWrapper);
    }

标签:实体类,String,private,Plus,MyBatis,Integer,快速
From: https://blog.csdn.net/jj666mhhh/article/details/143794110

相关文章

  • MyBatis面试题--(与数据库连接的相关知识)
    目录在MyBatis中,Mapper接口的作用是什么?当实体类中属性名和表中的字段名不一样,怎么办?1.使用@Result注解2.使用resultMap元素3.使用@Results注解(MyBatis3.4.1+)4.使用mapUnderscoreToCamelCase属性在MyBatis中如何实现分页功能?1.使用MyBatis分页插件2.手动编写分页SQL3.使......
  • MyBatis 和 JPA 的主要区别和适用场景
    MyBatis和JPA是两种常见的持久层框架,它们都可以用于将Java对象与数据库进行交互,但是它们的设计理念和使用方式有所不同。了解它们的主要区别和适用场景,有助于开发者根据具体需求选择合适的框架。1.MyBatis设计理念MyBatis是一种半自动化的持久层框架,它允许开发者自己编......
  • SpringBoot 3.3.5 集成 mybatis-plus-boot-starter 3.4.2报错
    一、环境JDK:17SpringBoot:3.3.5Mybatis-Plus:3.4.2二、报错信息Considerthefollowing: Ifyouwantanembeddeddatabase(H2,HSQLorDerby),pleaseputitontheclasspath. Ifyouhavedatabasesettingstobeloadedfromaparticularprofileyoumayneed......
  • 《百度蜘蛛池:助力网站快速被百度收录》
    百度蜘蛛池在网站运营领域扮演着重要的角色。它是专门针对百度搜索引擎蜘蛛的一种技术手段。百度蜘蛛池的运作机制较为复杂,其通过在多个不同类型的网站或平台上构建大量的链接网络,吸引百度蜘蛛的频繁光顾。当一个网站接入百度蜘蛛池后,就如同在百度蜘蛛的“必经之路”上设......
  • Visual Studio 快速分析 .NET Dump 文件
    前言在开发和维护.NET应用程序的过程中,有时会遇到难以捉摸的性能瓶颈或内存泄漏等问题。这些问题往往发生在生产环境中,难以复现。为了更准确地诊断这些运行时问题,通常会收集应用程序在生产环境中的内存转储文件(.dump文件)。在这种情况下,分析内存转储文件(.dump文件)成为解决问题......
  • 如何修复苹果手机上的绿屏 - 快速简便的解决方案
    今天,我们正在解决一个困扰很多苹果手机用户的问题——苹果手机绿屏!如果你遇到过这种情况或认识遇到这种情况的人,请继续关注,因为今天我们将深入探讨如何通过几种简单的方法修复苹果手机上的绿屏。方法1:强制重启手机首先要尝试的是简单的强制重启苹果手机。让我们看看这是否......
  • 火山引擎 VeDI 平台以 AIGC 技术,助力企业提效营销、快速增长
    当今市场竞争激烈的大环境下,企业要想在业绩方面有所突破,其首要增长点在哪里? 带着这个问题,中欧国际工商学院等机构于今年年中,联合发布了《2023年中国首席营销官(CMO)调查报告》(下称“报告”)。在调研了167家企业的营销决策后,报告指开拓新市场、新产品、新服务的“拓新”策略,成为......
  • Mybatis-plus之新特性,你都用过哪些?
    1.lambda方式查询在使用Mybatis-plus进行查询时,我们正常的操作是创建一个QueryWrapper,然后根据字段去做查询操作(如下图)那么就有一个问题,每个数据库的字段都需要写出来,遇到驼峰字段还需要转换为下划线形式,非常影响开发效率。而官方也考虑到这个问题,后续的版本已经提供了lambda的......
  • python进阶——快速掌握【文件操作】(内附代码)
    1.文件操作1.0文件操作的重要性和应用场景1.1文件的基本概念1.1.1文件的概念文件是一个存储在某种持久性存储介质【硬盘、光盘、磁盘等】上的数据的结合。文件可包含各种类型的信息:文本、图像、音频、视频、应用程序代码、其他类型的二进制数据。文件通常由数据、元......
  • 快速掌握 python进阶【异常处理】【文件操作】
    一、异常处理机制异常的定义:程序运行时发生的不正常事件。使用异常处理机制,捕获异常,处理异常。异常分为:内置异常、自定义异常。1.1内置异常处理异常处理是对异常进行捕获、抛出、处理,提高程序健壮性的机制。算法的设计要求:正确性、可读性、健壮性、高效率、低存储使用......