DbrestWrapper关联查询后添加其他字段关联的条件
场景描述
通过模型访问数据的java SDK做关联查询后再添加where条件
实现思路
通过DbrestWrapper提供的条件操作符拼接
具体实现
普通的where条件直接选择需要的条件操作符拼接即可,如果需要的条件还是两个关联表中的字段值比较条件操作符的API中参数需要特殊写法,具体如下
1.普通的where条件
成绩表和课程表关联后查成绩大于80的数据
DbrestWrapper<?> csListWrapper = (DbrestWrapper<?>) new DbrestWrapper(ContextUtil.getServiceName(),"main","score");
csListWrapper.select("A.fid as fid","A.sid as sid","A.score as score","B.className as className","B.teacher as teacher");
csListWrapper.setMainTableAlias("A");
csListWrapper.leftJoin("course").alias("B").on("cid.eq.fid");
csListWrapper.gt("A.score", 80);
List<Classscore> csList = DbrestUtil.selectAll(csListWrapper,Classscore.class);
对应的sql语句:
SELECT A.fid as fid,A.sid as sid,A.score as score,B.className as className,B.teacher as teacher FROM main_score AS A left join main_course AS B ON A.cid=B.fid WHERE (A.score>?)
2.两个关联表中的字段值比较的where条件
成绩表和课程表关联后在根据两个表中的classid字段中相等过滤数据
DbrestWrapper<?> csListWrapper = (DbrestWrapper<?>) new DbrestWrapper(ContextUtil.getServiceName(),"main","score");
csListWrapper.select("A.fid as fid","A.sid as sid","A.score as score","B.className as className","B.teacher as teacher");
csListWrapper.setMainTableAlias("A");
csListWrapper.leftJoin("course").alias("B").on("cid.eq.fid");
csListWrapper.eq("A.classid", "field:b.classid");
List<Classscore> csList = DbrestUtil.selectAll(csListWrapper,Classscore.class);
对应的sql语句:
SELECT A.fid as fid,A.sid as sid,A.score as score,B.className as className,B.teacher as teacher FROM main_score AS A left join main_course AS B ON A.cid=B.fid WHERE (A.classid=b.classid)