1.Mybatis-Plus自带分页

IPage<Product> page=new Page<>();
        page.setCurrent(current);
        page.setSize(size);

PageBean pageBean = new PageBean();
IPage<Product> productIPage = productMapper.selectPage(page, queryWrapper);
pageBean.setTotal((int)productIPage.getTotal());
pageBean.setCurrent((int)productIPage.getCurrent());
pageBean.setSize((int)productIPage.getSize());       
pageBean.setRecords(productIPage.getRecords());

2.QueryWrapper多条件查询

 //模糊查询
 if (StringUtils.isNotBlank(queryName)){
       queryWrapper.lambda().like(Product::getProductName, queryName);
 }
if (StringUtils.isNotBlank(querySpecification)){
       queryWrapper.lambda().like(Product::getSpecification, querySpecification);
}
 //精确查询
if (StringUtils.isNotBlank(queryVcpus)){
        queryWrapper.lambda().eq(Product::getVcpus, queryVcpus);
}
if (StringUtils.isNotBlank(queryDisk)){
        queryWrapper.lambda().eq(Product::getDisk, queryDisk);
}
//时间范围查询
c.apply(StringUtils.isNotBlank(queryStartTime),
"date_format (time,'%Y-%m-%d') >= date_format('" + queryStartTime + "','%Y-%m-%d')")
.apply(StringUtils.isNotBlank(queryEndTime),
"date_format (time,'%Y-%m-%d') <= date_format('" + queryEndTime + "','%Y-%m-%d')");
//按时间降序排列
queryWrapper.select().orderByDesc("time");

productMapper.selectList(queryWrapper);

apply是拼接sql语句,一般用于把格式一样的当前时间和结束时间进行比较筛选

date_format (time,’%Y-%m-%d’)是将时间日期格式化,格式化时间戳为日期格式 如,’%Y-%m-%d’类型

time就是数据库时间字段的值

其本质上就是一条sql语句,applysql

queryWrapper本质上是一条sql语句,所以还需要selectList()来执行.

eq 等于=

ne 不等于<>

gt 大于>

ge 大于等于>=

lt 小于<

le 小于等于<=

like 模糊查询

3.单条件查询

不需要加lambda

queryWrapper.eq("product_name", productName);

product_name 是数据库字段

productName是where的条件,相当于product_name=#{productName}

4.lambda表达式的快速引用

Lambda方法引用:

    方法引用就是Lambda的快捷写法。目标引用放在分隔符::前面,方法的名称放在后面。

Lambda表达式 < = > 等效的方法引用
(Apple a)-> a.getWeight() < = > Apple::getWeight
() -> Thread.currentThread().dumpStack() < = > Thread.currentThread()::dumpStack
(str, i) -> str.substring(i) < = > String::substring
(String s) -> System.out.println(s) < = > System.out::println

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐