springboot-MybatisPlus

news2024/11/15 13:42:15

mybatisplus是来简化mybatis开发的,其中封装好了各种sql语句,我们直接调用即可,省略了编写mapper.xm映射文件的过程

MybatisPlus怎么来获取数据库表的信息?

  • 默认以类型驼峰转下划线作为表名
  • 默认把id字段作为主键
  • 默认把变量名驼峰转下划线作为字段名

1.入门程序

前提:准备好数据库,pojo实体类

1.1导入依赖

  <!--MybatisPlus-SpringBoot-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.3.1</version>
        </dependency>

1.2.mapper——UserMapper接口

与之前使用mybatis不同的是,这个接口要继承MybatisPlus提供的父类,这个父类里封装了SQL语句

@Mapper
@Repository
public interface UserMapper extends BaseMapper<User> {
}

1.3.测试类

insert语句我们并没有编写,是MybatisPlus给我们提供的

@SpringBootTest
class SpringbootMybatisplusApplicationTests {

    @Autowired
    UserMapper userMapper;

    @Test
    void test01(){
        User user = new User();
        user.setId(4);
        user.setPwd("12035");
        user.setName("小张");
        user.setPerms(null);
        System.out.println(userMapper.insert(user));
    }

}

2.常用注解

  • @TableName:当类名和表名不一致时用来指定表名
  • @TableId:用来指定表中的主键字段信息
  • @TableField:当属性名和字段名不一致时用来指定表中的普通字段信息

注意:如果数据库里的id有类型(比如是自增长的),那么就必须添上下面例子里的注解,否则默认是通过雪花算法来给id赋值的 

@TableName("tb_user")
public class User {

    @TableId(type = IdType.AUTO)
    private int id;
    @TableField("name")
    private String name;
    private String pwd;
    private String perms;
}

3.常见配置

mybatisplus继承了mybatis的原生配置,如:

  • xml映射文件路径
  • 驼峰命名和下划线映射
  • 别名扫描包

4.条件构造器

在执行SQL语句时,难免会有复杂情况,mybatisplus也有这些情况的应对方式

4.1.selectList 

    @Test
    void test02(){

        QueryWrapper<User> wrapper = new QueryWrapper<>();
        wrapper.select("id","name");
        wrapper.like("name","张");

        List<User> users = userMapper.selectList(wrapper);
        for (User user : users) {
            System.out.println(user);
        }
    }

解释上面的代码:

  • 我们通过mapper接口的对象来调用mybatisplus封装好的select方法,其中需要一个叫做QueryWrapper类型的参数
  • 因此,我们就要先来构造这个对象,然后通过构造的对象可以给SQL增加复杂条件
  • wrapper.select("id","name"); 表示要查询的字段只有id和name
  • wrapper.like("name","张"); 表示模糊查询name中带有“张”的用户
  • 上面的代码生成的SQL为:
    select id , name from tb_user where name like '%张%'

4.2.update 

    @Test
    void test03(){
        //1.更新的数据
        User user = new User();
        user.setPwd("52236");
        //2.更新的条件
        UpdateWrapper<User> wrapper = new UpdateWrapper<>();
        wrapper.eq("name","小张");
        //3.执行更新
        userMapper.update(user,wrapper);
    }

 解释上面的代码:

  • update方法需要两个参数,一个是实体类对象,另一个是wrapper
  • 实体类对象来传要修改的数据
  • wrapper对象来传修改的条件
  • 上面的代码生成的SQL为:
    update tb_user set pwd = '52236' where name = '小张'

4.3.基于lambda的格式

    @Test
    void test04(){
        //查询条件
        LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
        wrapper.select(User::getId,User::getName);
        wrapper.like(User::getName,"张");
        //执行SQL
        List<User> users = userMapper.selectList(wrapper);
        for (User user1 : users) {
            System.out.println(user1);
        }
    }

 解释上面的代码:

  • LambdaQueryWrapper和QueryWrapper的区别是,前者在传参数的时候,要的是方法类型的参数,可以和4.1对比一下,在4.1中为id的地方,在4.3中就是getId,诸如此类

5.IService接口基本用法

上面介绍了mybatisplus提供的Mapper接口BaseMapper,下面来介绍下mybatisplus提供的Service接口IService和Service实现类ServiceImpl

service接口: 

public interface UserService extends IService<User> {
}

service实现类: 

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}

PS:这部分笔记只是浅浅的学习了下mybatisplus(主要是为了应对网上的项目才学的)后面有时间,我会把剩下的笔记补齐的

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

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

相关文章

eNSP--vlan技术

思路: 一、配置交换机与路由器, 二、通过DHCP 获取地址 单臂路由,实现访问要求,重点考察对vlan标签的处理和使用。 用到的接口有access,trunk,hybrid三种 (所有配置请以下图为准) 配置: 一、 sw1 sw1接口g0/0/1 指定access接口,属于vlan2; g0/0/2接口我们将它…

C#中解决字符串在编译后无法修改的情况

文章目录 一、配置文件二、使用方式对于.NET Framework应用程序&#xff08;使用app.config&#xff09;对于.NET Core和.NET 5/6应用程序&#xff08;使用appsettings.json&#xff09; 三、应用实例 一、配置文件 在C#等编程语言中&#xff0c;硬编码&#xff08;直接在代码…

#Linux(编写第一个命令)

&#xff08;一&#xff09;发行版&#xff1a;Ubuntu16.04.7 &#xff08;二&#xff09;记录&#xff1a; &#xff08;1&#xff09;编写一个c程序然后将生成的可执行的文件加入环境变量或者放入bin目录中&#xff0c;即可在其他目录下调用&#xff08;之前编写的程序只能在…

深度学习 Lecture 4 Adam算法、全连接层与卷积层的区别、图计算和反向传播

一、Adam算法&#xff08;自适应矩估计&#xff09; 全名&#xff1a;Adapative Moment Estimation 目的&#xff1a;最小化代价函数&#xff08;和梯度下降一样&#xff09; 本质&#xff1a;根据更新学习率后的情况自动更新学习率的值(可能是自动增大&#xff0c;也可能是…

基于python+vue共享单车信息系统的设计与实现flask-django-php-nodejs

课题主要分为二大模块&#xff1a;即管理员模块和用户模块&#xff0c;主要功能包括&#xff1a;用户、区域、共享单车、单车租赁、租赁归还、报修信息、检修信息等&#xff1b;快速发展的社会中&#xff0c;人们的生活水平都在提高&#xff0c;生活节奏也在逐渐加快。为了节省…

酷开科技OTT大屏营销重构新生,让营销被看见

在过去的十年间&#xff0c;中国视听新媒体产业迎来了发展的黄金时代。这一时期&#xff0c;见证了视听新媒体业态的广泛涌现&#xff0c;它们不仅迅速成长和扩张&#xff0c;而且逐步走向了成熟。互联网电视的兴起&#xff0c;为消费者带来了多样化的视听内容享受方式&#xf…

【Linux多线程】线程的概念

【Linux多线程】线程的概念 目录 【Linux多线程】线程的概念Linux线程的概念什么是线程重新定义线程和进程 进程地址空间第四讲线程的优点线程的缺点线程异常线程的用途 Linux进程VS线程进程和线程关于进程线程的问题 Linux线程控制POSIX线程库创建线程如何给线程传参&#xff…

鸿蒙Harmony应用开发—ArkTS-全局UI方法(菜单)

在页面范围内关闭通过bindContextMenu属性绑定的菜单。 说明&#xff1a; 从API Version 8开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 ContextMenu.close 方法描述close(): void可以通过该方法在页面范围内关闭通过bindContextMenu给…

onlyoffice创建excel文档

前提 安装好onlyoffice然后尝试api开发入门 编写代码 <html> <head><meta charset"UTF-8"><meta name"viewport"content"widthdevice-width, user-scalableno, initial-scale1.0, maximum-scale1.0, minimum-scale1.0"&…

3D高斯泼溅的崛起

沉浸式媒体领域正在以前所未有的速度发展&#xff0c;其中 3D 高斯溅射成为一项关键突破。 这项技术在广泛的应用中看起来非常有前景&#xff0c;并且可能会彻底改变我们未来创建数字环境以及与数字环境交互的方式。 在本文中&#xff0c;我们将通过与摄影测量和 NeRF 等前辈进…

数学建模(Topsis python代码 案例)

目录 介绍&#xff1a; 模板&#xff1a; 案例&#xff1a; 极小型指标转化为极大型&#xff08;正向化&#xff09;&#xff1a; 中间型指标转为极大型&#xff08;正向化&#xff09;&#xff1a; 区间型指标转为极大型&#xff08;正向化&#xff09;&#xff1a; 标…

低压MOS在无人机上的应用-REASUNOS瑞森半导体

一、前言 无人机的结构由机身、动力系统、飞行控制系统、链路系统、任务载荷等几个方面组成的。 无人机动力系统中的电机&#xff0c;俗称“马达”&#xff0c;是无人机的动力来源&#xff0c;无人机通过改变电机的转速来改变无人机的飞行状态。即改变每个电机的速度&#xf…

灵境矩阵:开启无代码写作新时代,AI智能平台引领创作潮流

灵境矩阵 “灵境杯”智能体创意大赛&#xff0c;瓜分百万超级奖励 在当今数字化快速发展的时代&#xff0c;人工智能&#xff08;AI&#xff09;技术正逐渐渗透到我们生活的方方面面。从智能家居到自动驾驶&#xff0c;AI的应用领域不断扩大&#xff0c;而今天&#xff0c;我们…

在基于Android相机预览的CV应用程序中使用 OpenCL

查看&#xff1a;OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇&#xff1a;OpenCV4.9.0在Android 开发简介 下一篇&#xff1a;在 MacOS 中安装 本指南旨在帮助您在基于 Android 相机预览的 CV 应用程序中使用 OpenCL ™。教程是为 Android Studio 20…

软考 系统架构设计师系列知识点之云原生架构设计理论与实践(1)

所属章节&#xff1a; 第14章. 云原生架构设计理论与实践 第1节 云原生架构产生背景 云原生&#xff08;Cloud Native&#xff09;是近几年云计算领域炙手可热的话题&#xff0c;云原生技术已成为驱动业务增长的重要引擎。同时&#xff0c;作为新型基础设施的重要支撑技术&…

DMHS同步之MYSQL to MYSQL

一、环境情况 二、源端及目的端安装MySQL&#xff0c;可参考网上资料&#xff0c;此处省略安装过程 三、目的端安装配置unixODBC 1.上传unixODBC-2.3.12.tar.gz包到/opt下 2.解压 cd /opt tar -zvxf unixODBC-2.3.12.tar.gz复制 3.安装 cd unixODBC-2.3.11 ./configure …

使用 React antd 的ProFormSelect组件 搜索查询 多选的写法

使用 React antd 的ProFormSelect组件 搜索查询 多选的写法 需求&#xff1a;需要一个搜索框&#xff0c;可以选择员工&#xff0c;&#xff08;员工人数多无法一次性获取&#xff0c;全部放入options中&#xff09;&#xff0c;所以需要使用搜索功能&#xff0c;而且是可以多…

WebXR实践——利用aframe框架浏览器展示全景图片

一、效果 话不多说&#xff0c;先上效果 二、代码 index.html <!DOCTYPE html> <html><head><meta charset"utf-8"><title>360&deg; Image</title><meta name"description" content"360&deg; Imag…

【QT入门】 Qt槽函数五种常用写法介绍

声明&#xff1a;该专栏为本人学习Qt知识点时候的笔记汇总&#xff0c;希望能给初学的朋友们一点帮助(加油&#xff01;) 往期回顾&#xff1a; 【QT入门】实现一个简单的图片查看软件-CSDN博客 【QT入门】图片查看软件(优化)-CSDN博客 【QT入门】 lambda表达式(函数)详解-CSDN…

odoo扩展导出pdf功能

1. 说明: odoo原生导出功能扩展导出pdf文件功能, 如有额外需求请联系博主 2. 版本说明: odoo版本: odoo15 其他odoo版本未进行测试,如有需要自行测试 3. 地址: 该补丁代码放在github仓库, 地址: https://github.com/YSL-Alpaca/odoo_export_pdf 4. 改补丁依赖于第三方软件wkh…