当前位置: 首页 > news >正文

个人网站开发意义不想用原来的网站模板了就用小偷工具采集了一个可是怎么替换

个人网站开发意义,不想用原来的网站模板了就用小偷工具采集了一个可是怎么替换,心海建站,网站建设开拓该行业的难点疑前言: 相信小伙伴们的项目很多都用到SpringJPA框架的吧,对于单表的增删改查利用jpa是很方便的,但是对于条件查询并且分页 是不是很多小伙伴不经常写到. 今天我整理了一下在这里分享一下. 话不多说直接上代码: Controller: RestController public class ProductInstanceContr…前言: 相信小伙伴们的项目很多都用到SpringJPA框架的吧,对于单表的增删改查利用jpa是很方便的,但是对于条件查询并且分页 是不是很多小伙伴不经常写到. 今天我整理了一下在这里分享一下. 话不多说直接上代码: Controller: RestController public class ProductInstanceController {Autowiredprivate ProductInstanceService productInstanceService;PostMapping(page-find-instance)public PageInfoVOProductInst pageFindInstance(RequestBody ProductInstParams productInstParams) {return productInstanceService.pageFindInstance(productInstParams);}}Service: Service public class ProductInstanceService {Autowiredprivate ProductInstRepository productInstRepository;public PageInfoVOProductInst pageFindInstance(ProductInstParams productInstParams) {Sort.Direction direction Sort.Direction.DESC;//创建一个Pageable对象其中包含了请求的页码(productInstParams.getPageNo())每页大小(productInstParams.getPageSize())排序规则以及排序字段名。Pageable pageable PageRequest.of(productInstParams.getPageNo(), productInstParams.getPageSize(), direction, createdTime);//将传入的字符串类型的开始日期(startDate)和结束日期(endDate)转换成Date类型Date start DateUtil.parseUTC(productInstParams.getStartDate());Date end DateUtil.parseUTC(productInstParams.getEndDate());//执行JPA分页查询PageProductInst productInstPage productInstRepository.findAll((root, query, criteriaBuilder) - {//初始化一个ArrayListPredicate存储多个谓词条件这些条件最终会被组合成一个逻辑与AND表达式ListPredicate predicatesAndList new ArrayList();// deleted trueif (null ! productInstParams.getIsDeleted()) {predicatesAndList.add(criteriaBuilder.equal(root.get(deleted).as(Boolean.class), productInstParams.getIsDeleted()));}// name like %name%if (StringUtils.isNotBlank(productInstParams.getName())) {predicatesAndList.add(criteriaBuilder.like(root.get(name).as(String.class), productInstParams.getName()));}// runStatus 运行中if (StringUtils.isNotBlank(productInstParams.getRunStatus())) {predicatesAndList.add(criteriaBuilder.equal(root.get(runStatus).as(String.class), productInstParams.getRunStatus()));}// createdTime startif (!Objects.isNull(start)) {predicatesAndList.add(criteriaBuilder.greaterThanOrEqualTo(root.get(createdTime).as(Date.class), start));}// createdTime endif (!Objects.isNull(end)) {predicatesAndList.add(criteriaBuilder.lessThanOrEqualTo(root.get(createdTime).as(Date.class), end));}// id in (1,2)if (!CollectionUtils.isEmpty(productInstParams.getIds())) {CriteriaBuilder.InString in criteriaBuilder.in(root.get(id).as(String.class));productInstParams.getIds().forEach(in::value);predicatesAndList.add(in);}Predicate andPredicate criteriaBuilder.and(predicatesAndList.toArray(new Predicate[predicatesAndList.size()]));query.where(andPredicate);return query.getRestriction();}, pageable);return PageUtil.generatePageInfoVO(productInstPage);} } 解释: jpa分页查询调的方法是: Page findAll(Nullable Specification spec, Pageable pageable); 该方法接受两个参数 一个是 Specification 对象用于构建复杂的查询条件 另一个是之前创建的pageable对象用于指定分页及排序信息。 点进去可以直接看到 下面我再解释一下这行代码 criteriaBuilder.equal(root.get(runStatus).as(String.class), productInstParams.getRunStatus());1. criteriaBuilder 是javax.persistence.criteria.CriteriaBuilder的一个实例它是用来构建JPQL查询条件的对象。 2. root 是代表查询主表的Root对象它指向ProductInst实体类对应的数据库表。 3. root.get(“runStatus”) 表示获取ProductInst实体类中的runStatus属性(注意:这地方写的不是数据库的字段,我数据库的字段是:run_status)。这个方法返回的是一个Path未知类型对象表示runStatus字段在查询路径上的位置。 4. .as(String.class) 是类型转换确保runStatus被视为String类型因为在数据库中它可能被映射为VARCHAR或者其他文本类型字段。 5. productInstParams.getRunStatus() 获取传入参数对象productInstParams中的runStatus属性值这是一个待匹配的实际值。 综上所述:这段代码对应的sql WHERE run_status XXXXRepository: Repository public interface ProductInstRepository extends JpaRepositoryProductInst, String, JpaSpecificationExecutorProductInst {}PageInfoVO: package com.king.alice.common.base;import lombok.Getter; import lombok.Setter;import java.util.List;/*** Author wlt* Description 分页数据中的元素* Date 2022/8/26**/ Getter Setter public class PageInfoVOT extends BaseVO{private static final long serialVersionUID -3542944936096780651L;/*** 总记录数*/private long total;/*** 当前页*/private int pageNum;/*** 每页的数量*/private int pageSize;/*** 结果集*/private ListT list; } PageUtil: package com.king.alice.common.util;import com.king.alice.common.base.PageInfoVO; import org.springframework.data.domain.Page;/*** author 大魔王* description:* date 2024/3/22 11:02*/ public class PageUtil {/*** 根据Page对象生成PageInfoVO** param page Page包装对象* return PageDto 对象*/SuppressWarnings({unchecked})public static T PageInfoVOT generatePageInfoVO(Page page) {PageInfoVO result new PageInfoVO();result.setPageNum(page.getNumber() 1);result.setPageSize(page.getPageable().getPageSize());result.setTotal(page.getTotalElements());result.setList(page.getContent());return result;} }ProductInstParams: package com.king.alice.manage.instance.params;import lombok.Data;import java.util.List;/*** author 大魔王* description: TODO* date 2024/3/21 16:56*/ Data public class ProductInstParams {/*** 当前页*/private int pageNo;/*** 每页的数量*/private int pageSize;/*** 名字*/private ListString ids;/*** 名字*/private String name;/*** 运行状态*/private String runStatus;private String startDate;private String endDate;private Boolean isDeleted; } 测试 响应结果: 控制台打印sql: 完美实现!
http://www.hkea.cn/news/14540482/

相关文章:

  • 做单页网站需要做什么设计网单
  • 定制网站制作公司怎么样深圳外包网络推广
  • 在线网站备份架设网站需要什么
  • 服务器发布网站学会网站建设三方协议
  • 济南网站哪家做的好joomla 做外贸网站 好的
  • 百度只更新快照不收录网站网页设计素材书
  • 网站做行业认证好处电商网站建设与维护意味着什么
  • 武威网站建设价格上海网站建设优势
  • 做模型的网站有哪些不适合做室内设计的人
  • 创业大赛网站建设dw网页制作教程div
  • 泸州百度做网站联系漯河网做网站
  • 中小企业网站开发韵茵成都注册公司需要什么材料和手续
  • 给公司在百度上做网站猎头公司怎么找
  • 开发软件多少钱一个月seo查询外链
  • 云南网站制作湖南怀化市住房城乡建设局网站
  • 盐城北京网站建设怎么用电脑做网站主机
  • 平面设计网上接单深圳福田网站优化网络营销培训学校
  • 长沙seo网站排名优化公司seo整站优化报价
  • logo在线制作网站定制网络机顶盒
  • 东莞网站建设新闻资讯投资公司网站建设意义
  • 金昌网站建设wordpress 简单 免费主题下载
  • 桂林做网站公司凡科抽奖
  • 太仓网站建设网站推广设计制作效果图
  • 有后台的网站如何建设wordpress做在线商城
  • 百度网站认证v1青岛市公共资源交易网
  • 网站建设维护合同开源商城
  • 网站推广文章范例扬中网站推广托管
  • 硅胶 技术支持 东莞网站建设网站建好后广告是不是需要
  • 建筑资源网站商标大全 logo
  • 江门专业制作网站做网站运营用什么配置电脑