13. Mybatis-Plus

news2024/11/16 15:50:48

目录

1. MyBatis-Plus 简介

2. 新建项目

3. 添加依赖

4. 配置数据库

5. 编码


1. MyBatis-Plus 简介

通过官网:MyBatis-Plus 

MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

MyBatis-Plus 的特点:

  • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
  • 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
  • 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
  • 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
  • 支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题
  • 支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作
  • 支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )
  • 内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用
  • 内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询
  • 分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库
  • 内置性能分析插件:可输出 SQL 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询
  • 内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作

2. 新建项目

此处还需要导入:MySQL Driver 

3. 添加依赖

在 pom.xml 文件中添加以下内容:

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.1</version>
</dependency>

4. 配置数据库

在 application.yml 文件中配置以下内容:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mycnblog?characterEncoding=utf8&useSSL=false
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver

username 和 password 修改为自己的数据库的用户名和密码即可。

5. 编码

默认扫描启动类所在路径。我们先来看一下此时数据库中表中的数据:

 接下来,我们添加 User 类:

@Data
@TableName("userinfo")
public class User {
    private Integer id;
    @TableField("username")
    private String name;
    @TableField("password")
    private String pwd;
    private String photo;
    private Date createtime;
    private Date updatetime;
}

使用 @TableName 注解确定使用的是 userinfo 这张表,通过 @TableField 注解将数据库中的对应字段写入,说明映射关系。

新建 UserMapper 类:

@Mapper
public interface UserMapper extends BaseMapper<User> {

}

新建测试类: 

@Slf4j
@SpringBootTest
class UserMapperTest {
    @Autowired
    private UserMapper userMapper;
    @Test
    void queryAll(){
        List<User> userList = userMapper.selectList(null);
        log.info(userList.toString());
    }
}

运行后,可以看到成功查询到了所有数据: 

我们可以看到继承的接口 BaseMapper 中已经实现了以下方法:

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

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

相关文章

浅谈 AI 大模型的崛起与未来展望:马斯克的 xAI 与中国产业发展

文章目录 &#x1f4ac;话题&#x1f4cb;前言&#x1f3af;AI 大模型的崛起&#x1f3af;中国 AI 产业的进展与挑战&#x1f3af;AI 大模型的未来展望&#x1f9e9;补充 &#x1f4dd;最后 &#x1f4ac;话题 北京时间 7 月 13 日凌晨&#xff0c;马斯克在 Twiiter 上宣布&am…

【MTI 6.S081 Lab】networking

【MTI 6.S081 Lab】networking BackgroudYour Job (hard)实验任务 解决方案 这个实验中&#xff0c;在dns解析时&#xff0c;去请求其dns服务器失败&#xff0c;所以将nettest中的dns服务器改为我自己的。修改的位置大概在nettest.c的235行。 这个实验的设备的具体使用就没去看…

行为型:迭代器模式

定义 迭代器模式提供一种方法按顺序访问一个聚合对象中的各个元素&#xff0c;而又不暴露该对象的内部表示。迭代器模式是目的性极强的模式&#xff0c;它主要是用来解决遍历问题。 es6 中的迭代器 JS原生的集合类型数据结构&#xff0c;有Array&#xff08;数组&#xff09;和…

【算法基础:动态规划】5.2 线性DP

文章目录 例题列表898. 数字三角形895. 最长上升子序列&#xff08;n^2两重循环dp&#xff09;896. 最长上升子序列 II&#xff08;贪心二分查找&#xff09;897. 最长公共子序列902. 最短编辑距离899. 编辑距离⭐⭐⭐⭐⭐ 例题列表 898. 数字三角形 每个数字可以从它上面的左…

【雕爷学编程】MicroPython动手做(15)——掌控板之AB按键

知识点&#xff1a;什么是掌控板&#xff1f; 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片&#xff0c;支持WiFi和蓝牙双模通信&#xff0c;可作为物联网节点&#xff0c;实现物联网应用。同时掌控板上集成了OLED…

怎么查看gcc的安装路径

2023年7月29日 很简单&#xff0c;通过在命令行输入如下命令就可以了&#xff1a; gcc -print-search-dirs在Windows中 在Linux中 ​​​

Github Copilot在JetBrains软件中登录Github失败的解决方案

背景 我在成功通过了Github Copilot的学生认证之后&#xff0c;在VS Code和PyCharm中安装了Github Copilot插件&#xff0c;但在PyCharm中插件出现了问题&#xff0c;在登录Github时会一直Retrieving Github Device Code&#xff0c;最终登录失败。 我尝试了网上修改DNS&…

❤️创意网页:能量棒页面 - 可爱版(加载进度条)

✨博主&#xff1a;命运之光 &#x1f338;专栏&#xff1a;Python星辰秘典 &#x1f433;专栏&#xff1a;web开发&#xff08;简单好用又好看&#xff09; ❤️专栏&#xff1a;Java经典程序设计 ☀️博主的其他文章&#xff1a;点击进入博主的主页 前言&#xff1a;欢迎踏入…

电动汽车集群并网的分布式鲁棒优化调度模型(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f308;4 Matlab代码实现 &#x1f4a5;1 概述 文献来源&#xff1a; 随着可再生能源&#xff08;Renewable Energy Source, RES&#xff09;的渗透率不断提高&#xff0c;RES 固有的间歇性对…

【RabbitMQ】Linux系统服务器安装RabbitMQ

一、下载 首先应该下载erlang&#xff0c;rabbitmq运行需要有erland环境。 官网地址&#xff1a;https://www.erlang.org/downloads 下载rabbitmq 官网环境&#xff1a;https://www.rabbitmq.com/download.html 注意&#xff1a;el7对应centos7&#xff0c;el8对应centos8…

机器学习:混合高斯聚类GMM(求聚类标签)+PCA降维(3维降2维)习题

使用混合高斯模型 GMM&#xff0c;计算如下数据点的聚类过程&#xff1a; Datanp.array([1,2,6,7]) 均值初值为: μ1,μ21,5 权重初值为: w1,w20.5,0.5 方差: std1,std21,1 K2 10 次迭代后数据的聚类标签是多少&#xff1f; 采用python代码实现&#xff1a; from scipy import…

iOS开发-CABasicAnimation实现小球左右摆动动画效果

iOS开发-CABasicAnimation实现小球左右摆动动画效果 之前开发中遇到需要实现小球左右摆动动画效果&#xff0c;这里作下记录。 一、效果图 二、实现代码 2.1 CABasicAnimation CABasicAnimation基础动画&#xff0c;包括duration、repeatCount、repeatDuration、beginTime、…

Java中对Redis的常用操作

目录 数据类型五种常用数据类型介绍各种数据类型特点 常用命令字符串操作命令哈希操作命令列表操作命令集合操作命令有序集合操作命令通用命令 在Java中操作RedisRedis的Java客户端Spring Data Redis使用方式介绍环境搭建配置Redis数据源编写配置类&#xff0c;创建RedisTempla…

JavaEE—— Callable接口、JUC的常见类、线程按安全的集合类(八股)

文章目录 一、Callable 接口二、JUC的常见类1. ReentrantLock2. 原子类(简单知晓)3.信号量 Semaphore4.CountDownLatch(简单了解) 三、线程安全的集合类1.多线程环境使用 ArrayList2.多线程使用哈希表 一、Callable 接口 Callable 接口类似于 Runnable 接口 Runnable 接口用来…

当阿里面试官问什么是hash?什么是布隆过滤器?什么是一致性hash?看这一篇就够了,很肝!也很干!

算法拾遗三十六hash 哈希函数特点hash表设计布隆过滤器布隆过滤器三大公式最终求解公式 一致性哈希经典数据存储经典hash缺点及解决方案虚拟节点 哈希函数特点 输入&#xff1a;任意长度字符串&#xff08;输入域无穷大&#xff09; 输出&#xff1a;相对有限 哈希函数无任何随…

前端,js , Error in created hook: TypeError ,有bug了

怎么兄弟&#xff0c;遇到bug了&#xff1f;&#xff1f;&#xff1f;你开心吗&#xff0c;哈哈哈哈

Linux操作系统1-命令篇

不同领域的主流操作系统 桌面操作系统 Windos Mac os Linux服务器操作系统 Unix Linux(免费、稳定、占有率高) Windows Server移动设备操作系统 Android(基于Linux,开源) ios嵌入式操作系统 Linux(机顶盒、路由器、交换机) Linux 特点&#xff1a;免费、开源、多用户、多任务…

【C/C++】#include<xxx.h>和#include“xxx.h“之间的区别以及寻找gcc和g++的系统头文件目录和系统库文件目录的方法

2023年7月29日&#xff0c;周六晚上 今天下午和晚上花了不少时间去研究这个C/C的头文件以及#include<xxx.h>和#include"xxx.h"之间的区别&#xff0c;收获到了很多的很有用的知识。非常值得花时间来以博客的形式总结这些学习成果。 说实话&#xff0c;我挺想…

python美化图形化界面设计,pythontkinter界面美化

大家好&#xff0c;本文将围绕python美化图形化界面设计展开说明&#xff0c;pythontkinter界面美化是一个很多人都想弄明白的事情&#xff0c;想搞清楚python美化输出模块需要先了解以下几个事情。 1、python如何做界面 PyQt&#xff0c;一个基于Qt的Python接口包&#xff0c…

网络框架重构之路plain2.0(c++23 without module) 综述

原因 plain1.1rc的不足 &#xff11;、命名空间问题 如果看过或者接触过plain的朋友&#xff0c;不难发现命名空间都是以pf_*开头。说起这个的时候&#xff0c;还是要从plain的前身plainserver&#xff08;GitHub - viticm/plainserver: A plain server, simple but stronger.&…