spring boot 配置 mybatis 数据源

依赖,本例中用到了spring security user 相关接口,需要依赖 spring-boot-starter-security

<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>cn.zno</groupId>
    <artifactId>oauth2-jdbc-plugin</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.2</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.4</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context-support</artifactId>
                <version>5.2.2.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>5.2.2.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-parent</artifactId>
                <version>2.2.2.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.4</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
package cn.zno.oauth.jdbc;

import javax.sql.DataSource;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;

@Configuration
@MapperScan(basePackages= {"cn.zno.oauth.jdbc.mapper"})
public class MybatisConfig {
    @Bean(name = "oauth2DataSource")
    @ConfigurationProperties(prefix = "spring.datasource.oauth2")
    public DataSource getDataSource() {
        DataSource dataSource = DataSourceBuilder.create().build();
        return dataSource;
    }

    @Bean(name = "oauth2SqlSessionFactory")
    public SqlSessionFactory getSqlSessionFactory(@Qualifier("oauth2DataSource") DataSource dataSource)
            throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(dataSource);
        bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml"));// ①
        return bean.getObject();
    }

    @Bean(name = "oauth2TransactionManager")
    public DataSourceTransactionManager getDataSourceTransactionManager(
            @Qualifier("oauth2DataSource") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }

    @Bean(name = "oauth2SqlSessionTemplate")
    public SqlSessionTemplate getSqlSessionTemplate(
            @Qualifier("oauth2SqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
        return new SqlSessionTemplate(sqlSessionFactory);
    }
}

注:①处,mapper 目录必须存在。替换方式可以移除xml ,将sql 通过 @org.apache.ibatis.annotations.Select方式写入java类

@Select("select username,password,roles from oauth_user where username = #{username,jdbcType=VARCHAR}")
public User queryByUsername(@Param("username") String userName);

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.zno.oauth.jdbc.mapper.UserMapper">
    <select id="queryByUsername" resultType="cn.zno.oauth.jdbc.entity.User">
        select username,password,roles from oauth_user where username = #{username,jdbcType=VARCHAR}
    </select>
</mapper>

 application.properties

spring.datasource.oauth2.type = com.alibaba.druid.pool.DruidDataSource
spring.datasource.oauth2.driver-class-name = com.mysql.cj.jdbc.Driver
spring.datasource.oauth2.jdbc-url = jdbc:mysql://xxx.com:5934/oauth2db?useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai
spring.datasource.oauth2.username = yyy
spring.datasource.oauth2.password = zzz

使用:

@Configuration
@EnableAuthorizationServer
@Import(MybatisConfig.class)
public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter {
	
	@Autowired
	@Qualifier("oauth2DataSource")
	DataSource dataSource;
	
	...
}
原文地址:https://www.cnblogs.com/zno2/p/14205108.html