-- 判断数据表是否存在,存在则删除
DROP TABLE IF EXISTS tb_teacher;
-- 创建“用户信息”数据表
CREATE TABLE IF NOT EXISTS tb_teacher(
id INT AUTO_INCREMENT PRIMARY KEY COMMENT '用户编号',
name VARCHAR(50) NOT NULL COMMENT '用户姓名',
province VARCHAR(50) NOT NULL COMMENT '省份',
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间'
) COMMENT = '用户信息表';
-- 添加数据
INSERT INTO tb_teacher(name,province) VALUES
('拒绝熬夜啊的博客_01','广东省'),('拒绝熬夜啊的博客_02','黑龙江省'),('拒绝熬夜啊的博客_03','山东省'),('拒绝熬夜啊的博客_04','安徽省'),('拒绝熬夜啊的博客_05','黑龙江省'),
('拒绝熬夜啊的博客_06','江苏省'),('拒绝熬夜啊的博客_07','黑龙江省'),('拒绝熬夜啊的博客_08','广东省'),('拒绝熬夜啊的博客_09','陕西省'),('拒绝熬夜啊的博客_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','山东省');
<!-- SpringBoot/MyBatis使用PageHelper分页控件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.13</version>
</dependency>
<!-- MySQL的JDBC数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
spring:
#DataSource数据源
datasource:
url: jdbc:mysql://localhost:3306/mybatis_test?useSSL=false&
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
#MyBatis配置
mybatis:
type-aliases-package: com.mye.hl09mybatispagehelper.api.pojo #别名定义
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #指定 MyBatis 所用日志的具体实现,未指定时将自动查找
map-underscore-to-camel-case: true #开启自动驼峰命名规则(camel case)映射
lazy-loading-enabled: true #开启延时加载开关
aggressive-lazy-loading: false #将积极加载改为消极加载(即按需加载),默认值就是false
lazy-load-trigger-methods: "" #阻挡不相干的操作触发,实现懒加载
cache-enabled: true #打开全局缓存开关(二级环境),默认值就是true
#MyBatis使用pageHelper分页
pagehelper:
helper-dialect: mysql
reasonable: true
support-methods-arguments: true
配置说明:
helper-dialect:配置使用哪种数据库语言,不配置的话pageHelper也会自动检测。
reasonable:在启用合理化时,如果 pageNum<1,则会查询第一页;如果 pageNum>pages,则会查询最后一页。
support-methods-arguments:支持通过Mapper接口参数来传递分页参数,默认值false,分页插件会从查询方法的参数值中,自动根据上面 params 配置的字段中取值,查找到合适的值时就会自动分页。
package com.mye.hl09mybatispagehelper.api.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.stereotype.Component;
import java.util.Date;
@Component
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserInfo {
private int id; //用户编号
private String name; //用户姓名
private String province; //省份
private Date createTime; //注册时间
}
package com.mye.hl09mybatispagehelper.api.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserSearchParam {
private String name; //用户姓名
private String province; //省份
}
package com.mye.hl09mybatispagehelper.api.mapper;
import com.mye.hl09mybatispagehelper.api.pojo.UserInfo;
import com.mye.hl09mybatispagehelper.api.pojo.UserSearchParam;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.SelectProvider;
import org.apache.ibatis.jdbc.SQL;
import org.springframework.stereotype.Repository;
import java.util.List;
@Mapper
@Repository
public interface UserMapper {
/** * 查询用户列表 */
@SelectProvider(type = UserSqlBuilder.class, method = "searchUserList")
public List<UserInfo> searchUserList(UserSearchParam param);
//建议将SQL Builder以映射器接口内部类的形式进行定义
public class UserSqlBuilder {
public String searchUserList(UserSearchParam param) {
return new SQL() {
{
SELECT("*");
FROM("tb_teacher");
WHERE("1 = 1");
if(param!=null) {
//用户姓名
if(param.getName()!=null && param.getName().length()>0) {
WHERE("user_name like '%${userName}%'");
}
//省份
if(param.getProvince()!=null && param.getProvince().length()>0) {
WHERE("province = #{province}");
}
}
}
}.toString();
}
}
}
查询第2页的用户数据,每页10条数据,并根据创建时间排序
package com.mye.hl09mybatispagehelper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.mye.hl09mybatispagehelper.api.mapper.UserMapper;
import com.mye.hl09mybatispagehelper.api.pojo.UserInfo;
import com.mye.hl09mybatispagehelper.api.pojo.UserSearchParam;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.List;
@SpringBootTest(classes = Hl09MybatisPagehelperApplication.class)
@RunWith(SpringRunner.class)
public class Hl09MybatisPagehelperApplicationTests {
@Autowired
private UserMapper userMapper;
/** * 分页查询用户列表 * @author pan_junbiao */
@Test
public void searchUserByParam() {
int pageIndex = 2; ///获取第2页的数据
int pageSize = 10; //每页10条数据
String orderBy = "create_time ASC"; //排序
//分页信息
PageHelper.startPage(pageIndex, pageSize, orderBy);
//查询条件类
UserSearchParam userSearchParam = new UserSearchParam();
//执行分页查询
List<UserInfo> userInfos = userMapper.searchUserList(userSearchParam);
PageInfo<UserInfo> userInfoPage = new PageInfo<UserInfo>(userInfos);
//打印用户列表
System.out.println("\n");
List<UserInfo> userInfoList = userInfoPage.getList();
userInfoList.stream().forEach(System.out::println);
//打印分页信息
System.out.println("当前页码:第" + userInfoPage.getPageNum() + "页");
System.out.println("分页大小:每页" + userInfoPage.getPageSize() + "条");
System.out.println("数据总数:共" + userInfoPage.getTotal() + "条");
System.out.println("总页数:共" + userInfoPage.getPages() + "页");
}
}
PageInfo类提供的相关属性如下:
执行结果
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_43296313/article/details/120433253
内容来源于网络,如有侵权,请联系作者删除!