栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

(五): 复杂查询(面向对象方式)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

(五): 复杂查询(面向对象方式)

用 Bee+SpringBoot+Spring Cloud开发微服务,开发效率更高!

Bee简单易用:单表操作、多表关联操作,可以不用写sql,极少语句就可以完成SQL操作;10分钟即可学会使用。
Bee功能强大:复杂查询也支持向对象方式,分页查询性能更高,一级缓存即可支持个性化优化。高级需求,还可以方便自定义SQL语句。

1. 为什么需要复杂查询

Suid接口的Select,Update,Insert,Delete方法,默认情况只能处理字段为 = 或 is null 的情况。那模糊查询、范围查询等复杂的场景呢?

Bee支持范围查询;支持同时使用between范围查询、not between、like 模糊查询、in、>、>=、<、<=、分组、having过滤、排序、分页等复杂查询。常用的SQL操作符定义在枚举类Op(OperationType)中。

这些方法封装在Condition接口里。利用这个接口可以写些复杂的查询,满足特殊的要求。

对于更新的情况,Condition接口还提供了setAdd,setMultiply方法,满足这种变更字段值的要求,如某种商品的价格比原来价格提高2元,某种商品提价5%。

setAdd("price","2.0")--> price=price+2.0

setMultiply("price","1.05")--> price=price*1.05

V1.6 SuidRich增加面向对象方式复杂查询支持.
SuidRich接口增加方法:

public  List select(T entity,IncludeType includeType,Condition condition);
public  String selectJson(T entity,IncludeType includeType,Condition condition)

V1.7.2增加:

public  int updateBy(T entity,String whereFields,Condition condition);
public  int update(T entity,String updateFields,Condition condition);

Suid接口增加方法:

public  List select(T entity,Condition condition);
public  int delete(T entity,Condition condition);

另外多表查询也支持利用Condition构造复杂的查询条件。这个会在以后的文章里讲解。

2.复杂查询具体使用例子
Suid suid = BeeFactory.getHoneyFactory().getSuid();
    Orders orders = new Orders();

    orders.setName("Bee(ORM framework)"); //等于的条件,会默认转换
    orders.setTotal(new BigDecimal("100"));  //不会再处理.因为between已有用

     Condition condition=new ConditionImpl();
     condition
     .op("userid", Op.like, "bee%") //模糊查询
     .between("total", 90, 100)     //total字段的范围查询
     .between("createtime","2020-03-01","2020-03-03")
     .orderBy("userid",OrderType.ASC) //排序
     .start(0).size(10)              //分页
     ;
     
    List list2 = suid.select(orders, condition);
    for (int i = 0; i < list2.size(); i++) {
      Logger.info(list2.get(i).toString());
    }
[Bee] select SQL:

selectid,userid,name,total,createtime,remark,sequence,abc,updatetime from orderswhere name=? and userid like ? and total between ? and ? and createtime between? and ? order by userid asc limit 0,10   [values]: Bee(ORMframework),bee%,90,100,2020-03-01,2020-03-03

Orders[id=100001,userid=bee,name=Bee(ORMframework),total=95.01,createtime=2020-03-0211:29:28.0,remark=test,sequence=12345601,abc=test1,updatetime=2020-03-0216:34:19.0]
Orders[id=100002,userid=bee,name=Bee(ORMframework),total=96.01,createtime=2020-03-0211:29:28.0,remark=test,sequence=12345602,abc=test2,updatetime=2020-03-0216:34:19.0]
Orders[id=100003,userid=bee,name=Bee(ORMframework),total=97.01,createtime=2020-03-0
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/345372.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号