条件构造与分页

笔记/Java/Java 持久层/MyBatis-Plus/条件构造与分页

前置:user 表 CRUD

WrapperPageDemo.java#

package demo.mp;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
public class WrapperPageDemo {
public static void main(String[] args) {
SqlSessionFactory factory = Mp.factory();
try (SqlSession session = factory.openSession(true)) {
UserMapper mapper = session.getMapper(UserMapper.class);
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<User>()
.eq(User::getStatus, 1)
.like(User::getUserName, "a")
.orderByAsc(User::getId);
System.out.println("status=1 and name like %a%:");
mapper.selectList(wrapper).forEach(System.out::println);
Page<User> page = mapper.selectPage(new Page<>(1, 1), wrapper);
System.out.println("page total=" + page.getTotal()
+ ", pages=" + page.getPages()
+ ", records=" + page.getRecords().size());
page.getRecords().forEach(System.out::println);
}
}
}

运行#

Terminal window
mvn -q exec:java -Dexec.mainClass=demo.mp.WrapperPageDemo

条件构造器(面试)#

类型特点
QueryWrapper列名字符串,易拼错
LambdaQueryWrapper方法引用,编译期检查(推荐)
UpdateWrapper / LambdaUpdateWrapper批量 set + where

示例更新:

mapper.update(null, new LambdaUpdateWrapper<User>()
.set(User::getEmail, "new@example.com")
.eq(User::getUserName, "alice"));

分页#

  • Page<>(current, size) 传入 selectPage
  • 需在 Mp.java 注册 PaginationInnerInterceptor(见 环境配置
  • MP 3.5.9+ 额外依赖 mybatis-plus-jsqlparser

Spring Boot 里常用 @Configuration 注册同一拦截器;本系列用纯 Java 与 JDBC/MyBatis 笔记一致。

对比 MyBatis 动态 SQL · 全自动 ORM 见 Hibernate

文章目录

文章目录