【黑马程序员2022新版SSM框架教程_Spring+SpringMVC+Maven高级+SpringBoot+MyBatisPlus企业实用开发技术】
重点学习的是数据层标准的CRUD(增删改查)的实现与分页功能。
【新增的方法】
int insert (T t)
【编写测试类】
//测试新增
@Test
void testSave(){
User user = new User();
user.setName("dingjiaxiong");
user.setPassword("200039");
user.setAge(22);
user.setTel("18888888888");
userDao.insert(user);
}
运行测试,查看数据库
主键的问题,看到后面
【删除的方法】
int deleteById (Serializable id)
Serializable:参数类型
【参数类型为什么是个序列化类】
可以看到:
【编写测试】
//测试删除
@Test
void testDelete(){
userDao.deleteById(1573294676480020482L);
}
运行测试,查看数据库
【修改的方法】
int updateById(T t);
【测试修改】
//测试修改
@Test
void testUpdate(){
User user = new User();
user.setId(1L);
user.setName("Tom888");
user.setPassword("tom888");
userDao.updateById(user);
}
运行测试,查看数据库
说明:修改的时候,只修改实体对象中有值的字段
【根据ID 查询的方法】
T selectById (Serializable id)
【测试按照ID 查询】
//按ID查询
@Test
void testGetById(){
User user = userDao.selectById(2L);
System.out.println(user);
}
运行测试方法
【查询所有的方法】
List<T> selectList(Wrapper<T> queryWrapper)
【测试查询所有】
//查询所有
@Test
void testGetAll(){
List<User> userList = userDao.selectList(null);
System.out.println(userList);
}
运行测试方法
现在的实体类中的东西:
如何简化?
【概念】
Lombok,一个Java类库,提供了一组注解,简化POJO实体类开发。
【使用步骤】
① 添加lombok依赖
<dependency>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
dependency>
注意:版本可以不用写,因为SpringBoot中已经管理了lombok的版本。
② 安装Lombok 插件
③ 模型类上添加注解
Lombok常见的注解有:
当然不止这些
package com.dingjiaxiong.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* ClassName: User
* date: 2022/9/23 20:40
*
* @author DingJiaxiong
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private Long id;
private String name;
private String password;
private Integer age;
private String tel;
}
如果想要一个两个参数的构造方法,也可以自己加,这种方式是被允许的
【分页查询使用的方法】
IPage<T> selectPage(IPage<T> page, Wrapper<T> queryWrapper)
IPage是一个接口,需要找到它的实现类来构建它,具体的实现类,可以进入到IPage类中按ctrl+h,会找到其有一个实现类为Page。
【使用步骤】
① 调用方法传入参数获取返回值
//分页查询
@Test
void testSelectPage(){
//1 创建IPage分页对象,设置分页参数,1为当前页码,3为每页显示的记录数
IPage<User> page = new Page<>(1,3);
//执行分页查询
userDao.selectPage(page,null);
//获取分页结果
System.out.println("当前页码值:"+page.getCurrent());
System.out.println("每页显示数:"+page.getSize());
System.out.println("一共多少页:"+page.getPages());
System.out.println("一共多少条数据:"+page.getTotal());
System.out.println("数据:"+page.getRecords());
}
② 设置分页拦截器
拦截器MP已经提供好了,只需要将其配置成Spring管理的bean对象即可。
package com.dingjiaxiong.config;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* ClassName: MybatisPlusConfig
* date: 2022/9/23 21:18
*
* @author DingJiaxiong
*/
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
//1 创建MybatisPlusInterceptor拦截器对象
MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
//2 添加分页拦截器
mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return mybatisPlusInterceptor;
}
}
MP官方文档https://baomidou.com/pages/2976a3/#spring-boot
③ 运行测试方法
如果想查看MP执行的SQL 语句,可以修改application.yml配置文件
mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
打开日志后,就可以在控制台打印出对应的SQL语句
开启日志功能性能就会受到影响