点一下关注吧!!!非常感谢!!持续更新!!!
大数据篇正在更新!https://blog.csdn.net/w776341482/category_12713819.html
目前已经更新到了:
- MyBatis(正在更新)
PageHelper
MyBatis 使用第三方插件对功能进行扩展,分页助手 PageHelper 是将分页的复杂操作进行封装,使用简单的方式即可获得分页的相关数据。PageHelper 是一个用于 MyBatis 或 MyBatis-Plus 的分页插件,它提供了简单易用的分页功能。它通过拦截 SQL 查询,在查询时自动添加分页条件,从而实现数据的分页查询。PageHelper 的主要优点是简单易用,并且可以兼容大部分的数据库和 MyBatis 版本。
基本功能
PageHelper 可以帮助我们在使用 MyBatis 时自动进行分页查询,避免手动编写复杂的分页逻辑。它通过拦截器的方式,在执行查询时动态地将分页参数传入 SQL 语句,并通过设置分页对象来获取分页结果。
工作原理
PageHelper 的核心功能是通过拦截器修改 SQL,添加分页的参数。它在查询执行前,会根据提供的分页参数修改原始的 SQL 查询,添加 LIMIT、OFFSET 等分页条件,然后返回分页结果。分页信息通过 Page 类提供,分页对象封装了总记录数、总页数等信息。
开发步骤
- 导入通用 PageHelper 的坐标
- 在 MyBatis 核心配置文件中配置 PageHelper 插件
- 测试分页数据获取
导入pom
<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>3.5.1</version>
</dependency>
插件配置
<plugin interceptor="com.github.pagehelper.PageHelper"><property name="dialect" value="mysql"/>
</plugin>
对应的截图如下所示:
代码实现
java">public class WzkicuPage01 {public static void main(String[] args) throws Exception {InputStream inputStream = Resources.getResourceAsStream("sqlMapConfig.xml");SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);SqlSession sqlSession = sqlSessionFactory.openSession();UserMapper userMapper = sqlSession.getMapper(UserMapper.class);PageHelper.startPage(2, 1);List<WzkUser> dataList = userMapper.findAll();for (WzkUser wzk : dataList) {System.out.println(wzk);}}
}
执行结果
对应的控制台输出结果如下:
WzkUser(id=2, username=wzk2, password=icu2, birthday=Mon Nov 11 00:00:00 CST 2024, orderList=null, roleList=null)
对应的截图如下所示:
配置 PageHelper
在 Spring 配置文件中配置 PageHelper 插件,通常是在 application.properties 或 application.yml 文件中:
pagehelper.helperDialect=mysql # 配置数据库方言,如 mysql、oracle、postgresql 等
pagehelper.reasonable=true # 启用合理化分页
pagehelper.supportMethodsArguments=true # 支持通过方法参数传递分页参数
PageInfo类
PageInfo 是 PageHelper 用于封装分页查询结果的一个重要类。它包含了分页相关的信息:
- getTotal():总记录数。
- getPages():总页数。
- getPageNum():当前页码。
- getPageSize():每页大小。
- getList():当前页的数据。
注意事项
- 在使用 PageHelper 时,分页查询必须放在调用 PageHelper.startPage() 之后,执行查询之前。
- 如果使用了 @Mapper 注解的 Mapper 接口,PageHelper 可以自动与 MyBatis 配合工作。
- 对于需要分页的查询,返回的结果必须是一个 List 类型,如果返回的是其他类型的数据结构,PageHelper 可能无法正确分页。
通用 mapper
简单介绍
通用 mapper 就是为了解决单表的增删改查,基于 MyBatis 的插件机制,开发人员不需要编写 SQL,不需要在 DAO 中增加方法,只要写好实体类,就可以有增删改查方法。
引入依赖
<dependency><groupId>tk.mybatis</groupId><artifactId>mapper</artifactId><version>3.5.1</version>
</dependency>
设置主键
我们需要在实体类上设置主键:
java">@Table(name = "wzk_user")
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class WzkUser implements Serializable {private int id;private String username;private String password;private Date birthday;private List<WzkOrder> orderList;private List<WzkRole> roleList;
}
对应的代码如下所示:
修改DAO
我们需要在 Mapper 上继承 Mapper:
java">public interface UserMapper extends Mapper<WzkUser> {// 省略之前的内容
}
编写代码
我们编写代码进行测试:
java">public class WzkMapper01 {public static void main(String[] args) throws Exception {InputStream inputStream = Resources.getResourceAsStream("sqlMapConfig.xml");SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);SqlSession sqlSession = sqlSessionFactory.openSession();MapperHelper mapperHelper = new MapperHelper();mapperHelper.registerMapper(UserMapper.class);mapperHelper.processConfiguration(sqlSession.getConfiguration());UserMapper userMapper = sqlSession.getMapper(UserMapper.class);List<WzkUser> dataList = userMapper.selectAll();for (WzkUser each : dataList) {System.out.println(each);}sqlSession.close();}
}
执行结果
测试运行之后,控制台输出的内容如下所示:
WzkUser(id=0, username=wzk2, password=icu2, birthday=Mon Nov 11 00:00:00 CST 2024, orderList=null, roleList=null)
对应的截图如下所示:
编写代码
这里简单说一下 Example 的用法:
java">public class WzkMapper02 {public static void main(String[] args) throws Exception {InputStream inputStream = Resources.getResourceAsStream("sqlMapConfig.xml");SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);SqlSession sqlSession = sqlSessionFactory.openSession();MapperHelper mapperHelper = new MapperHelper();mapperHelper.registerMapper(UserMapper.class);mapperHelper.processConfiguration(sqlSession.getConfiguration());UserMapper userMapper = sqlSession.getMapper(UserMapper.class);Example example = new Example(WzkUser.class);example.createCriteria().andEqualTo("username", "wzk2");List<WzkUser> dataList = userMapper.selectByExample(example);for (WzkUser each : dataList) {System.out.println(each);}sqlSession.close();}
}
执行结果
运行结果之后,控制台的输出结果如下所示:
WzkUser(id=0, username=wzk2, password=icu2, birthday=Mon Nov 11 00:00:00 CST 2024, orderList=null, roleList=null)
对应的截图如下所示: