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