//Entity
@Entity
@NamedStoredProcedureQuery(name = "VisitTaskEntity.visit_task", procedureName = "visit_task", parameters = {
@StoredProcedureParameter(mode = ParameterMode.IN, name = "selmode", type = Integer.class),
@StoredProcedureParameter(mode = ParameterMode.IN, name = "pageNum", type = Integer.class),
@StoredProcedureParameter(mode = ParameterMode.IN, name = "pageSize", type = Integer.class)})
@Data
@AllArgsConstructor
@NoArgsConstructor
public class VisitTaskEntity {
private Long id;
private String fileCode;
private Date yjVisitDate;
public void setId(Long id) {
this.id = id;
}
@Id
public Long getId() {
return id;
}
}
//业务
//执行了两次,一次查询数量,一次返回结果集
public PageData<VisitTaskVO> queryTodayTask(TaskCondition condition, OperatorInfo operatorInfo){
int count = visitTaskDBRepository.callVisitTaskNum(condition.getTaskMode());
if(count == 0){
return new PageData<>(0L, condition.getCurrPageNo(), new ArrayList<>());
}
List<VisitTaskEntity> entities = visitTaskDBRepository.callVisitTask(condition.getTaskMode(),
condition.getCurrPageNo() -1, condition.getLimit());
List<VisitTaskVO> vos = entities.stream().map(entity -> visitTaskMapper.transformToVO(entity)).collect(Collectors.toList());
return new PageData<>(Long.valueOf(count), condition.getCurrPageNo(), vos);
}
//仓储
@Repository
public interface VisitTaskDBRepository extends JpaRepository<VisitTaskEntity, Long>, JpaSpecificationExecutor<VisitTaskEntity> {
// @Procedure("visit_task") 用这个一直报错Type is null 没有查到解决方案,暂用@Query查询执行//查询
@Query(nativeQuery = true,value = "call visit_task(:selmode, :pageNum, :pageSize)")
List<VisitTaskEntity> callVisitTask(@Param("selmode")Integer selmode, @Param("pageNum")Integer pageNum, @Param("pageSize")Integer pageSize);
@Query(nativeQuery = true,value = "call visit_task_num(:selmode)")
int callVisitTaskNum(@Param("selmode")Integer selmode);
}
好像还可以用https://blog.csdn.net/CQHaveADream/article/details/78987810 输入输出函数解决,还没有测试
JPA官网:(存储过程)