MybatisPlus的使用(一)--基本配置与无条件查询

创建测试用的数据库

CREATE DATABASE `mybatis_plus` /*!40100 DEFAULT CHARACTER SET utf8mb4 */; use `mybatis_plus`;
CREATE TABLE `user` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`name` varchar(30) DEFAULT NULL COMMENT '姓名 ',
`age` int(11) DEFAULT NULL COMMENT '年龄 ',
`email` varchar(50) DEFAULT NULL COMMENT '邮箱 ',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

向数据库插入数据

INSERT INTO user (id, name, age, email) VALUES
(1, 'Jone', 18, 'test1@baomidou.com'),
(2, 'Jack', 20, 'test2@baomidou.com'),
(3, 'Tom', 28, 'test3@baomidou.com'),
(4, 'Sandy', 21, 'test4@baomidou.com'),
(5, 'Billie', 24, 'test5@baomidou.com');

pom文件中引入依赖

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>

idea中安装lombok插件

配置application.yml

具体的数据库名,用户名,密码更换为自己的

spring:
# 配置数据源信息
datasource:
# 配置数据源类型
type: com.zaxxer.hikari.HikariDataSource
# 配置连接数据库信息
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mybatis_plus?characterEncoding=utf- 8&useSSL=false
username: root
password: 123456

设置在启动类设置mapper扫描的包

@MapperScan("zoo.mapper")
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class SpringDemo2Application {public static void main(String[] args) {SpringApplication.run(SpringDemo2Application.class, args);}
}

添加实体类

  • 这里实体类的主键也就是id必须为Long类型的。
@Data //lombok注解
public class User {private Long id;
private String name;
private Integer age;
private String email;}
  • @Data注解的作用是自动生成getter、setter、equals、hashCode和toString等方法,无需我们再手动添加。

下面是加上@Data注解,经过编译后的User.class文件,可见它已经生成了getter、setter、equals、hashCode和toString等方法

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//package zoo.pojo;import zoo.enmu.SexEnum;public class User {private Long id;private String name;private Integer age;private String email;private SexEnum sex;public User() {}public Long getId() {return this.id;}public String getName() {return this.name;}public Integer getAge() {return this.age;}public String getEmail() {return this.email;}public SexEnum getSex() {return this.sex;}public void setId(final Long id) {this.id = id;}public void setName(final String name) {this.name = name;}public void setAge(final Integer age) {this.age = age;}public void setEmail(final String email) {this.email = email;}public void setSex(final SexEnum sex) {this.sex = sex;}public boolean equals(final Object o) {if (o == this) {return true;} else if (!(o instanceof User)) {return false;} else {User other = (User)o;if (!other.canEqual(this)) {return false;} else {label71: {Object this$id = this.getId();Object other$id = other.getId();if (this$id == null) {if (other$id == null) {break label71;}} else if (this$id.equals(other$id)) {break label71;}return false;}Object this$age = this.getAge();Object other$age = other.getAge();if (this$age == null) {if (other$age != null) {return false;}} else if (!this$age.equals(other$age)) {return false;}label57: {Object this$name = this.getName();Object other$name = other.getName();if (this$name == null) {if (other$name == null) {break label57;}} else if (this$name.equals(other$name)) {break label57;}return false;}Object this$email = this.getEmail();Object other$email = other.getEmail();if (this$email == null) {if (other$email != null) {return false;}} else if (!this$email.equals(other$email)) {return false;}Object this$sex = this.getSex();Object other$sex = other.getSex();if (this$sex == null) {if (other$sex == null) {return true;}} else if (this$sex.equals(other$sex)) {return true;}return false;}}}protected boolean canEqual(final Object other) {return other instanceof User;}public int hashCode() {int PRIME = true;int result = 1;Object $id = this.getId();int result = result * 59 + ($id == null ? 43 : $id.hashCode());Object $age = this.getAge();result = result * 59 + ($age == null ? 43 : $age.hashCode());Object $name = this.getName();result = result * 59 + ($name == null ? 43 : $name.hashCode());Object $email = this.getEmail();result = result * 59 + ($email == null ? 43 : $email.hashCode());Object $sex = this.getSex();result = result * 59 + ($sex == null ? 43 : $sex.hashCode());return result;}public String toString() {return "User(id=" + this.getId() + ", name=" + this.getName() + ", age=" + this.getAge() + ", email=" + this.getEmail() + ", sex=" + this.getSex() + ")";}
}

添加mapper

让UserMapper继承BaseMapper,这样无需我们手动添加就有了单表增删改查的很多函数。

public interface UserMapper extends BaseMapper<User> {
}

查询测试

@SpringBootTest

public class MybatisPlusTest {

@Autowired

private UserMapper userMapper;

@Test

public void testSelectList(){

//selectList()根据MP内置的条件构造器查询一个list集合,null表示没有条件,即查询所有

userMapper.selectList(null).forEach(System.out::println);

}

}

测试结果

application.yml中配置日志输出

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

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

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

相关文章

W5300驱动说明

W5300是一款带有硬件协议栈的网络芯片&#xff0c;内部拥有128K的缓存&#xff0c;最大支持8路socket通信&#xff0c;与MCU之间通过16位数据总线通信&#xff0c;通信速度远超W5500之类以SPI作为通信接口的网络芯片&#xff0c;特别适合对高速网络传输有需求的应用。 本次使用…

thymeleaf 一个莫名其妙的错误提示 org.attoparser.ParseException

thymeleaf 一个莫名其妙的错误提示 介绍 开发过程中遇到一个莫名奇妙的错误&#xff0c;一时竟然不知道怎么解决&#xff0c;找官网也没有找到 问题 页面显示 错误日志 org.attoparser.ParseException: (Line 96, Column 5) Malformed markup: Attribute “}” appears m…

深入理解快速排序算法:从原理到实现

目录 1. 引言 2. 快速排序算法原理 3. 快速排序的时间复杂度分析 4. 快速排序的应用场景 5. 快速排序的优缺点分析 5.1 优点&#xff1a; 5.2 缺点&#xff1a; 6. Java、JavaScript 和 Python 实现快速排序算法 6.1 Java 实现&#xff1a; 6.2 JavaScript 实现&#…

如何在 Windows 上安装 ONLYOFFICE 文档 8.0

使用社区版&#xff0c;您可以在本地服务器上安装 ONLYOFFICE 文档&#xff0c;并将在线编辑器与 ONLYOFFICE 协作平台或其他热门系统集成在一起。 ONLYOFFICE 文档是什么 ONLYOFFICE 文档是一个功能强大的文档编辑器&#xff0c;支持处理文本文档、电子表格、演示文稿、可填写…

【计算机学习】-- 电脑的组装和外设

系列文章目录 文章目录 系列文章目录前言一、电脑的组装1.CPU2.主板3.显卡4.硬盘5.内存6.散热器7.电源8.机箱 二、电脑外设选用1.显示器2.鼠标3.键盘4.音响 总结 前言 一、电脑的组装 1.CPU 返回目录 认识CPU CPU&#xff0c;即中央处理器&#xff0c;负责电脑资源的调度安…

Kubernetes 学习总结(46)—— Pod 不停重启问题分析与解决

我们在做性能测试的时候&#xff0c;往往会发现我们的pod服务&#xff0c;频繁重启&#xff0c;通过kubectl get pods 命令&#xff0c;我们来逐步定位问题。 现象:running的pod&#xff0c;短时间内重启次数太多。 定位问题方法:查看pod日志 kubectl get event …

Golang pprof 分析程序的使用内存和执行时间

一、分析程序执行的内存情况 package mainimport ("os""runtime/pprof" )func main() {// ... 你的程序逻辑 ...// 将 HeapProfile 写入文件f, err : os.Create("heap.prof")if err ! nil {panic(err)}defer f.Close()pprof.WriteHeapProfile(f…

实在Agent智能体数字员工+Chat-IDP,烟草创新发展的新质生产力

2024开年伊始&#xff0c;中央高层发表重要讲话时明确就“发展新质生产力”提出新的要求&#xff0c;成为政策、市场等领域高频热词&#xff0c;以科技创新引领现代化产业体系建设&#xff0c;锚定培育人工智能等战略性新兴产业&#xff0c;为数字化增强发展新动能发挥更大作用…

HTTP/2、HTTP/3分别解决了什么问题

总的来说就是HTTP/1.1是请求-响应模型导致队头阻塞问题&#xff0c;HTTP2是TCP层面导致队头阻塞问题 HTTP/2 多路复用&#xff0c;解决了HTTP/1.1队头阻塞问题 HTTP/1.1 的实现是基于请求-响应模型的。同一个连接中&#xff0c;HTTP 完成一个事务&#xff08;请求与响应&…

Android车载开发之AAOS快速入门

一、概述 在正式介绍Android Automotive OS之前,我们先弄清两个概念:Android Auto和Android Automotive OS。 Android Auto Android Auto 不是操作系统,而是一个应用或一个服务。当 Android 手机通过无线或有线方式连接到汽车时,Android 系统会将使用 Android Auto 服务…

Vue3中使用ffmpeg.wasm进行转码

一、安装方法 1.1 使用yarn进行安装 yarn add ffmpeg/ffmpeg ffmpeg/core1.2 安装版本 注意安装版本需在0.12.0以上版本才可以使用下面代码&#xff08;目前更新到0.12.10&#xff09;&#xff0c;之前的版本代码使用方法有所不同&#xff08;0.12.10之后的版本也可能会有变动…

android内存优化总结

最近遇到视频播放的时候&#xff0c;内存居高不下的问题。没有崩溃&#xff0c;没有anr,功能一切正常。唯独内存一直攀升。 小总结下&#xff1a; 1.fragment 在activity全局变量被依赖&#xff0c;虽然调用fragment.onDestory了&#xff0c;但无法真正回收。 2.fragment 内部…