7.SpringBoot集成Mybatis

0.引入Maven依赖

       <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.21</version>
        </dependency>

1.jdbc.properties

jdbc.user=root
jdbc.password=root
jdbc.url=jdbc:mysql://12.8.0.100:3306/project_crowd?useUnicode=true&characterEncoding=UTF-8
jdbc.driver=com.mysql.cj.jdbc.Driver

2.DataSource配置

package org.jw.scw.Config.DB;

import com.alibaba.druid.pool.DruidDataSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

import javax.sql.DataSource;

@Configuration
@PropertySource("classpath:jdbc.properties")
public class DataSourceConfig {
    Logger logger = LoggerFactory.getLogger(this.getClass());
    @Value("${jdbc.url}")
    String url;
    @Value("${jdbc.driver}")
    String driver;
    @Value("${jdbc.user}")
    String username;
    @Value("${jdbc.password}")
    String password;


    /**
     * 配置 数据源
     * @return
     */
    @Bean(name = "dataSource")
    @ConfigurationProperties(prefix = "spring.datasource.druid")
    public DataSource dataSource(){
        DruidDataSource dataSource= new DruidDataSource();
        dataSource.setUrl(url);
        dataSource.setDriverClassName(driver);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        return dataSource;
    }
}

3.SqlSessionFactory配置

package org.jw.scw.Config.DB;

import com.github.pagehelper.PageInterceptor;
import org.apache.ibatis.plugin.Interceptor;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;

import javax.sql.DataSource;
import java.util.Properties;

@Configuration
public class SqlSessionFactoryConfig {
    @Autowired
    DataSource dataSource;

    /**
     * Mybatis分布插件
     * @return
     */
    public PageInterceptor initPageInterceptor(){
        PageInterceptor pageInterceptor= new PageInterceptor();
        Properties properties = new Properties();
        properties.setProperty("helperDialect", "mysql");
        properties.setProperty("offsetAsPageNum", "true");
        properties.setProperty("rowBoundsWithCount", "true");
        pageInterceptor.setProperties(properties);
        return pageInterceptor;
    }

    /**
     * 设置拦截器集合
     * @return
     */
    public Interceptor[] initInterceptor(){
        Interceptor[] interceptors=new Interceptor[] {initPageInterceptor()};
        return interceptors;
    }
    /**
     * 配置 sqlSessionFactory
     */
    @Bean
    public SqlSessionFactory sqlSessionFactory()throws Exception {
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSource);//数据源
        sqlSessionFactoryBean.setTypeAliasesPackage("org.jw.scw.Entity");//实体类
        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath:mybatis/mappers/*.xml"));//mapper.xml
        sqlSessionFactoryBean.setPlugins(initInterceptor());// 设置插件
        return sqlSessionFactoryBean.getObject();
    }
}

4.TransactionManager

package org.jw.scw.Config.DB;

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 javax.sql.DataSource;

@Configuration
public class DBTransactionConfig {
    @Autowired
    DataSource dataSource;
    /**
     * 事务
     * @return
     */
    @Bean("txManager")
    public PlatformTransactionManager txManager() {
        return new DataSourceTransactionManager(dataSource);
    }

}

5.整合PageHelper

package org.jw.scw.Config.DB;

import com.github.pagehelper.PageHelper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Properties;

@Configuration
public class PageHelperConfig {
    /**
     * 注册一个PageHelper实例
     * */
    @Bean("pageHelper")
    public PageHelper pageHelper(){
        return new PageHelper();
    }
}

6.MapperScan

package org.jw.scw.Config.DB;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInterceptor;
import org.apache.ibatis.plugin.Interceptor;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;

import javax.sql.DataSource;
import java.util.Properties;

@Configuration
public class SqlSessionFactoryConfig {
    @Autowired
    DataSource dataSource;

    /**
     * Mybatis分布插件
     * @return
     */
    public PageInterceptor initPageInterceptor(){
        PageInterceptor pageInterceptor = new PageInterceptor();
        Properties properties = new Properties();
        properties.setProperty("helperDialect", "mysql");
        properties.setProperty("offsetAsPageNum", "true");
        properties.setProperty("rowBoundsWithCount", "true");
        pageInterceptor.setProperties(properties);
        return pageInterceptor;
    }
    /**
     * 配置 sqlSessionFactory
     */
    @Bean
    public SqlSessionFactory sqlSessionFactory()throws Exception {
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSource);//数据源
        sqlSessionFactoryBean.setTypeAliasesPackage("org.jw.scw.Entity");//实体类
        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath:mybatis/mappers/*.xml"));//mapper.xml

        /**
         *  Mybatis设置插件
         * */
        PageInterceptor pageInterceptor = this.initPageInterceptor();
        sqlSessionFactoryBean.setPlugins(new Interceptor[] {pageInterceptor});


        return sqlSessionFactoryBean.getObject();
    }
}
posted @ 2020-07-30 14:08  jettwang  阅读(43)  评论(0)    收藏  举报