zoukankan      html  css  js  c++  java
  • 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;
    	
    	...
    }
  • 相关阅读:
    芯片光刻的流程详解
    中国半导体上市公司2018年的表现盘点:材料和设备篇
    中国半导体上市公司2018年的表现盘点:代工和封测篇
    spring-cloud-sleuth 和 分布式链路跟踪系统
    Jdk和Spring Boot版本选择
    mockplus 原型设计工具
    showdoc 文档管理系统
    禅道项目管理系统
    docker 基础知识分享ppt
    项目管理成功之要素-转载
  • 原文地址:https://www.cnblogs.com/zno2/p/14205108.html
Copyright © 2011-2022 走看看