Mybatis-Plus环境配置与入门案例分析
作者:扎哇太枣糕 发布时间:2022-02-05 01:15:01
1 初识Mybatis-Plus
MyBatis-Plus简称 MP,是一个 MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。MyBatis-Plus有很多的特点支持很多的标准数据库,具体等学到相关特性的时候再去详细了解。MyBatis-Plus的官方文档:https://baomidou.com/
关于MyBatis-Plus的框架结构,也就是框架的底层实现官方文档给出如下试图,简单总结来就是:扫描实体类,通过反射抽取实体类中的属性并分析其与表中字段之间的关系,最后调用MyBatis-Plus提供的一堆方法生成SQL语句注入到MyBatis的容器中,从而实现不同的增删改查功能
2 入门案例
前期环境准备
第一步: 创建数据库表并插入数据
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');
第二步: 使用Spring Initializr快速创建一个SpringBoot工程
删除选中的不必要文件以及文件夹
第三步: pom文件导入相关依赖
<!--mybatis-的场景启动器-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<!--lombok简化实体类开发,如果之前没有下载过依赖的同名插件的话需要下载安装,然后重启一下idea-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!--数据库连接驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
<scope>runtime</scope>
</dependency>
<!--整合druid的数据源-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.17</version>
</dependency>
第四步: 配置文件改后缀为.yml并配置数据源
spring:
# 数据源的各种配置
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/mybatis_plus
username: root
password: 123456
# Mybatis-Plus开启日志打印
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
各层代码编写
domain层实体类
/**
* @author : mereign
* @date : 2022/3/13 - 14:28
* @desc : user实体类
*/
// 在编译期间生成user类的全参构造方法
@AllArgsConstructor
// 在编译期间生成user类的无参构造方法
@NoArgsConstructor
// 在编译期间生成封装属性的setter、getter方法,并重写了toString和equals、hashCode方法
@Data
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
mapper层继承接口
/**
* @author : mereign
* @date : 2022/3/13 - 15:43
* @desc : 创建mapper接口继承BaseMapper接口并传user泛型
*/
// spring框架创建mapper接口相对应的接口实现类
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
测试类
/**
* @author : mereign
* @date : 2022/3/13 - 15:50
* @desc : 测试类简单测试mp的查询方法
*/
@SpringBootTest
public class MybatisPlusTest {
@Autowired
UserMapper mapper;
@Test
public void selectListTest() {
// 通过条件构造器查询到一个list集合,如果没有条件的话参数设置为null
List<User> users = mapper.selectList(null);
users.forEach(System.out::println);
}
}
入门案例查询结果
入门案例中的小知识点
⚠ 测试类中注入mapper组件的时候代码会报红,但是并不会影响最终的程序执行结果。原因是:@Mapper接口将该接口动态生成的代理类注入到IOC容器中起相应的作用,所以使用自动注入mapper的时候会报红在容器中找不到这个接口组件。解决方法:在mapper接口上加@Repository注解将类或接口标注为一个持久层组件。这样的话一个注解用来起作用,一个注解用来注入的时候找到接口组件防止报红 ⚠
生成的SQL语句中,表名为mapper接口传入的泛型首字母小写,表中字段名为泛型类的封装属性,如果需要修改实体类绑定的表名的话需要在实体类上使用@TableName注解
来源:https://blog.csdn.net/qq_59138417/article/details/123454703
猜你喜欢
- 活锁与死锁活锁活锁同样会发生在多个相互协作的线程间,当他们为了彼此间的响应而相互礼让,使得没有一个线程能够继续前进,那么就发生了活锁。同死锁
- Object是类层次结构的根,每个类都可以将Object作为超类。所有类都直接或者间接的继承自该类构造方法:public Object()回
- 学C#的原因其实挺简单的,因为一直对游戏挺感兴趣,查了下比较流行的游戏引擎Unity的主要开发语言是C#,所以就决定从C#入手,学学面向对象
- 前言Spring Boot集成Redis实现单机分布式锁针对单机分布式锁还是存在锁定续期、可重入的问题,本文将采用Spring Boot 集
- 一、前言尽管Unity有一个像样的脚本编辑器(Mono),但很多人喜欢使用另一个编辑器。这篇短文解释了如何更改脚本编辑器,并介绍了Mono的
- /*最小树形图图模版-朱刘算法模版说明:点标号必须0-(N-1) 必须去除到自身的点(到自身的边的边权赋无限大)*/
- 这篇文章主要介绍了设计模式在Spring框架中的应用汇总,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的
- 使用List.contains(Object object)方法判断ArrayList是否包含一个元素对象(针对于对象的属性值相同,但对象地
- 先来看看效果:测试一:原图:效果图:测试二:原图:效果图:代码部分:/** * */ package com.b510; import ja
- 当需要将一个对象输出到显示器时,通常要调用他的toString()方法,将对象的内容转换为字符串.java中的所有类默认都有一个toStri
- Spring AOP后置通知修改响应httpstatus1.定义Aspect/** * 响应体切面 * 后置通知修改httpstatus *
- 利用反射获取对象的所有属性及对应的值1、获取属性名数组private static String[] getFiledName(Object
- 在文件夹中,我们经常有类似s_1.txt、s_2.txt、s_10.txt、s_11.txt这样的命名方式,我们期望的排序方式是s_1.tx
- 目录前沿快速开始引入依赖定义接口配置类开始调用json序列化接口层面指定header:指定Encoder跟Decoder使用 * 注解详解@
- 本文实例讲述了java实现新浪微博Oauth接口发送图片和文字的方法。分享给大家供大家参考。具体如下:基于网上很多人利用新浪api开发新浪微
- IBATIS简介ibatis是 Apache的开源项目,一个ORM 解决方案,ibatis最大的特点就是小巧,上手很快。使用 ibatis提
- 本文实例为大家分享了Java界面编程实现界面跳转的具体代码,供大家参考,具体内容如下在事件处理中创建对象public void action
- 在java开发的实际场景中,我们经常要对时间进行格式化处理,但是每次获取开发中自己需要的格式都要重新写一个方法,这样的代码看起来是非常的笨重
- 在gitee上创建springcloud仓库 application.yaml(https方式)server: por
- 生产者和消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一个存储空间,如下图所示,生产者向空间里存放数据,而消费者取用数