(四): ORM Bee分页、查询部分字段原来如此简单

205 篇文章 0 订阅
本文介绍了Bee框架如何通过SuidRich和PreparedSql接口简化分页操作,无论是基本查询还是复杂条件过滤,都展示了其强大的功能和性能优势。同时,Bee提供便捷的方法来仅查询所需字段,减少资源消耗。
摘要由CSDN通过智能技术生成

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

1. 分页原来如此简单

1.1 单表查询的分页

SuidRich接口提供方法:

public List select(T entity,intstart,intsize);

最终语句会转化为原生的分页语句,执行效率更高。

具体实例(DB以mysql数据库为例).

  public static void main(String[] args) {
    SuidRich suidRich=BeeFactory.getHoneyFactory().getSuidRich();
    
    Orders orders1 = new Orders();
    List<Orders> list1 = suidRich.select(orders1,0,2); //分页,查询前两条记录
//    List<Orders> list1 = suidRich.select(orders1,"id,userid,name",0,2); //分页,查询前两条记录且只查询部分字段
    for (int i = 0; i < list1.size(); i++) {
      Logger.info(list1.get(i).toString());
    }
  }
2020-05-04 11:35:06 INFO [Bee]select(entity,start,size) SQL:

selectid,userid,name,total,createtime,remark,sequence,abc,updatetime from orders limit 0,2

2020-05-04 11:35:06 INFOOrders[id=100001,userid=bee,name=Bee(ORM Framework),total=100.00,createtime=null,remark=new2,sequence=,abc=null,updatetime=2020-05-0408:50:46.0]
2020-05-04 11:35:06 INFOOrders[id=100002,userid=bee,name=null,total=100.00,createtime=null,remark=new2,sequence=,abc=null,updatetime=2020-04-2222:00:12.0]

1.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<Orders> 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-0211:29:28.0,remark=test,sequence=12345603,abc=test3,updatetime=2020-03-02 16:34:19.0]

1.3 自定义语句的分页

在PreparedSql接口中,提供的以下方法,都有分页功能,最终都是转化为原生的SQL分页语句。Bee的分页功能,使用简单,分页查询性能更高。

   public<T> List<T> select(String sql,T returnType,ObjectpreValues[],intstart,intsize);
   public <T> List<T> select(String sqlStr,T entity,Map<String,Object> parameterMap,intstart,intsize);
   public List<String[]>select(String sql,ObjectpreValues[],intstart,intsize);
   public List<String[]>select(String sqlStr,Map<String,Object>map,intstart,intsize);
   public <T> List<T>selectSomeField(String sql,T returnType,Object preValues[],intstart,intsize);
   public <T> List<T>selectSomeField(String sqlStr,T entity,Map<String,Object>parameterMap,intstart,intsize);
   public StringselectJson(String sql,ObjectpreValues[],intstart,intsize);
   public StringselectJson(String sqlStr,Map<String,Object>map,intstart,intsize);

2. 只查询需要的字段,不查多余字段

只查询需要的字段,不查多余字段,Bee提供了简单易用的API。

2.1 利用SuidRich接口查询部分字段

SuidRich接口中,提供了以下三个方法,可以通过参数selectFields指定需要查询的字段(多个用逗号隔开)。

public <T>List<T> select(T entity,String selectFields);
public <T> List<T>select(T entity,String selectFields,intstart,intsize);
public <T>List<String[]> selectString(T entity,String selectFields);

使用实例:

//    List<Orders> list1 = suidRich.select(orders1,0,2); //分页,查询前两条记录
    
    //分页,查询前两条记录且只查询部分字段
    List<Orders> list1 = suidRich.select(orders1,"id,userid,name",0,2); 

得到的sql语句:

select id, userid, name from orders limit 0,2

可以看出,只返回了我们需要的字段。需要注意的是,用一个Javabean模型接收数据时,没返回的数据是null的。用List<String[]> selectString(T entity,String selectFields)则不会有这种情况,它只会将返回的字段转成字符串。

2.2 利用PreparedSql接口查询部分字段

在PreparedSql接口中,提供的以下方法,都有分页功能,且可以只查询部分字段。

public <T>List<T> selectSomeField(String sql,T returnType,Object preValues[],intstart,int size);
public <T> List<T> selectSomeField(String sqlStr,Tentity,Map<String,Object> paramete
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值