首页 > 开发 > Java > 正文

spring boot和mybatis集成分页插件

2024-07-13 10:07:03
字体:
来源:转载
供稿:网友

MyBatis提供了拦截器接口,我们可以实现自己的拦截器,将其作为一个plugin装入到SqlSessionFactory中。
首先要说的是,Spring在依赖注入bean的时候,会把所有实现MyBatis中Interceptor接口的所有类都注入到SqlSessionFactory中,作为plugin存在。既然如此,我们集成一个plugin便很简单了,只需要使用@Bean创建PageHelper对象即可。

1、添加pom依赖

<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>4.1.0</version></dependency>

2、MyBatisConfiguration.java类配置

package com.example.mybatis;import java.util.Properties;import javax.sql.DataSource;import org.apache.ibatis.plugin.Interceptor;import org.apache.ibatis.session.SqlSessionFactory;import org.mybatis.spring.SqlSessionFactoryBean;import org.mybatis.spring.SqlSessionTemplate;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.jdbc.datasource.DataSourceTransactionManager;import org.springframework.transaction.PlatformTransactionManager;import org.springframework.transaction.annotation.EnableTransactionManagement;import org.springframework.transaction.annotation.TransactionManagementConfigurer;import com.github.pagehelper.PageHelper;@Configuration//加上这个注解,使得支持事务@EnableTransactionManagementpublic class MyBatisConfig implements TransactionManagementConfigurer { @Autowired private DataSource dataSource;  @Override public PlatformTransactionManager annotationDrivenTransactionManager() {  return new DataSourceTransactionManager(dataSource); }  @Bean(name = "sqlSessionFactory") public SqlSessionFactory sqlSessionFactoryBean(PageHelper pageHelper) {  SqlSessionFactoryBean bean = new SqlSessionFactoryBean();  bean.setDataSource(dataSource);   //自定义数据库配置的时候,需要将pageHelper的bean注入到Plugins中,如果采用系统默认的数据库配置,则只需要定义pageHelper的bean,会自动注入。     bean.setPlugins(new Interceptor[] { pageHelper });  try {   return bean.getObject();  } catch (Exception e) {   e.printStackTrace();   throw new RuntimeException(e);  } } @Bean public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {  return new SqlSessionTemplate(sqlSessionFactory); }  @Bean public PageHelper pageHelper() {  PageHelper pageHelper = new PageHelper();  Properties p = new Properties();  p.setProperty("offsetAsPageNum", "true");  p.setProperty("rowBoundsWithCount", "true");  p.setProperty("reasonable", "true");  p.setProperty("dialect", "mysql");  pageHelper.setProperties(p);  return pageHelper; }}

3、分页查询测试

 @RequestMapping("/likename") public List<Student> likeName(@RequestParam String name){  PageHelper.startPage(1, 1);  return stuMapper.likeName(name); }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持VeVb武林网。


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表