Mybatis-Plus使用条件构造器(QueryWrapper)进行条件查询的9个小例子
首先创建user表
CREATE TABLE user (
id BIGINT ( 20 ) PRIMARY KEY NOT NULL COMMENT '主键',
name VARCHAR ( 30 ) DEFAULT NULL COMMENT '姓名',
age INT ( 11 ) DEFAULT NULL COMMENT '年龄',
email VARCHAR ( 50 ) DEFAULT NULL COMMENT '邮箱',
manager_id BIGINT ( 20 ) DEFAULT NULL COMMENT '直属上级id',
create_time DATETIME DEFAULT NULL COMMENT '创建时间',
CONSTRAINT manager_fk FOREIGN KEY ( manager_id ) REFERENCES USER ( id )
) ENGINE = INNODB CHARSET = UTF8;
插入几条数据
INSERT INTO `user` ( id, name, age, email, manager_id, create_time )
VALUES
( 1087982257332887553, '大boss', 40, 'boss@baomidou.com', NULL, '2019-01-11 14:20:20' ),
( 1088248166370832385, '王天风', 25, 'wtf@baomidou.com', 1087982257332887553, '2019-02-05 11:12:22' ),
( 1088250446457389058, '李艺伟', 28, 'lyw@baomidou.com', 1088248166370832385, '2019-02-14 08:31:16' ),
( 1094590409767661570, '张雨琪', 31, 'zjq@baomidou.com', 1088248166370832385, '2019-01-14 09:15:15' ),
( 1094592041087729666, '刘红雨', 31, 'lhm@baomidou.com', 1088248166370832385, '2019-01-14 09:48:16' );
名字中包含“雨”并且年龄小于40
name like '%雨%' and age<40
@Test
public void selectByWrapper1() {
QueryWrapper queryWrapper = new QueryWrapper<>();
// lt为小于的意思
queryWrapper.like("name", "雨").lt("age", 40);
List users = userMapper.selectList(queryWrapper);
users.forEach(System.out::println);
}
日志输出sql:
DEBUG==> Preparing: SELECT id,name,age,email,manager_id,create_time FROM user WHERE name LIKE ? AND age < ?
DEBUG==> Parameters: %雨%(String), 40(Integer)
TRACE<== Columns: id, name, age, email, manager_id, create_time
TRACE<== Row: 1094590409767661570, 张雨琪, 31, zjq@baomidou.com, 1088248166370832385, 2019-01-14 09:15:15
TRACE<== Row: 109459204108772966