0
点赞
收藏
分享

微信扫一扫

mybaits-plus 数据库基础查询练习


文章题目内容来自某网站老猿

  1. 查找名字中包含 “王” 并且年龄小于25
    SQL :

select * frome user where name like "%王%" and age < 25;

mybatis-plus:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.like("name","王").lt("age",40);
List<User> list = userMapper.selectList(queryWrapper);
list.forEach(System.out::println);

  1. 查找名字中包含"王",年龄大于10小于40并且年龄不为空
    SQL :

select * from user where name like "%王%" and age between 10 and 40 and email is not null

mybatis-plus:

queryWrapper.like("name","王").between("age",10,40).isNotNull("email");

  1. 查找姓王的用户或者年龄大于等于30的用户,按照年龄降序排列,年龄相同按照年龄升序排列
    SQL:

select * from user where name like "王%" or age >= 30 order by age desc,id asc

mybatis-plus:

queryWrapper.likeRight("name","王").or().ge("age",30).orderByDesc("age").orderByAsc("id");

  1. 查询上级姓王并且创建日期为2021年1月27日的用户
    SQL:

select * from user where date_format(create_time,'%Y-%m-%d')="2021-01-27" and manager_id int (select id from user where name like "王%" )

mybatis-plus:

queryWrapper.apply("date_format(create_time,'%Y-%m-%d')={0}","2021-01-27").inSql("manager_id","select id from user where name like '王%'");

注意:日期格式的月份应该是 01 而不是1

  1. 查询名字姓王且年龄小于30或者邮箱不为空的用户
    SQL:

select * from user where name like "王%" and (age < 30 or email is not null)

myabtis-plus:

.likeRight("name","王").and(wq->wq.lt("age",30).or().isNotNull("email"))

  1. 查询姓王且年龄小于40大于20的用户
    SQL:

select * from user where name like '王%' and age < 40 and age > 20 and email is not null

queryWrapper.likeRight("name","王").or(wq->wq.lt("age",40).gt("age",20).isNotNull("email"));

  1. 查询年龄小于40或者邮箱不为空且姓王的用户
    SQL:

select * from user where (age < 40 or email is not null) and name like '王%'

上面的SQL语句中括号不能去掉,and的优先级高于or

Mybatis-plus:

queryWrapper.nested(qw->qw.lt("age",40).or().isNotNull("email")).likeRight("name","王");

  1. 查询年龄为30,31,32,35的用户
    SQL:

select * from user where age in (30,31,32,35)

myabtis-plus:

queryWrapper.in("age",Arrays.asList(30,31,32,35));

  1. 只返回符合上述条件的其中一条语句

queryWrapper.nested(qw->qw.lt("age",40).or().isNotNull("email")).likeRight("name","王").last("limit 1");

注意有SQL注入的风险


举报

相关推荐

0 条评论