GreenDao复杂语句查询(Or与and同时使用)

查询语句需求说明:先根据选择的统一编号将表中的数据过滤;然后在剩下的数据中,与三个字段进行模糊匹配,满足其中任意一个就行。

具体使用如下:
第一步:先声明对象
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;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值