- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Mybatis利用分页插件PageHelper快速实现分页查询由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
Mybatis算是对数据库操作的利器了。但是在处理分页的时候,Mybatis并没有什么特别的方法,一般需要自己去写limit子句实现,成本较高。好在有国内开发者写了一个PageHelper插件,可以帮助我们快速实现分页查询.
官网地址 。
导入相关依赖:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
<!-- 依赖列表-->
<
dependencies
>
<!-- mysql驱动-->
<
dependency
>
<
groupId
>mysql</
groupId
>
<
artifactId
>mysql-connector-java</
artifactId
>
<
version
>8.0.25</
version
>
</
dependency
>
<!-- 单元测试-->
<
dependency
>
<
groupId
>junit</
groupId
>
<
artifactId
>junit</
artifactId
>
<
version
>4.13</
version
>
<
scope
>test</
scope
>
</
dependency
>
<!-- pageHelper依赖-->
<
dependency
>
<
groupId
>com.github.pagehelper</
groupId
>
<
artifactId
>pagehelper</
artifactId
>
<
version
>5.2.1</
version
>
</
dependency
>
<!-- mybatis依赖-->
<
dependency
>
<
groupId
>org.mybatis</
groupId
>
<
artifactId
>mybatis</
artifactId
>
<
version
>3.5.7</
version
>
</
dependency
>
<!-- log4j日志依赖-->
<
dependency
>
<
groupId
>log4j</
groupId
>
<
artifactId
>log4j</
artifactId
>
<
version
>1.2.17</
version
>
</
dependency
>
</
dependencies
>
|
记住导入PageHelper依赖:
1
2
3
4
5
|
<
dependency
>
<
groupId
>com.github.pagehelper</
groupId
>
<
artifactId
>pagehelper</
artifactId
>
<
version
>5.2.1</
version
>
</
dependency
>
|
在resources目录下,创建一个sqlMapConfig.xml文件,用于做一些全局的mybatis基本的配置,例如数据库连接信息,事务,mapper映射文件路径,日志实现,类的别名,也包含了分页插件的基本配置.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
<
configuration
>
<!--使用外部属性配置文件 resource:指定类路径下的某个属性配置文件-->
<
properties
resource
=
"db.properties"
/>
<
settings
>
<!--日志的实现是LOG4J-->
<
setting
name
=
"logImpl"
value
=
"LOG4J"
/>
</
settings
>
<!--声明别名-->
<
typeAliases
>
<
package
name
=
"com.ren.domain"
/>
</
typeAliases
>
<!--mybatis的插件配置-->
<
plugins
>
<!-- com.github.pagehelper为PageHelper类所在包名 -->
<
plugin
interceptor
=
"com.github.pagehelper.PageInterceptor"
>
<!-- 表示使用mysql的分页方法 -->
<
property
name
=
"helperDialect"
value
=
"mysql"
/>
<!-- 表示当页码长度为0 的时候,就不进行分页查询 -->
<
property
name
=
"pageSizeZero"
value
=
"true"
/>
</
plugin
>
</
plugins
>
<!-- 配置连接数据库四要素 -->
<
environments
default
=
"dev"
>
<
environment
id
=
"dev"
>
<
transactionManager
type
=
"JDBC"
/>
<
dataSource
type
=
"POOLED"
>
<
property
name
=
"driver"
value
=
"${driverClassName}"
/>
<
property
name
=
"url"
value
=
"${url}"
/>
<
property
name
=
"username"
value
=
"${username}"
/>
<
property
name
=
"password"
value
=
"${password}"
/>
</
dataSource
>
</
environment
>
</
environments
>
<
mappers
>
<
mapper
resource
=
"com/ren/mapper/StudentMapper.xml"
/>
</
mappers
>
</
configuration
>
|
Student实体类 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
package
pojo;
public
class
Student {
private
Integer id;
private
String name;
private
String email;
private
Integer age;
public
Student() {
}
public
Student(Integer id, String name, String email, Integer age) {
this
.id = id;
this
.name = name;
this
.email = email;
this
.age = age;
}
public
Integer getId() {
return
id;
}
public
void
setId(Integer id) {
this
.id = id;
}
public
String getName() {
return
name;
}
public
void
setName(String name) {
this
.name = name;
}
public
String getEmail() {
return
email;
}
public
void
setEmail(String email) {
this
.email = email;
}
public
Integer getAge() {
return
age;
}
public
void
setAge(Integer age) {
this
.age = age;
}
@Override
public
String toString() {
return
"Student{"
+
"id="
+ id +
", name='"
+ name + '\
''
+
", email='"
+ email + '\
''
+
", age="
+ age +
'}'
;
}
}
|
mapper接口 。
1
2
3
4
5
6
7
8
9
10
|
package
mapper;
import
pojo.Student;
import
java.util.List;
public
interface
StudentMapper {
//查询所有学生
List<Student> selectAll();
}
|
Mapper映射文件 。
1
2
3
4
5
6
7
8
9
|
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<
mapper
namespace
=
"mapper.StudentMapper"
>
<
select
id
=
"selectAll"
resultType
=
"pojo.Student"
>
select * from student order by id
</
select
>
</
mapper
>
|
在sqlMapConfig文件中指定Mapper文件位置 。
1
2
3
4
|
<!-- mapper映射文件位置-->
<
mappers
>
<
package
name
=
"mapper"
/>
</
mappers
>
|
编写MyBatisUtils 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
package
utils;
import
org.apache.ibatis.io.Resources;
import
org.apache.ibatis.session.SqlSession;
import
org.apache.ibatis.session.SqlSessionFactory;
import
org.apache.ibatis.session.SqlSessionFactoryBuilder;
import
java.io.IOException;
import
java.io.InputStream;
/**
* 工具类:创建SqlSession对象
*/
public
class
MyBatisUtil {
private
static
SqlSessionFactory factory =
null
;
static
{
String config=
"sqlMapConfig.xml"
;
try
{
InputStream inputStream =Resources.getResourceAsStream(config);
factory =
new
SqlSessionFactoryBuilder().build(inputStream);
}
catch
(IOException e) {
e.printStackTrace();
}
}
//创建方法,获取SqlSession对象
public
static
SqlSession getSqlSession(){
SqlSession session =
null
;
if
( factory !=
null
){
session =factory.openSession();
// openSession(true);
}
return
session;
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
import
com.github.pagehelper.PageHelper;
import
mapper.StudentMapper;
import
org.apache.ibatis.session.SqlSession;
import
org.junit.Test;
import
pojo.Student;
import
utils.MyBatisUtil;
import
java.util.List;
public
class
pageHelper_Test {
@Test
public
void
PageHelperTest(){
//获取sqlSession
SqlSession sqlSession = MyBatisUtil.getSqlSession();
//获取mapper代理
StudentMapper mapper = sqlSession.getMapper(StudentMapper.
class
);
//调用PageHelper
PageHelper.startPage(
2
,
2
);
//查询所有学生
List<Student> studentList = mapper.selectAll();
//遍历结果List集合
studentList.forEach(student -> System.out.println(student));
//关闭sqlSession对象
sqlSession.close();
}
}
|
查看结果 。
可以看到sql语句,在mapper文件中并没有写limit,pageHelper已经帮我们加上了limit关键字完成了查询.OK了 。
到此这篇关于Mybatis利用分页插件PageHelper快速实现分页查询的文章就介绍到这了,更多相关Mybatis分页插件PageHelper内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。
原文链接:https://blog.csdn.net/qq_31762741/article/details/119487377 。
最后此篇关于Mybatis利用分页插件PageHelper快速实现分页查询的文章就讲到这里了,如果你想了解更多关于Mybatis利用分页插件PageHelper快速实现分页查询的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我有三张 table 。表 A 有选项名称(即颜色、尺寸)。表 B 有选项值名称(即蓝色、红色、黑色等)。表C通过将选项名称id和选项名称值id放在一起来建立关系。 我的查询需要显示值和选项的名称,而
在mysql中,如何计算一行中的非空单元格?我只想计算某些列之间的单元格,比如第 3-10 列之间的单元格。不是所有的列...同样,仅在该行中。 最佳答案 如果你想这样做,只能在 sql 中使用名称而
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 7 年前。 Improve this ques
我正在为版本7.6进行Elasticsearch查询 我的查询是这样的: { "query": { "bool": { "should": [ {
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 7 年前。 Improve this ques
是否可以编写一个查询来检查任一子查询(而不是一个子查询)是否正确? SELECT * FROM employees e WHERE NOT EXISTS (
我找到了很多关于我的问题的答案,但问题没有解决 我有表格,有数据,例如: Data 1 Data 2 Data 3
以下查询返回错误: 查询: SELECT Id, FirstName, LastName, OwnerId, PersonEmail FROM Account WHERE lower(PersonEm
以下查询返回错误: 查询: SELECT Id, FirstName, LastName, OwnerId, PersonEmail FROM Account WHERE lower(PersonEm
我从 EditText 中获取了 String 值。以及提交查询的按钮。 String sql=editQuery.getText().toString();// SELECT * FROM empl
我有一个或多或少有效的查询(关于结果),但处理大约需要 45 秒。这对于在 GUI 中呈现数据来说肯定太长了。 所以我的需求是找到一个更快/更高效的查询(几毫秒左右会很好)我的数据表大约有 3000
这是我第一次使用 Stack Overflow,所以我希望我以正确的方式提出这个问题。 我有 2 个 SQL 查询,我正在尝试比较和识别缺失值,尽管我无法将 NULL 字段添加到第二个查询中以识别缺失
什么是动态 SQL 查询?何时需要使用动态 SQL 查询?我使用的是 SQL Server 2005。 最佳答案 这里有几篇文章: Introduction to Dynamic SQL Dynami
include "mysql.php"; $query= "SELECT ID,name,displayname,established,summary,searchlink,im
我有一个查询要“转换”为 mysql。这是查询: select top 5 * from (select id, firstName, lastName, sum(fileSize) as To
通过我的研究,我发现至少从 EF 4.1 开始,EF 查询上的 .ToString() 方法将返回要运行的 SQL。事实上,这对我来说非常有用,使用 Entity Framework 5 和 6。 但
我在构造查询来执行以下操作时遇到问题: 按activity_type_id过滤联系人,仅显示最近事件具有所需activity_type_id或为NULL(无事件)的联系人 表格结构如下: 一个联系人可
如何让我输入数据库的信息在输入数据 5 分钟后自行更新? 假设我有一张 table : +--+--+-----+ |id|ip|count| +--+--+-----+ |
我正在尝试搜索正好是 4 位数字的 ID,我知道我需要使用 LENGTH() 字符串函数,但找不到如何使用它的示例。我正在尝试以下(和其他变体)但它们不起作用。 SELECT max(car_id)
我有一个在 mysql 上运行良好的 sql 查询(查询 + 连接): select sum(pa.price) from user u , purchase pu , pack pa where (
我是一名优秀的程序员,十分优秀!