当前位置: 移动技术网 > IT编程>开发语言>Java > spring boot和mybatis集成分页插件

spring boot和mybatis集成分页插件

2019年07月22日  | 移动技术网IT编程  | 我要评论

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

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网