使用jeecg的时候遇到的某些显示问题,例如数据库某些字段为空就不显示出来,一开始是想在数据上做改动,遍历数据然后删除,但是这样就会造成页面显示不足十条数据, 所以需要查询的时候增加条件
刚开始的时候想把结果筛选一下
List<TbUserEntity> userList = dataGrid.getResults();
for (Iterator<TbUserEntity> it = userList.iterator(); it.hasNext();) {
TbUserEntity user = it.next();
if (user.getNickname() == null) {
it.remove();
}
}
使用下面的方法在查询之前对sql语句进行修改增加条件
HQL运算符 | QBC运算符 | 含义 |
---|---|---|
= | Restrictions.eq() | 等于equal |
<> | Restrictions.ne() | 不等于not equal |
> | Restrictions.gt() | 大于greater than |
>= | Restrictions.ge() | 大于等于greater than or equal |
< | Restrictions.lt() | 小于less than |
<= | Restrictions.le() | 小于等于less than or equal |
is null | Restrictions.isnull() | 等于空值 |
is not null | Restrictions.isNotNull() | 非空值 |
like | Restrictions.like() | 字符串模式匹配 |
and | Restrictions.and() | 逻辑与 |
and | Restrictions.conjunction() | 逻辑与 |
or | Restrictions.or() | 逻辑或 |
or | Restrictions.disjunction() | 逻辑或 |
not | Restrictions.not() | 逻辑非 |
in(列表) | Restrictions.in() | 等于列表中的某一个值 |
not in(列表) | Restrictions.not(Restrictions.in()) | 不等于列表中任意一个值 |
between x and y | Restrictions.between() | 闭区间xy中的任意值 |
not between x and y | Restrictions.not(Restrictions..between()) | 小于值X或者大于值y |
结果
public void datagrid(TbUserEntity tbUser, HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
CriteriaQuery cq = new CriteriaQuery(TbUserEntity.class, dataGrid);
this.area(cq);
//查询条件组装器
org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, tbUser, request.getParameterMap());
try {
//在这里自定义追加查询条件 nickname字段不能为空
cq.add(Restrictions.isNotNull("nickname"));
} catch (Exception e) {
throw new BusinessException(e.getMessage());
}
this.tbUserService.getDataGridReturn(cq, true);
TagUtil.datagrid(response, dataGrid);
}
原文:https://www.cnblogs.com/happyeverydaywsc/p/14848664.html