学习目标
能够基于MyBatisPlus完成标准Dao开发
能够掌握MyBatisPlus的条件查询
能够掌握MyBatisPlus的字段映射与表名映射
能够掌握id生成策略控制
能够理解代码生成器的相关配置
一、MyBatisPlus简介
MyBatisPlus(简称MP)是基于MyBatis框架基础上开发的增强型工具,旨在简化开发、提高效率
开发方式
基于MyBatis使用MyBatisPlus
基于Spring使用MyBatisPlus
基于SpringBoot使用MyBatisPlus
1. 入门案例
①:创建新模块,选择Spring初始化,并配置模块相关基础信息
②:选择当前模块需要使用的技术集(仅保留JDBC)
③:手动添加MyBatisPlus起步依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!--添加mybatisplus的依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.16</version>
</dependency>
注意事项1:由于mp并未被收录到idea的系统内置配置,无法直接选择加入
注意事项2:如果使用Druid数据源,需要导入对应坐标
④:制作实体类与表结构
(类名与表名对应,属性名与字段名对应)
新建一个数据库mybatisplyus
⑤:设置Jdbc参数(application.yml)
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mybatisplus?serverTimezone=UTC
username: root
password: 123456
⑥:定义数据接口,继承BaseMapper
//使用mp,dao的写法,只需要继承一个父亲接口就可以BaseMapper,还要注意加上泛型
@Mapper
public interface UserDao extends BaseMapper<User> {
}
⑦:测试类中注入dao接口,测试功能
@SpringBootTest
public class TestUserDao {
@Autowired
private UserDao userDao;
//查询所有
@Test
void testFindAll() {
List<User> list = userDao.selectList(null);
System.out.println("list=" +list);
}}
2. MyBatisPlus概述
问题导入
通过入门案例制作,MyBatisPlus的优点有哪些?
2.1 MyBatis介绍
MyBatisPlus(简称MP)是基于MyBatis框架基础上开发的增强型工具,旨在简化开发、提高效率
官网:https://mybatis.plus/ https://mp.baomidou.com/
2.2 MyBatisPlus特性
无侵入:只做增强不做改变,不会对现有工程产生影响
强大的 CRUD 操作:内置通用 Mapper,少量配置即可实现单表CRUD 操作
支持 Lambda:编写查询条件无需担心字段写错
支持主键自动生成
内置分页插件
……
二、标准数据层开发
1. MyBatisPlus的CRUD操作
下面用MP进行CURD
1.1添加
// 新增
@Test
void testAdd() {
User user = new User();
user.setName("黑马程序员");
user.setPassword("itheima");
user.setAge(12);
user.setTel("4006184000");
int row = userDao.insert(user);
System.out.println("row = " + row);
}
1.2 删除
这里面因为刚才不小心多增加一个相同内容 所以这里面删除的话id就用雪花
//删除
@Test
void testDelete() {
// int row = userDao.deleteById(3);
int row = userDao.deleteById(1631599267871215618L);
System.out.println("row = " + row);
}
我们现在把另一个也删除了
1.3 修改
//修改
@Test
void testUpdate() {
//1.先查询数据
User user = userDao.selectById(2);
user.setPassword("777");
//2.修改
int row = userDao.updateById(user);
System.out.println("row = " + row);
}
1.4 查询单个
//查询单个
@Test
void testFindById() {
User user = userDao.selectById(2);
System.out.println("user = " + user);
}