新建实体类
@Entity
public class SysAdmin extends BaseEntity{
@Id
@Column(length = 64)
private String adminId;
@Column(length = 100)
private String userName;
@Column(length = 100)
private String passWord;
@Column
private String name;
/** 部门ID /
@Column(length = 64)
private String deptId;
/* 角色ID /
@Column(length = 64)
private String roleId;
@Column
private String email;
@Column
private String phoneNumber;
/* 用户头像 /
@Column
private String avatar;
/* 盐加密 /
@Column
private String salt;
/* 帐号状态(0正常 1停用) /
@Column
private String status;
/* 用户性别 /
@Column(length = 1)
private String sex;
/* 最后登陆IP /
@Column
private String loginIp;
/* 最后登陆时间 */
@Column
private Date loginDate;
。。。省略
}
新建repository继承JpaRepository和JpaSpecificationExecutor两种查询接口
JpaRepository在注解@NamedQuery查询其他统计查询时使用方便
JpaSpecificationExecutor分页查询使用比较多
@Repository
public interface SysAdminRepository extends JpaRepository<SysAdmin,String>, JpaSpecificationExecutor {
}
新建service
分页查询
public PageResult page(ConditionPage conditionPage) {
Specification specification = this.where(conditionPage);
Sort sort = Sort.by(Sort.Direction.DESC,“updateTime”);
Pageable pageable = PageRequest.of(conditionPage.getPage(),conditionPage.getSize(),sort);
Page page = repo.findAll(specification,pageable);
List list = page.get().map(sysAdmin -> {
return convertEntity(sysAdmin);
}).collect(Collectors.toList());
return new PageResultImpl(page.getNumber(),page.getSize(),list);
}
查询参数
2.0以上可以直接组装参数
2.0以下需要写Specification工厂
private Specification where(ConditionPage conditionPage){
return new Specification() {
@Override
public Predicate toPredicate(Root root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
List list = new ArrayList<>();
Condition condition = conditionPage.getCondition();
if (Strings.isNotEmpty(condition.getStarTime())){
list.add(criteriaBuilder.between(root.get(“updateTime”),condition.getStarTime(),condition.getEndTime()));
}
if (Strings.isNotEmpty(condition.getName())){
list.add(criteriaBuilder.like(root.get(“name”),condition.getName()));
}
return criteriaBuilder.and(list.toArray(new Predicate[list.size()]));
}
};
}
新建controller
@RequestMapping(value = “page”,method = RequestMethod.POST,produces = MediaType.APPLICATION_JSON_VALUE)
public ResObject page(@RequestBody ConditionPage conditionPage){
return success(service.page(conditionPage));
}
浏览器中输入http://localhost:8081/swagger-ui.html#/%E7%94%A8%E6%88%B7%E7%AE%A1%E7%90%86/saveUsingPOST

jpa 使用
最新推荐文章于 2025-02-23 09:27:54 发布
6845

被折叠的 条评论
为什么被折叠?



