在 ActiveRecord 模式中,执行数据库的各种查询操作。
首先创建要查询的对象,并通过 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=英语老师)
创建要查询的对象,不在对象中设置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 语句,在控制台的输出中,可以看到是完全一样。
在使用ID查询记录时,而没有设置ID属性或者在查询方法中设置ID,程序在执行中将会报错。
报错信息如下:
com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: selectById primaryKey is null.
在使用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
使用 QueryWrapper 查询构造器设置筛选条件,对应的方法有:
控制台输出如下:
创建对象后不设置任何属性,即为全表查询。
实际执行的SQL语句如下
要实现分页功能,必须要先创建分页组件,并使用注解 @Configuration
和 @Bean
将该组件注册到 SpringBoot 中:
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 对象查询的过程相同:
第一次查询记录总数;
第二次查询指定分页条件的记录。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有