欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

spring boot和mybatis集成分页插件

程序员文章站 2024-02-28 23:19:28
mybatis提供了拦截器接口,我们可以实现自己的拦截器,将其作为一个plugin装入到sqlsessionfactory中。 首先要说的是,spring在依赖注入be...

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
//加上这个注解,使得支持事务
@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);
  }
 }

 @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);
 }

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