2021-07-09 SpringBoot中不通过主外建关系,通过jpa关联两个表

SpringBoot中不通过主外建关系,通过jpa关联两个表

实体层

BaseMOdel(所有的实体类都会继承它)

@MappedSuperclass
@Data
@EntityListeners(AuditingEntityListener.class)
@Audited
public class BaseModel {
public static final String SOFT_DELETED_CLAUSE = “isDeleted = false”;

@Id
@GeneratedValue(generator = "uuid_short")
@GenericGenerator(name = "uuid_short",strategy = "com.zgy.handle.cardService.model.hibernate.UUIDGenerator")
@Column(name = "id",nullable = false)
@JSONField(serializeUsing = ToStringSerializer.class)
protected Long id;

@JsonIgnore
protected boolean isDeleted = false;
@CreatedBy
protected String creator;
@Temporal(TemporalType.TIMESTAMP)
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@CreationTimestamp
protected Date createTime;
@LastModifiedBy
protected String updator;
@Temporal(TemporalType.TIMESTAMP)
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@UpdateTimestamp
protected Date updateTime;

@ApiModelProperty("备注")
@Column(name = "note",columnDefinition = "text null")
protected String note;


private String createdId; // 创建人的id
private String belongId; // 归属id  部门或者企业

}

实体类

@Entity
@Table(name = “grade”)
@Slf4j
@Audited
@Data
public class Grade extends BaseModel implements Serializable {
//年级表
private String gradeName;//年级名
}

BaseDTO (用来做所用实体DTO的父类声明id)

@Data
public class BaseDTO {
private String id;
}

实体DTO类

@Data
@NoArgsConstructor
@AllArgsConstructor
@Slf4j
public class GradeDTO extends BaseDTO {
private String gradeName;//年级名
}

GradePage(用来做分页的工具类)

@Data
@NoArgsConstructor
@AllArgsConstructor
@Slf4j
public class GradePage {
private Long total;
private List gradeDTO;
}

上边是年级表的创建另一张学生表见https://editor.csdn.net/md/?articleId=118575790

数据处理层(dao)

public interface GradeQueryRepository extends QueryRepository {

Grade findById (int id);
List<Grade> findByGradeNameLike (String gradeName);

}

逻辑处理层(Service)

//接口类
public interface GradeQueryService extends QueryService<Grade, GradeDTO> {
Page getList(String gradeName, int page, int size);
//俩表查全部分页查
Page getStudentDToList(String name,int page, int size);
}
//接口实现类
@Service
@Slf4j
public class GradeQueryServiceImpl extends QueryServiceImpl<Grade, GradeDTO> implements GradeQueryService {
@Autowired
private ZhjMapper zhjMapper;
@Autowired
private ZhjQueryRepository zhjQueryRepository;
@Autowired
private GradeMapper gradeMapper;

private GradeQueryRepository gradeQueryRepository;
public GradeQueryServiceImpl(GradeQueryRepository gradeQueryRepository) {
    super(gradeQueryRepository);
    this.gradeQueryRepository=gradeQueryRepository;
}

@Override
public Page<Grade> findByDynamicQuery(Pageable pageable, GradeDTO dto) {
    return null;
}

@Override
public Specification<Grade> querySpecification(GradeDTO dto) {
    return null;
}

@Override
public <T> Optional<T> findByName(String name) {
    return Optional.empty();
}

//年级表模糊查询加分页的方法
@Override
public Page getList(String gradeName, int page, int size) {
List gradeDTOList = new ArrayList<>();
Pageable pageable = PageRequest.of(page , size);
List gradetList = gradeQueryRepository.findByGradeNameLike("%"+gradeName+"%");
gradeDTOList= gradeMapper.toGradeDTOList(gradetList);
//当前页第一条数据在list中的位置
int start = (int) pageable.getOffset();
//当前页最后一条数据在list中的位置
int end = (start + pageable.getPageSize()) > gradeDTOList.size() ? gradeDTOList.size() : (start + pageable.getPageSize());
Page pagestudentdto = new PageImpl(gradeDTOList.subList(start, end), pageable, gradeDTOList.size());
return pagestudentdto;
}

俩表的通过学生name模糊查询加分页的方法

@Override
public Page<StudentDTO> getStudentDToList(String name, int page, int size) {
    Pageable pageable=PageRequest.of(page,size);
    List<Student> studentList= zhjQueryRepository.findByNameLike("%"+name+"%");//根据名字查出了学生数据
    List<StudentDTO> studentDTOList=zhjMapper.toStudentDTOList(studentList);//studentDTO数据
    for (StudentDTO studentDTO:studentDTOList){
        String gradeId=studentDTO.getGradeId();
        Optional<Grade> byId = gradeQueryRepository.findById(Long.parseLong(gradeId));
        String gradeName = byId.get().getGradeName();
        studentDTO.setGradeName(gradeName);
    }
    //当前页第一条数据在list中的位置
    int start = (int) pageable.getOffset();
    //当前页最后一条数据在list中的位置
    int end = (start + pageable.getPageSize()) > studentDTOList.size() ? studentDTOList.size() : (start + pageable.getPageSize());
    Page<StudentDTO> pagestudentdto = new PageImpl<StudentDTO>(studentDTOList.subList(start, end), pageable, studentDTOList.size());
    return pagestudentdto;
}

}

逻辑层

//用来做DTO与实体相互转换的工具类
@Mapper(componentModel = “spring”)
public interface GradeMapper {
Grade toGrade(GradeDTO gradeDTO);
GradeDTO toGradeDTO(Grade grade);
List toGradeDTOList(List GradetList);
}

contorller

@RestController
@Slf4j
@RequestMapping(value = “grade/query”)
public class GradeQuaryController extends QueryController<Grade, GradeDTO> {
@Autowired
private GradeMapper gradeMapper;
private GradeUpdateService gradeupdateService;
private GradeQueryService gradequeryService;
public GradeQuaryController(GradeUpdateService gradeupdateService, GradeQueryService gradequeryService) {
super(gradeupdateService, gradequeryService);
this.gradequeryService=gradequeryService;
this.gradeupdateService=gradeupdateService;
}
@GetMapping(value = “mohu”, produces = { “application/json;charset=UTF-8”})
public ResponseCode<List> getlistlikename(String gradeName, int page, int size){
ResponseCode<List> responseCode = ResponseCode.sucess();
responseCode.setDataInfo(gradequeryService.getList(gradeName,page,size));
return responseCode;
}

用來做倆表查詢的入口

@GetMapping(value = "towTable/{name}", produces = { "application/json;charset=UTF-8"})
public ResponseCode<List<StudentDTO>> getTowTablename(String studentName, int page, int size){
    ResponseCode<List<StudentDTO>> responseCode = ResponseCode.sucess();
    responseCode.setDataInfo(gradequeryService.getStudentDToList(studentName,page,size));
    return responseCode;
}
@Override
public List<SelectDTO> convertTtoSelectDTOList(List<Grade> grades) {
    return null;
}

@Override
public List<GradeDTO> convertTtoU(List<Grade> grades) {
    return gradeMapper.toGradeDTOList(grades);
}

@Override
public GradeDTO convertTtoU(Grade grade) {
    return gradeMapper.toGradeDTO(grade);
}

@Override
public Grade convertUtoT(GradeDTO gradeDTO) {
    return gradeMapper.toGrade(gradeDTO);
}

}
@本人缺個對象微信:18233243643

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值