实体:::
@Entity
@Table(name = "msp_cms_banner")
public class Banner extends TenantEntity {
/** 序列号 */
private static final long serialVersionUID = 791983617347082516L;
/** 存在头部标题栏 */
public static final int HAS_TITLE_BAR = 1;
/** 用户id */
@Id
@GeneratedValue(generator = "UIDGenerator")
@GenericGenerator(name = "UIDGenerator", strategy = "com.comtop.msp.framework.persistence.UIDGenerator")
@Column(length = 40)
private String id;
/** 标题 */
@Column(length = 200)
private String title;
/** 内容简介 */
@Column(length = 200)
private String profile;
/** 图片地址 */
@Column(length = 500)
private String imageUrl;
/** 跳转地址 */
@Column(length = 500)
private String url;
@Column(length=10)
private int seq;
/** 发布时间 */
@Temporal(TemporalType.DATE)
@Column(name = "publishDate", nullable = false, length = 10)
private Date publishDate;
/** 下架时间 */
@Temporal(TemporalType.DATE)
@Column(name = "downDate", nullable = false, length = 10)
private Date downDate;
/** 跳转地址的页面是否存在头部标题栏,默认 0 不存在 */
@Column(columnDefinition = " INT DEFAULT 0 ")
private int titleBarState;
/** 类型,
@Column(columnDefinition = " INT DEFAULT 0 ")
private int type;
service层::关键代码
/**
* 根据关键词查询所有记录
*
* @param keyword 关键词
* @param keyword2
* @return 结果集合
*/
public Page<Banner> findByKeyword(final String type,final String keyword, int pageNumber,int pageSize) {
// 过滤条件
Specification<Banner> spec = new Specification<Banner>() {
@Override
public Predicate toPredicate(Root<Banner> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
List<Predicate> predicates = Lists.newArrayList();
if (StringUtils.isNotEmpty(keyword)) {
Predicate predicateT = builder.like(root.<String> get("title"), "%/" + keyword + "%", '/');
Predicate predicateP = builder.like(root.<String> get("profile"), "%/" + keyword + "%", '/');
Predicate predicateI = builder.like(root.<String> get("imageUrl"), "%/" + keyword + "%", '/');
Predicate predicateU = builder.like(root.<String> get("url"), "%/" + keyword + "%", '/');
predicates.add(builder.or(predicateT, predicateP, predicateI, predicateU));
}
predicates.add(builder.equal(root.<String> get("delFlag"), Banner.DEL_FLAG_NORMAL));
if(StringUtils.isNotBlank(type)){
int parseInt = Integer.parseInt(type);
if(1==parseInt){
//1:过期
predicates.add(builder.greaterThanOrEqualTo(root.<Date>get("downDate"), new Date()));
}//2:未过期
else if(2==parseInt){
// date conditon >= 当前时间
predicates.add(builder.lessThanOrEqualTo(root.<Date>get("downDate"), new Date()));
}
}
if (StringUtils.isNotBlank(UserUtils.getTenantId())) {
predicates.add(builder.equal(root.<String> get("tenantId"), UserUtils.getTenantId()));
}
// 将所有条件用 and 联合起来
if (predicates.size() > 0) {
return builder.and(predicates.toArray(new Predicate[predicates.size()]));
}
return builder.conjunction();
}
};
List<Order> orderList = new ArrayList<Order>();
orderList.add(new Order(Direction.DESC, "seq"));
orderList.add(new Order(Direction.DESC, "publishDate"));
PageRequest pageRequest = new PageRequest(pageNumber - 1, pageSize, new Sort(orderList));
return bannerDao.findAll(spec,pageRequest);
}