比如要封装一个对象,有的字段在数据库中,有的字段不在数据库中,比如sys_area表中 size并不在数据库中 ,只是前台需要这个属性,如果下面这样写是不是不能把area封装到对象中?另外如果拼接sql的时候 要根据条件拼接,比如name不为空的时候才拼接,下面这样用占位符意外还能有其他方式 ,感觉不优雅。。
public List<Area> listAreaByParentCode(String parentId) {
String name = null;
Sql sql = Sqls.create("SELECT a.id,a.areaCode,a.parentId,a.name,a.layer,a.orderNum,a.disabled,(SELECT count(*) FROM sys_area p where p.parentId=a.id) as size,a.remark FROM sys_area a $cnd1 $cnd2 $cnd3");
sql.setVar("cnd1", Cnd.where("a.parentId", "=", parentId));
if(!Strings.isBlank(name)){
sql.setVar("cnd2", Cnd.NEW().and("a.name", "like", "%"+name+"%"));
}
sql.setVar("cnd3", Cnd.NEW().orderBy("a.orderNum", "ASC"));
sql.setCallback(Sqls.callback.entities());
sql.setEntity(this.dao().getEntity(Area.class));
this.dao().execute(sql);
List<Area> list = sql.getList(Area.class);
return list;
}