前置: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); } }}运行
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。