SpringBoot2.0之五 优雅整合SpringBoot2.0+MyBatis+druid+PageHelper

  上篇文章我们介绍了SpringBoot和MyBatis的整合,可以说非常简单快捷的就搭建了一个web项目,但是在一个真正的企业级项目中,可能我们还需要更多的更加完善的框架才能开始真正的开发,比如连接池、分页插件等。下面我们就来看看在SpringBoot中怎么快速的集成这些东西。

一、新建一个项目,引入相关依赖,加粗的是本项目中新引入的依赖


    
        org.springframework.boot
        spring-boot-starter-test
    
    
    
    
        org.springframework.boot
        spring-boot-starter-web
    
    
    
        org.mybatis.spring.boot
        mybatis-spring-boot-starter
        1.3.1
    
    
    
    
       com.alibaba
       druid
       1.1.8
   
   
    
    
    
        mysql
        mysql-connector-java
    
    
    
    
    
      com.github.pagehelper
      pagehelper
      5.1.2
   
   

二、为了项目配置的整洁性,在SpringBoot-mybatis的项目基础上,我将数据库和MyBatis的相关操作进行了统一配置,使得配置根据清晰简单,项目结构如下

SpringBoot2.0之五 优雅整合SpringBoot2.0+MyBatis+druid+PageHelper_第1张图片

后期项目会将所有的配置放在configuration包下,具体数据库配置如下

@Configuration
@MapperScan(value = "com.somta.springboot.dao")
public class MyBatisConfiguration {

    @Value("${spring.datasource.driver-class-name}")
    private String driverClassName;

    @Value("${spring.datasource.url}")
    private String url;

    @Value("${spring.datasource.username}")
    private String username;

    @Value("${spring.datasource.password}")
    private String password;

    @Bean
    public DruidDataSource dataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(this.driverClassName);
        dataSource.setUrl(this.url);
        dataSource.setUsername(this.username);
        dataSource.setPassword(this.password);

        dataSource.setInitialSize(5);
        dataSource.setMaxActive(30);
        dataSource.setMinIdle(5);
        dataSource.setMaxWait(60000);
        return dataSource;
    }

    @Bean(name="sqlSessionFactory")
    public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource) throws IOException {
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSource);
        sqlSessionFactoryBean.setConfigLocation(new ClassPathResource("mybatis-config.xml"));
        sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mybatis/**/Mysql_*Mapper.xml"));
        return sqlSessionFactoryBean;
    }
}

1、将Dao层扫描和MyBatis文件的扫描统一放在配置文件中

2、使用了阿里开源的Druid连接池,SpringBoot默认使用的连接池是Hikari,两者之间的优缺点后续将会单独介绍,配置成功后启动项目,我们可以看到项目当前使用的是那种连接池,如下图:
SpringBoot2.0之五 优雅整合SpringBoot2.0+MyBatis+druid+PageHelper_第2张图片

3、在src/main/resources下面新增了一个mybatis-config文件,该文件配置了MyBatis与数据库的相关信息,和PageHelper的相关配置,注意:(在不同的PageHelper版本中PageHelper的拦截器发生了变化,PageHelper-4.1.1中使用的是com.github.pagehelper.PageHelper,在PageHelper-5.1.2中使用的拦截器是com.github.pagehelper.PageInterceptor,具体小版本以官网公告为准)




    
        
    
    
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
          
          
    
    
        
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
        
    

三、PageHelper的使用方法

PageHelper.startPage(pageNum, pageSize)只作用离它最近的一个查询,更多与分页相关的信息我们都可以在page对象中拿到,完全可以满足各种情况下的分页查询。

@Test
public void testQueryUserList() throws Exception {
        int pageNum=1;
        int pageSize=10;
        Page page = PageHelper.startPage(pageNum, pageSize);
        userDao.queryUserList();
        System.out.println("总共条数:"+page.getTotal());
        for (User user : page.getResult()) {
            System.out.println(user.getName());
        }
    }

看到如图所示的输出表示分页插件配置成功了

SpringBoot2.0之五 优雅整合SpringBoot2.0+MyBatis+druid+PageHelper_第3张图片

Git代码地址:https://gitee.com/Somta/SpringBoot/tree/master/SpringBoot-mybatis-expand
原文地址:http://somta.com.cn/#/blog/view/ef507e4e6e28434d9787ec715d406491

转载于:https://www.cnblogs.com/somta/p/9189027.html

你可能感兴趣的:(SpringBoot2.0之五 优雅整合SpringBoot2.0+MyBatis+druid+PageHelper)