LambdaQueryWrapper、MybatisPlus提供的基本接口方法、增删改查常用的接口方法、自定义 SQL

发布于:2025-05-26 ⋅ 阅读:(176) ⋅ 点赞:(0)

DAY26.2 Java核心基础

MybatisPlus提供的基本接口方法

分页查询

导入依赖springboot整合Mybatis-plus

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.3</version>
</dependency>

创建Page对象,通过usermapper里面的selectPage查询

@Test
public void test4(){
    Page<User> userPage = userMapper.selectPage(new Page<>(0, 10), null);
    System.out.println(userPage.getRecords());
    System.out.println(userPage.getCurrent());
    System.out.println(userPage.getPages());
    System.out.println(userPage.getSize());
}

测试输出:

image-20250523201508554

可以看见它并没有分页查询,而是把表中所有的数据查询出来了

为什么呢?

因为我们没有配置分页配置类

MybatisPlusConfig配置分页

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;

@Configuration
public class MybatisPlusConfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        // 添加分页插件
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return interceptor;
    }
}

我们再次查询

image-20250523201712842

可以看见实现了分页查询,只查询了10个数据

增删改查常用的接口方法

查询

@Test
public void test6(){
    // 查询所有
    LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
    queryWrapper.eq(User::getId,  1);
    List<User> users1 = userMapper.selectList(queryWrapper);
    System.out.println(users1);
    // 批量查询
    List<User> users2 = userMapper.selectBatchIds(Arrays.asList(1, 2, 3));
    System.out.println(users2);
    // 查询数量
    System.out.println(userMapper.selectCount(null));
    HashMap<String, Object> stringObjectHashMap = new HashMap<>();
    stringObjectHashMap.put("id", 1);
    System.out.println(userMapper.selectByMap(stringObjectHashMap));
    // 查询单个数据
    User user = userMapper.selectOne(queryWrapper);
}

增加

@Test
public void test7(){
    User user = new User();
    user.setName("张三");
    user.setRole("admin");
    user.setAge(18);
    user.setEmail("111@qq.com");
    user.setPwd("123456");
    int insert = userMapper.insert(user);
    System.out.println(insert);
}

更新

@Test
public void test8() {
    //修改
    User user = new User();
    user.setId(1);
    user.setName("张三");
    user.setRole("admin");
    user.setAge(18);
    user.setEmail("111@qq.com");
    user.setPwd("123456");
    // 根据id更新
    int update = userMapper.updateById(user);
    System.out.println(update);
    // 根据条件更新(wrapper)
    LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
    queryWrapper.eq(User::getName, "张三");
    System.out.println(userMapper.update(user, queryWrapper));
}

删除

@Test
public void test9() {
    // 根据id删除
    int delete = userMapper.deleteById(1);
    System.out.println(delete);
    // 根据条件删除(wrapper)
    LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
    queryWrapper.eq(User::getName, "张三");
    int delete1 = userMapper.delete(queryWrapper);
    // 批量删除
    userMapper.deleteBatchIds(Arrays.asList(1, 2, 3));
    // 根据map键值对删除
    HashMap<String, Object> stringObjectHashMap = new HashMap<>();
    stringObjectHashMap.put("id", 1);
    stringObjectHashMap.put("name", "张三");
    userMapper.deleteByMap(stringObjectHashMap);
}

自定义 SQL

UserMapper

public interface UserMapper extends BaseMapper<User> {
    @Select("select * from user where name = #{name}")
    User queryByName(String name);
}
@Test
public void test10() {
    User user = userMapper.queryByName("张三");
    System.out.println(user);
}

微信公众号

今日签到

点亮在社区的每一天
去签到