查询语句需求说明:先根据选择的统一编号将表中的数据过滤;然后在剩下的数据中,与三个字段进行模糊匹配,满足其中任意一个就行。
具体使用如下:
第一步:先声明对象
JBXXDao jbxxDao = mapActivity.getSession().getJBXXDao();
第二步:
a.先要有个整体的where查询语句
jbxxDao.queryBuilder().where( 对应条件 )
b.在有“与”关系(根据统一编号数据过滤与数据模糊匹配)
jbxxDao.queryBuilder().and(根据统一编号数据过滤,数据模糊匹配)
根据统一编号数据过滤:JBXXDao.Properties.统一编号.like(map.get(data.getCity()) + "%")
三个条件的模糊匹配(存在“或”关系):jbxxDao.queryBuilder() .or(条件一,条件二,条件三,...)
模糊匹配语句:JBXXDao.Properties.统一编号.like("%" + keywords + "%")
整体查询语句如下:
List<JBXX> jbxxes = jbxxDao.queryBuilder().where(jbxxDao.queryBuilder()
.and(JBXXDao.Properties.统一编号.like(map.get(data.getCity()) + "%"),
jbxxDao.queryBuilder().or(JBXXDao.Properties.统一编号.like("%" + keywords + "%"),
JBXXDao.Properties.位置.like("%" + keywords + "%"),
JBXXDao.Properties.名称.like("%" + keywords + "%")))).list();
关于List集合的模糊匹配:
/**
* List模糊查找
*/
public static List search(String name, List list) {
List results = new ArrayList();
Pattern pattern = Pattern.compile(name);
for (int i = 0; i < list.size(); i++) {
Matcher matcher = pattern.matcher(((JBXX) list.get(i)).get名称());
if (matcher.find()) {
results.add(list.get(i));
}
}
return results;
}