前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot 集成 MybatisPlus 七——ActiveRecord 查询

SpringBoot 集成 MybatisPlus 七——ActiveRecord 查询

原创
作者头像
用户8100582
发布2023-11-06 20:42:21
2020
发布2023-11-06 20:42:21
举报
文章被收录于专栏:Java多线程Java多线程

1 根据ID查询

在 ActiveRecord 模式中,执行数据库的各种查询操作。

1.1 在对象中设置ID

首先创建要查询的对象,并通过 set() 方法设置要查询的记录ID。

在控制台输出的SQL语句如下:

==> Preparing: SELECT id,username,gendar,remark FROM user WHERE id=?

==> Parameters: 12(Integer)

<== Columns: id, username, gendar, remark

<== Row: 12, 赵四, 女, 英语老师

<== Total: 1

Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@249e0271]

User(id=12, username=赵四, gendar=女, remark=英语老师)

1.2 在查询参数中设置ID

创建要查询的对象,不在对象中设置ID属性,在调用 selectById() 方法时,将要查询的 ID 作为参数传入到方法中。

在控制台输出的SQL语句如下:

==> Preparing: SELECT id,username,gendar,remark FROM user WHERE id=?

==> Parameters: 12(Integer)

<== Columns: id, username, gendar, remark

<== Row: 12, 赵四, 女, 英语老师

<== Total: 1

Closing non transactional SqlSession [org.apache.ibatis.session.defaults DefaultSqlSession@78525ef9]

User(id=12, username=赵四, gendar=女, remark=英语老师)

对于前两种查询方式,虽然在程序中的书写方式不太一样,但是对于 MybatisPlus 中执行的 SQL 语句,在控制台的输出中,可以看到是完全一样。

1.3 异常情况

1.3.1 未设置ID信息

在使用ID查询记录时,而没有设置ID属性或者在查询方法中设置ID,程序在执行中将会报错。

报错信息如下:

com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: selectById primaryKey is null.

1.3.2 重复设置ID

在使用ID查询记录时,既在创建的对象中设置了ID,又在 selectById() 方法中也指定了ID,并且两个ID不相同。

此时,程序会优先使用 selectById() 方法中指定的 ID 进行查询。

==> Preparing: SELECT id,username,gendar,remark FROM user WHERE id=?

==> Parameters: 25(Integer)

<== Total: 0

Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@78525ef9]

null

2 根据筛选条件查询记录

使用 QueryWrapper 查询构造器设置筛选条件,对应的方法有:

  • selectOne() 根据筛选条件得到结果集后,取出其中第一条记录;
  • selectList() 根据筛选条件得到结果集后,取出所有记录。

控制台输出如下:

3 查询全部记录

创建对象后不设置任何属性,即为全表查询。

实际执行的SQL语句如下

4 分页查询

要实现分页功能,必须要先创建分页组件,并使用注解 @Configuration@Bean 将该组件注册到 SpringBoot 中:

代码语言:java
复制
import com.baomidou.mybatisplus.annotation.DbType;
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 ConfigureUtil {

    //配置分页插件
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}

创建分页对象,并指定当前页,每页记录条数;

创建 QueryWrapper 查询构造器,设置筛选条件。

执行SQL过程如下,可以看到先后进行了两次查询,与使用 Mapper 对象查询的过程相同:

第一次查询记录总数;

第二次查询指定分页条件的记录。

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 根据ID查询
    • 1.1 在对象中设置ID
      • 1.2 在查询参数中设置ID
        • 1.3 异常情况
          • 1.3.1 未设置ID信息
          • 1.3.2 重复设置ID
      • 2 根据筛选条件查询记录
      • 3 查询全部记录
      • 4 分页查询
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档