spring boot和mybatis集成分页插件

网友投稿 294 2023-05-21


spring boot和mybatis集成分页插件

MyBatis提供了拦截器接口,我们可以实现自己的拦截器,将其作为一个plugin装入到SqlSessionFactory中。

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

1、添加pom依赖

com.github.pagehelper

pagehelper

4.1.0

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

//加上这个注解,使得支持事务

@EnableTransactionManagement

public 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);

}

}

@BeanGrCpwIUYX

public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {

return new SqlSessionTemplate(sqlSessionFactory);

}

@Bean

public PageHelper pageHelper() {

PageHelper pageHelper = new PageHelper();

Properties p = new PropertiGrCpwIUYXes();

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 likeName(@RequestParam String name){

PageHelper.startPage(1, 1);

return stuMapper.likeName(name);

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Spring多种加载Bean方式解析
下一篇:Spring Boot的filter(过滤器)简单使用实例详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~