一、四个基本的查询操作
@Test
void testSelectById(){
//1.单个查询
User user = userMapper.selectById(1503215752373608464L);
System.out.println(user);
//2.批量查询
List<User> userList = userMapper.selectBatchIds(Arrays.asList(1503215752373608464L,2L));
userList.forEach(System.out::println);
//3.查询数据库中的总数居,传入值为 null
Integer integer = userMapper.selectCount(null);
System.out.println(integer);
//函数式编程 lambda 表达式
//userList.forEach(x->{
// // System.out.println(x);
// //});
}
@Test
//4.条件查询 map形式,key 值为 字段值, value 值为要查询的具体值
void testSeletcByMap(){
Map<String, Object> map = new HashMap<>();
map.put("name","Tom");
List<User> userList = userMapper.selectByMap(map);
userList.forEach(System.out::println);
}
二、分页查询
- 分页在网站中经常用到,常用的有:
- 原始的limit 分页
- pageHelper第三方插件
- MP内置分页插件
MyBatis-Plus如何使用分页操作:
- 1.配置分页插件
@Bean
public PaginationInterceptor mypaginationInterceptor() {
return new PaginationInterceptor();
}
- 2.直接使用page对象进行查询
//测试分页查询
@Test
void testSelectPage() {
//参数一 : 当前页
//参数二 : 页面大小
Page<User> page = new Page<>(1,5);
IPage<User> userIPage = userMapper.selectPage(page,null);
//输出
page.getRecords().forEach(System.out::println);
System.out.println(page.getTotal());
}
三、删除操作
1. 基本的删除操作
//测试删除
@Test
void testDelete(){
//删除单条记录
int i = userMapper.deleteById(1L);
if (i == 1){
System.out.println("删除成功");
}else {
System.out.println("删除失败,该值不存在。");
}
//批量删除
int i1 = userMapper.deleteBatchIds(Arrays.asList(2L, 3L));
Map<String, Object> map = new HashMap();
map.put("name","66666");
int i2 = userMapper.deleteByMap(map);
}
2. 逻辑删除
逻辑删除:在数据库中没有删除,而是通过一个变量让他失效,delete = 0 -> delete = 1
物理删除: 直接从数据库中删除
管理员可以查看被删除的数据,防止数据丢失! 类似于回收站。
- (1)在数据库中增加字段 deleted,默认值为0 。
- (2) 增加实体类属性
//逻辑删除
@TableLogic
private int deleted;
- (3)插件配置
mybatis-plus:
global-config: #逻辑删除配置
db-config:
logic-delete-field: false # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)
logic-delete-value: 1 # 逻辑已删除值(默认为 1)
logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
- (4) 测试逻辑删除
//测试逻辑删除
@Test
void testDeleteByLogical(){
int i = userMapper.deleteById(1503215752373608465L);
//查询不到数据了
User user = userMapper.selectById(1503215752373608465L);
System.out.println(user);
}
问题:如果出现逻辑删除不生效情况,则需要进行如下配置:
@Configuration
public class MybatisPlusConfig {
// 逻辑删除注入 3.0.5
@Bean
public ISqlInjector sqlInjector() {
return new LogicSqlInjector();
}
}