在写项目的时候几乎都会用到分页查询,分页查询数据库里面的数据。
我在网上搜索到的大部分都是通过一个类进行的分页。
下面的是我通过limit进行的分页(直接在service层进行计算,将计算所得的参数传入sql语句)。
@Override
//pages表示查询第几页,num表示一页查询的数量
public Map findUserPages(int pages, int num) {
Map<String, List> map = new HashMap<>();
int totalPages;//总共的页数
int total;
int count = applicationsRepository.queryAppCounts();//查询总共的数量
if (count % num == 0) {
totalPages = count / num;
}else {
total = count / num;
totalPages = total + 1;
}
List<Integer> list = new LinkedList<>();
list.add(totalPages);
map.put("totalPages", list);
List<Integer> list1 = new LinkedList<>();
list1.add(count);
map.put("totals", list1);
int thePage = (pages - 1) * num;
List<Applications> list2 = applicationsRepository.findUserPages(thePage, num);//@Query(value = "select * from applications limit ?2,?3 ", nativeQuery = true)
map.put("data", list2);
return Response.ok(map);
}
下面的是对集合进行分页查询,计算方法和上面的一样。
sql语句就是普通的
@Query(value = "select * from user", nativeQuery = true) List<User> queryUserPages();
@Override
public Map queryUserPages(int pages, int num) {
// 查找全部用户,使用集合来接收
List<User> userList = userRepository.findUser();
Map<String, List> map = new HashMap<>();
if (userList.size() > num) {
List<User> listIn = new LinkedList<>();//用来存放分页后获取的数据
int count = userList.size();//集合中数据总数量
int totalPages;
int total;
if (count % num == 0) {
totalPages = count / num;
} else {
total = count / num;
totalPages = total + 1;
}
List<Integer> list2 = new LinkedList<>();
list2.add(totalPages);
map.put("totalPages", list2);
int thePage = (pages - 1) * num;
//使用listIn来存放分页查询数据
for (int i = thePage; i < thePage+num && i < userList.size(); i++) {
listIn.add(userList.get(i));
}
map.put("data", listIn);
List<Integer> listCounts = new LinkedList<>();
listCounts.add(userList.size());
map.put("totals", listCounts);
return map;
} else {
List<Integer> integerList = new LinkedList<>();
integerList.add(userList.size());
map.put("totals", integerList);
map.put("data", userList);
List<Integer> list2 = new LinkedList<>();
list2.add(1);
map.put("totalPages", list2);
return map;
}
}
最近总结:
最近在练着科目二,天气也比较炎热,打算开学前把科目二过了。
要经常锻炼身体,让自己拥有一个比较好的体质。
调节一下自己的情绪,无论在何时,情绪不轻易被别人左右都是最不错的状态。
多出去走走,多认识一些朋友,同时也要避免无效社交。
为了这个有些许离谱的发布博客的情况。
下面是以前做的笔记:
根据W3C标准,一个网页主要有三个部分组成:结构,表现还有行为。
HTML用于描述页面的结构。CSS用于控制页面中元素的样式。JavaScript用于响应用户操作。
<doctype html> <!--文档说明-->
<hteml> <!--根标签-->
<head> <!--子标签-->
<meta charset="utf-8"/>
<title>网页的标题</title>
</head>
<body> <!--网页中所有可见的内容都在此中呈现,也可以不用加<h1>在body中写的话,网页上也会出现写的字-->
<!--标题标签,在HTML中,一共有六级标题标签:h1~h6,在显示效果上,h1最大,h6最小,但是文字的大小我们并不关心,使用HTML标签时,关心的是标签的语义,我们使用的标签都都是语义化标签,六级标题中,h1的最重要,表示一个网页中的主要内容,h2-h6重要性以此降低,对于搜索引擎来说,h1的重要性仅次于title,搜索引擎检索完title,会立即查看h1中的内容,h1标签非常重要,它会影响到页面再搜索引擎中的排名,页面只能写一个h1,一般页面中只使用h1 h2 h3,h3以后的基本不使用-->
<h1>一级标签</h1>
<!-- P标签中的文字,默认会独占一行,并且段与段之间会有一个间距,在HTML中,字符之间写再多的空格,浏览器也会当成一个空格解析,换行也会被当成一个空格解析,在页面中可以使用br标签来表示一个换行,br标签是一个自动结束标签-->
<p>我是一个p标签,我用来表示一个段落</p>
<p>我是一只大老虎<br />老虎本领大<br /></p>
<!--hr标签也是一个字结束标签,可以在页面中生成一条水平线-->
</body>
</html>
<!--在HTML中,一些如< >这种特殊字符是不能直接使用的,需要使用一些特殊的符号来表示这些特殊字符,这些特殊字符我们称为实体(转义字符串),浏览器解析到实体时,会自动将实体转换为对应的字符 实体的语法:&实体的名字: < < ; > >比如a>b可以写成a>b; 空格: (以分号结尾) 版权符号:©(可以去找实体符号参考手册去看)-->
<!--图片标签,使用img标签来向网页中引入一个外部图片,img标签也是一个自结束标签 属性: src:设置一个外部图片的路径
<img src="图片的路径" alt="这是一只大老虎" />
alt:可以用来设置图片的描述,但是是在图片不能显示时对图片的描述,搜索引擎可以通过alt属性来识别不同的图片,不过不写alt属性,则搜索引擎不会对img中的图片进行收录
width:可以用来修改图片的宽度,一般使用px作为单位 height:可以用来修改图片的高度,一般使用px作为单位
宽度和高度两个属性如果只设置一个,则另一个也会等比例调整大小
注:开发过程中指定使用英文符号如果两个之同时指定,则按着所指定的值来设置,一般开发中除了自适应的页面,不建议设置width和height
-->
<!--如果图片在文件里的文件中,则用/,比如在abc里的bcd中的1.gif,则可以这么表示<img arc="abc/bcd/1.gif" alt="大老虎"/>
可以使用../来返回一级目录,返回几级目录就写几个