mybatis plus入门

mybatis plus入门

  • MyBatis-Plus 是 MyBatis 的一个增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。它继承了 MyBatis 原生的所有特性,并且做了深度的优化和扩展。以下是 MyBatis-Plus 的一些主要特性和功能:
  1. 自动填充 :支持插入和更新时字段的自动填充。
  2. 乐观锁 :通过注解方式实现乐观锁,保证数据操作的安全性。
  3. 逻辑删除 :通过简单配置实现逻辑删除,而不是物理删除数据。
  4. 代码生成器 :提供强大的代码生成器,通过简单的配置就能生成 Mapper、Model、Service、Controller 等代码。
  5. 分页插件 :内置分页插件,简化分页操作。
  6. 条件构造器 :提供了丰富的方法用于构造查询条件,使查询操作更加便捷。
  7. SQL注入器 :通过自定义方法,扩展通用的Mapper接口。
  8. 主键策略 :支持多种数据库主键策略。
  9. 性能分析插件 :提供 SQL 性能分析插件,帮助开发者找出潜在的性能问题。
  10. 多租户 SQL 解析器 :对于多租户系统的支持,可以在运行时动态添加租户信息到 SQL 语句中。
  11. 动态表名 SQL 解析器 :支持动态修改表名,适用于分表分库等场景。
  12. 全局公共字段自动填充 :比如创建时间、修改时间等字段,可以自动管理。
  13. 类型处理器(TypeHandler) :支持 Java 类型和数据库类型之间的自定义映射处理。
  14. 枚举类处理 :支持将枚举类与数据库字段直接映射。

MyBatis-Plus 通过这些功能大幅度提升了开发效率和体验,使得操作数据库变得更加简洁和高效。如果你有任何具体的问题或需要在某个功能上的帮助,请随时告诉我!

springboot使用mybatisplus的教程

1. 创建 Spring Boot 项目

首先,你需要有一个 Spring Boot 项目。你可以使用 Spring Initializr (start.spring.io ) 来快速创建一个项目。选择 Maven 或 Gradle 作为构建工具,并添加 Web、MyBatis-Plus 相关依赖。

2. 添加依赖

在你的 pom.xml(Maven)或 build.gradle(Gradle)中添加 MyBatis-Plus 的依赖。以 Maven 为例:

<dependencies><!-- Spring Boot 相关依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- MyBatis-Plus --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.x.x</version> <!-- 使用最新版本 --></dependency><!-- 数据库驱动,以MySQL为例 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency>
</dependencies>

3. 配置数据源

application.propertiesapplication.yml 中配置你的数据库连接。例如:

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

4. 配置 MyBatis-Plus

在 Spring Boot 项目中,MyBatis-Plus 大部分情况下是开箱即用的。你可以通过创建一个配置类来添加一些自定义配置,例如分页插件等。

@Configuration
@MapperScan("com.yourpackage.mapper") // 指定扫描的mapper接口所在的包
public class MybatisPlusConfig {@Beanpublic PaginationInterceptor paginationInterceptor() {return new PaginationInterceptor();}
}

5. 创建实体类

根据你的数据库表创建相应的实体类。例如:

@Data
@TableName("user") // 数据库表名
public class User {@TableId(type = IdType.AUTO)private Long id;private String name;private Integer age;private String email;
}

6. 创建 Mapper 接口

创建一个继承 BaseMapper 的 Mapper 接口:

public interface UserMapper extends BaseMapper<User> {// 这里可以添加一些自定义的方法
}

7. 使用 MyBatis-Plus

现在,你可以在你的服务中注入 Mapper 并使用它:

@Service
public class UserService {@Autowiredprivate UserMapper userMapper;public List<User> findAll() {return userMapper.selectList(null);}
}

8. 运行和测试

编写控制器并测试你的接口,确保一切工作正常。

总结

这是一个简单的入门教程,介绍了如何在 Spring Boot 项目中集成和使用 MyBatis-Plus。MyBatis-Plus 有许多强大的特性,如动态 SQL、逻辑删除、自动填充等,可以根据项目需求进一步探索和使用。如果你遇到任何具体问题或需要更深入的帮助,请随时询问!

MyBatis-Plus增删改查

  • MyBatis-Plus 是一个非常强大的 ORM 框架,提供了简洁易用的 API 来处理数据库的增删改查(CRUD)操作。下面是如何使用 MyBatis-Plus 进行基本的 CRUD 操作的详细指南。

1. 插入操作(Create)

** 方法:**

User user = new User();
user.setName("张三");
user.setAge(28);
user.setEmail("zhangsan@example.com");int result = userMapper.insert(user); // userMapper 是继承了 BaseMapper 的接口
  • 这里的 userMapper.insert(user) 会将 user 对象插入到数据库中。
  • result 是影响的行数。

2. 查询操作(Read)

** 方法根据主键查询:**

User user = userMapper.selectById(1); // 查询主键为 1 的用户

** 方法查询全部记录:**

List<User> users = userMapper.selectList(null); // 查询所有用户

条件查询:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "张三"); // 构造条件,等同于 SQL 中的 WHERE name = '张三'List<User> users = userMapper.selectList(queryWrapper);

3. 更新操作(Update)

** 方法更新:**

User user = new User();
user.setId(1); // 需要更新的用户的 ID
user.setEmail("lisi@example.com"); // 新的邮箱地址int result = userMapper.updateById(user);

条件更新:

UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("name", "张三").set("age", 30); // 将名为张三的用户的年龄改为30int result = userMapper.update(null, updateWrapper);

4. 删除操作(Delete)

** 方法根据主键删除:**

int result = userMapper.deleteById(1); // 删除主键为 1 的用户

条件删除:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "张三"); // 删除名为张三的用户int result = userMapper.delete(queryWrapper);

总结

MyBatis-Plus 提供了非常方便的方法来进行 CRUD 操作,让你无需编写繁琐的 SQL 语句。上述示例展示了最基本的用法,MyBatis-Plus 还提供了许多其他高级特性,如批量操作、分页查询、自动填充等,你可以根据你的项目需求进行深入学习和使用。如果你在使用过程中遇到任何问题,或者需要了解更多高级特性,请随时提问!

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

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

相关文章

视频渲染靠cpu还是显卡 会声会影视频渲染的作用是什么

视频渲染最占用的资源就是CPU&#xff0c;多核心多线程&#xff0c;这样才能渲染快。渲染可以在时间线上实时平滑预览&#xff0c;便于编辑&#xff0c;最终导出成片的时候速度也会快一些&#xff0c;渲染就是对每桢的图像进行重新优化的过程。 渲染的作用主要是能够保证使用者…

Layui技术积累

2024.01.24 1.Layui 栅格系统 在 Layui 的栅格系统中&#xff0c;屏幕尺寸的划分为&#xff1a; 中等屏幕&#xff08;md&#xff09;&#xff1a; 12 列小屏幕&#xff08;sm&#xff09;&#xff1a; 12 列极小屏幕&#xff08;xs&#xff09;&#xff1a; 12 列 不同的类名…

【java面试】Spring

目录 1. Spring 介绍1.1 Spring 的优点1.2 Spring 的缺点1.3 详细讲解一下核心容器&#xff08;spring context应用上下文) 模块 2. Spring俩大核心概念IOC&#xff0c;Inversion of Control&#xff0c;控制反转AOP(Aspect-OrientedProgramming)&#xff0c;面向切面编程Sprin…

海量数据场景下的热门算法题(算法村第十五关白银挑战)

从40亿中产生一个不存在的整数 给定一个输入文件&#xff0c;包含40亿个非负整数&#xff0c;请设计一个算法&#xff0c;产生一个不存在该文件中的整数&#xff0c;假设你有1GB的内存来完成这项任务。 进阶&#xff1a;如果只有10MB的内存可用&#xff0c;该怎么办&#xff1f…

Gradle学习笔记:Gradle的使用方法

文章目录 1.初始化项目2.构建脚本语言选择3.项目命名4.项目构建过程 1.初始化项目 创建一个test空文件夹&#xff0c;在该文件夹下打开终端&#xff0c;并执行命令&#xff1a;gradle init. 会有一个选项让你选择项目的类型。下面是每个选项的含义和用途&#xff1a; basic&am…

Hylicos - MINI2440 - 中断控制

中断 中断源管理 中断是一种异步异常&#xff0c;CPU需要处理很多来自设备的中断请求&#xff0c;而CPU引出的line只有IRQ线和FIQ线&#xff0c;所以就得引入中断控制器帮助CPU搞清楚是中断的来源。 MINI2440的中断控制器&#xff0c;可以接受来自60个中断源的请求。提供这些…

mysql更新charset

因为要从mysql5.x升级到mysql8&#xff0c;原来数据库表里面的一些utf-8字段只支持utf8mb3&#xff0c;更新到utf8mb4以支持更多的unicode字符. 解决办法 改变数据库 ALTER DATABASEdatabase_nameCHARACTER SET utf8mb4COLLATE utf8mb4_general_ci;改变表 ALTER TABLEtab…

k8s从入门到实践

k8s从入门到实践 介绍 Kubernetes&#xff08;简称k8s&#xff09;和Docker Swarm是两个流行的容器编排工具&#xff0c;它们都可以帮助用户管理和部署分布式应用&#xff0c;尤其是基于容器的应用。以下是两者的主要特点和对比&#xff1a; Kubernetes (k8s)&#xff1a; 开…

机器学习笔记 - 基于自定义数据集 + 3D CNN进行视频分类

一、简述 这里主要介绍了基于自定义动作识别数据集训练用于视频分类的 3D 卷积神经网络 (CNN) 。3D CNN 使用三维滤波器来执行卷积。内核能够在三个方向上滑动,而在 2D CNN 中它可以在二维上滑动。 这里的模型主要基于D. Tran 等人2017年的论文“动作识别的时空卷积研究”。 …

【算法】糖果(差分约束)

题目 幼儿园里有 N 个小朋友&#xff0c;老师现在想要给这些小朋友们分配糖果&#xff0c;要求每个小朋友都要分到糖果。 但是小朋友们也有嫉妒心&#xff0c;总是会提出一些要求&#xff0c;比如小明不希望小红分到的糖果比他的多&#xff0c;于是在分配糖果的时候&#xff…

RocketMQ源码阅读-九-自定义过滤规则Flitersrv

RocketMQ源码阅读-九-自定义过滤规则Flitersrv 什么是FiltersrvFiltersrv注册到Broker过滤类Consumer发起订阅设置过滤类代码Consumer上传过滤类代码Flitersrv编译过滤类代码 过滤消息Consumer 从 Filtersrv 拉取消息Flitersrv从Broker拉取消息 Flitersrv的高可用总结 什么是Fi…

vue上传解析excel表格并修改字段名

目录 1.安装 xlsx 2.引入 3.使用 1.安装 xlsx npm install xlsx 2.引入 import * as XLSX from xlsx; 3.使用 <template><div class"UploadCptOutbox"><div class"Tooloutbox"><el-uploadclass"upload"ref"u…

数据库(二)

DDL语句对数据库的操作&#xff1a; 创建&#xff1a;create database 数据库名 &#xff1b; 修改&#xff1a;alter database 数据库名 charset 字符集 &#xff1b; 删除: drop database 数据库名&#xff1b; 查询&#xff1a;show databases; DDL语句对表的操作 …

【C++】内存分区模型

目录 1.程序运行前 2.程序运行后 3. new操作符 3.1 基本语法 3.2 开辟数组 C程序在执行时&#xff0c;将内存大方向划分为4个区域 代码区&#xff1a;存放函数体的二进制代码&#xff0c;由操作系统进行管理的 全局区&#xff1a; 存放全局变量和静态变量以及常量栈区 …

时序分解 | MATLAB实现CEEMDAN+SE自适应经验模态分解+样本熵计算

时序分解 | MATLAB实现CEEMDANSE自适应经验模态分解样本熵计算 目录 时序分解 | MATLAB实现CEEMDANSE自适应经验模态分解样本熵计算效果一览基本介绍程序设计参考资料 效果一览 基本介绍 MATLAB实现CEEMDANSE自适应经验模态分解样本熵计算 包括频谱图 附赠案例数据 可直接运行 …

喜报|「云原生数据库PolarDB」、「阿里云瑶池一站式数据管理平台」揽获“2023技术卓越奖”

日前&#xff0c;国内知名IT垂直媒体&技术社区IT168公布2023年“技术卓越奖”评选结果&#xff0c;经由行业CIO/CTO大咖、技术专家及IT媒体三方的联合严格评审&#xff0c;阿里云瑶池数据库揽获两项大奖&#xff1a;云原生数据库PolarDB荣获“2023年度技术卓越奖”&#xf…

YOLOv5全网独家首发:Powerful-IoU更好、更快的收敛IoU,效果秒杀CIoU、GIoU等 | 2024年最新IoU

💡💡💡本文独家改进:Powerful-IoU更好、更快的收敛IoU,是一种结合了目标尺寸自适应惩罚因子和基于锚框质量的梯度调节函数的损失函数 💡💡💡MS COCO和PASCAL VOC数据集实现涨点 收录 YOLOv5原创自研 https://blog.csdn.net/m0_63774211/category_1251193…

《SPSS统计学基础与实证研究应用精解》视频讲解:数据加权处理

《SPSS统计学基础与实证研究应用精解》4.7 视频讲解 视频为《SPSS统计学基础与实证研究应用精解》张甜 杨维忠著 清华大学出版社 一书的随书赠送视频讲解4.7节内容。本书已正式出版上市&#xff0c;当当、京东、淘宝等平台热销中&#xff0c;搜索书名即可。本书旨在手把手教会使…

Redis 面试题 | 11.精选Redis高频面试题

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

CNN卷积理解

1 卷积的步骤 1 过滤器&#xff08;卷积核&#xff09;&#xff08;Filter或Kernel&#xff09;&#xff1a; 卷积层使用一组可学习的过滤器来扫描输入数据&#xff08;通常是图像&#xff09;。每个过滤器都是一个小的窗口&#xff0c;包含一些权重&#xff0c;这些权重通过训…