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

wordpress分类设置seo/优化网站找哪家

wordpress分类设置seo,优化网站找哪家,网站不能正常显示出现后台代码,平板微信hd版转自:https://www.cnblogs.com/sandea/p/8275890.html 在我们平时的工作中,查询列表在我们的系统中基本随处可见,那么我们如何使用jpa进行多条件查询以及查询列表分页呢?下面我将介绍两种多条件查询方式。 1、引入起步依赖 …

转自:https://www.cnblogs.com/sandea/p/8275890.html    

在我们平时的工作中,查询列表在我们的系统中基本随处可见,那么我们如何使用jpa进行多条件查询以及查询列表分页呢?下面我将介绍两种多条件查询方式。

1、引入起步依赖   

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency>

2、对thymeleaf和jpa进行配置

    打开application.yml,添加以下参数,以下配置在之前的文章中介绍过,此处不做过多说明

spring:
  thymeleaf:
    cache: true
 check-template-location: true  content-type: text/html  enabled: true  encoding: utf-8  mode: HTML5  prefix: classpath:/templates/  suffix: .html  excluded-view-names:  template-resolver-order:  datasource:  driver-class-name: com.mysql.jdbc.Driver  url: jdbc:mysql://localhost:3306/restful?useUnicode=true&characterEncoding=UTF-8&useSSL=false  username: root  password: root  initialize: true  init-db: true  jpa:  database: mysql  show-sql: true  hibernate:  ddl-auto: update  naming:  strategy: org.hibernate.cfg.ImprovedNamingStrategy 

3、编写实体Bean

@Entity
@Table(name="book") public class Book { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id", updatable = false) private Long id; @Column(nullable = false,name = "name") private String name; @Column(nullable = false,name = "isbn") private String isbn; @Column(nullable = false,name = "author") private String author; public Book (String name,String isbn,String author){ this.name = name; this.isbn = isbn; this.author = author; } public Book(){ } //此处省去get、set方法 } 
public class BookQuery { private String name; private String isbn; private String author; //此处省去get、set方法 }

4、编写Repository接口

@Repository("bookRepository")
public interface BookRepository extends JpaRepository<Book,Long> ,JpaSpecificationExecutor<Book> { } 

    此处继承了两个接口,后续会介绍为何会继承这两个接口

5、抽象service层

    首先抽象出接口

public interface BookQueryService { Page<Book> findBookNoCriteria(Integer page,Integer size); Page<Book> findBookCriteria(Integer page,Integer size,BookQuery bookQuery); }

    实现接口

@Service(value="bookQueryService")
public class BookQueryServiceImpl implements BookQueryService { @Resource BookRepository bookRepository; @Override public Page<Book> findBookNoCriteria(Integer page,Integer size) { Pageable pageable = new PageRequest(page, size, Sort.Direction.ASC, "id"); return bookRepository.findAll(pageable); } @Override public Page<Book> findBookCriteria(Integer page, Integer size, final BookQuery bookQuery) { Pageable pageable = new PageRequest(page, size, Sort.Direction.ASC, "id"); Page<Book> bookPage = bookRepository.findAll(new Specification<Book>(){ @Override public Predicate toPredicate(Root<Book> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) { List<Predicate> list = new ArrayList<Predicate>(); if(null!=bookQuery.getName()&&!"".equals(bookQuery.getName())){ list.add(criteriaBuilder.equal(root.get("name").as(String.class), bookQuery.getName())); } if(null!=bookQuery.getIsbn()&&!"".equals(bookQuery.getIsbn())){ list.add(criteriaBuilder.equal(root.get("isbn").as(String.class), bookQuery.getIsbn())); } if(null!=bookQuery.getAuthor()&&!"".equals(bookQuery.getAuthor())){ list.add(criteriaBuilder.equal(root.get("author").as(String.class), bookQuery.getAuthor())); } Predicate[] p = new Predicate[list.size()]; return criteriaBuilder.and(list.toArray(p)); } },pageable); return bookPage; } } 

    此处我定义了两个接口,findBookNoCriteria是不带查询条件的,findBookCriteria是带查询条件的。在此处介绍一下上面提到的自定义Repository继承的两个接口,如果你的查询列表是没有查询条件,只是列表展示和分页,只需继承JpaRepository接口即可,但是如果你的查询列表是带有多个查询条件的话则需要继承JpaSpecificationExecutor接口,这个接口里面定义的多条件查询的方法。当然不管继承哪个接口,当你做分页查询时,都是需要调用findAll方法的,这个方法是jap定义好的分页查询方法。

    findBookCriteria方法也可以使用以下方法实现,大家可以自行选择

 @Overridepublic Page<Book> findBookCriteria(Integer page, Integer size, final BookQuery bookQuery) { Pageable pageable = new PageRequest(page, size, Sort.Direction.ASC, "id"); Page<Book> bookPage = bookRepository.findAll(new Specification<Book>(){ @Override public Predicate toPredicate(Root<Book> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) { Predicate p1 = criteriaBuilder.equal(root.get("name").as(String.class), bookQuery.getName()); Predicate p2 = criteriaBuilder.equal(root.get("isbn").as(String.class), bookQuery.getIsbn()); Predicate p3 = criteriaBuilder.equal(root.get("author").as(String.class), bookQuery.getAuthor()); query.where(criteriaBuilder.and(p1,p2,p3)); return query.getRestriction(); } },pageable); return bookPage; }

6、编写Controller

    针对有查询条件和无查询条件,我们分别编写一个Controller,默认每页显示5条,如下

@Controller
@RequestMapping(value = "/queryBook") public class BookController { @Autowired BookQueryService bookQueryService; @RequestMapping("/findBookNoQuery") public String findBookNoQuery(ModelMap modelMap,@RequestParam(value = "page", defaultValue = "0") Integer page, @RequestParam(value = "size", defaultValue = "5") Integer size){ Page<Book> datas = bookQueryService.findBookNoCriteria(page, size); modelMap.addAttribute("datas", datas); return "index1"; } @RequestMapping(value = "/findBookQuery",method = {RequestMethod.GET,RequestMethod.POST}) public String findBookQuery(ModelMap modelMap, @RequestParam(value = "page", defaultValue = "0") Integer page, @RequestParam(value = "size", defaultValue = "5") Integer size, BookQuery bookQuery){ Page<Book> datas = bookQueryService.findBookCriteria(page, size,bookQuery); modelMap.addAttribute("datas", datas); return "index2"; } } 

7、编写页面

    首先我们编写一个通用的分页页面,新建一个叫page.html的页面

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorator="page"> <body> <div th:fragment="pager"> <div class="text-right" th:with="baseUrl=${#httpServletRequest.getRequestURL().toString()},pars=${#httpServletRequest.getQueryString() eq null ? '' : new String(#httpServletRequest.getQueryString().getBytes('iso8859-1'), 'UTF-8')}"> <ul style="margin:0px;" class="pagination" th:with="newPar=${new java.lang.String(pars eq null ? '' : pars).replace('page='+(datas.number), '')}, curTmpUrl=${baseUrl+'?'+newPar}, curUrl=${curTmpUrl.endsWith('&amp;') ? curTmpUrl.substring(0, curTmpUrl.length()-1):curTmpUrl}" > <!--<li th:text="${pars}"></li>--> <li><a href="#" th:href="@{${curUrl}(page=0)}">首页</a></li> <li th:if="${datas.hasPrevious()}"><a href="#" th:href="@{${curUrl}(page=${datas.number-1})}">上一页</a></li> <!--总页数小于等于10--> <div th:if="${(datas.totalPages le 10) and (datas.totalPages gt 0)}" th:remove="tag"> <div th:each="pg : ${#numbers.sequence(0, datas.totalPages - 1)}" th:remove="tag"> <

转载于:https://www.cnblogs.com/sharpest/p/8657787.html

http://www.lbrq.cn/news/1533367.html

相关文章:

  • 淘宝客如何做淘宝客网站推广/交换神器
  • 建立网站有哪几种方式/软文营销的定义
  • 网站建设的来源/友情链接英文翻译
  • 肃宁网站制作价格/seo外包方案
  • 合肥网页制作联系方式/广州seo服务外包
  • 女生做网站主题有哪些/友链外链app
  • 门户手机版网站/网络营销的八大职能
  • 海珠做网站/广告联盟平台挂机赚钱
  • 咋样做网站/宁波seo专员
  • 广州免费制作网站软件/网站制作过程
  • wordpress网站备份/地推团队接单平台
  • 二级建造师注册查询/google推广seo
  • 静安企业网站制作/苏州网络推广服务
  • 安卓网站开发环境/微营销推广方案
  • 手机网站制作教程软件/百度客服电话24小时客服电话
  • 用织梦做网站有什么公司会要/seo搜索
  • 家庭宽带做网站服务器/全世界足球排名前十位
  • 哪个网站有收藏加购做积分任务/内部搜索引擎优化
  • php sqlite 做网站/小学生班级优化大师
  • 西安网站开发公司价格/浏览器下载
  • 云南省住房建设厅网站/优化关键词推广
  • 房地产交易中心官网/seo网站建站
  • 西安专业做网站的公司哪家好/网络广告策划
  • 竞价网站做不做链接/郑州seo多少钱
  • 有哪些是外国人做的网站/网页优化包括什么
  • 外汇局网站预收货款报告怎么做/国际军事新闻
  • 网站运营专员具体每天怎么做/深圳网络营销推广培训
  • 网站结构优化包括哪些/免费推广方式有哪些
  • 沈阳做招聘网站/今日国际新闻最新消息事件
  • 电子商务网站功能页面/个人网站怎么建立
  • 医疗信息化实战:引领医疗行业数字化转型实践
  • 20250821日记
  • 【运维进阶】if 条件语句的知识与实践
  • JavaScript 性能优化实战:从原理到落地的完整指南
  • J1939协议
  • 猫头虎开源AI分享|基于大模型和RAG的一款智能text2sql问答系统:SQLBot(SQL-RAG-QABot),可以帮你用自然语言查询数据库