NutzCN Logo
问答 关于nutz模糊查询问题
发布于 2328天前 作者 苍蓝猛兽 2346 次浏览 复制 上一个帖子 下一个帖子
标签:

日志

2017-12-08 12:26:42.375 DEBUG 696 --- [nio-8085-exec-7] o.nutz.dao.impl.sql.run.NutDaoExecutor   : SELECT * FROM t_sys_log  WHERE (url LIKE ?) AND (method LIKE ?) ORDER BY date DESC   LIMIT 0, 50 
    |        1 |   2 |
    |----------|-----|
    | %/syslog | %P% |

疑问

为什么同样是参数,模糊查询左右%会不一样,是“/” 导致的??

4 回复

并测试了一下,有几率出现%没有的情况

代码

public QueryResult findAll(SysLog log, Page page) {
		Pager pager = dao.createPager(page.getPage(), page.getRows());
		Criteria cri = CommonUtil.getCriteria(log);
		// 这个方法很方便,就是操作符需要自己重新写方法覆盖
		// Criteria cri = Cnd.from(dao, log);
		if (cri != null) {
			// 动态排序也可以,这里就不写了。
			cri.getOrderBy().desc("date");
		}
		List<SysLog> logs = dao.query(SysLog.class, cri, pager);
		pager.setRecordCount(dao.count(SysLog.class, cri));
		return new QueryResult(logs, pager);
	}


public static Criteria getCriteria(Object obj) {
		Criteria cri = Cnd.cri();
		Class<?> clz = obj.getClass();
		Field[] fields = clz.getDeclaredFields();
		for (Field field : fields) {
			if (!field.isAccessible()) {
				field.setAccessible(true);
			}
			// 判断值为不为空
			try {
				if (!Lang.isEmpty(field.get(obj))) {
					if (field.get(obj).toString().length() == 0) {
						continue;
					}
					// 获取nutz字段注解
					Column column = field.getAnnotation(Column.class);
					if (column == null) {
						continue;
					}
					// 获取数据库字段名称
					String columnName = (column.value() == "" || column.value().length() == 0) ? field.getName()
							: column.value();
					// 获取操作符
					Operator oper = field.getAnnotation(Operator.class);
					if (oper == null) {
						continue;
					}
					// 封装条件并塞入条件集合
					SqlExpressionGroup expression = Cnd.exps(columnName, oper.value(), field.get(obj));
					cri.where().and(expression);
				}
			} catch (IllegalArgumentException e) {
				e.printStackTrace();
			} catch (IllegalAccessException e) {
				e.printStackTrace();
			}
		}
		return cri;
	}

必须手动加 ‘%’ 吗???

Cnd一直都是自行加百分号

我自己手动加%后,测试后正常。
不加%的话,sql中有几率出现没有%的现象

添加回复
请先登陆
回到顶部