• SpringBoot +MSSQL


    ____SpringBoot +MSSQL________________________________________________________________________________

    https://www.cnblogs.com/wang-yaz/p/9561188.html  ******************这篇最重要

    4.从事务管理器中选择一个事务,在方法上加@Transactional(value = "mysqlTransactionManager",rollbackFor = Exception.class)

    背景:原来一直都是使用mysql数据库,在application.properties 中配置数据库信息

    spring.datasource.url=jdbc:mysql://xxxx/test

    spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

    spring.datasource.driver-class-name=com.mysql.jdbc.Driver

    spring.datasource.username=xxx

    spring.datasource.password=xxx

    这样spring boot会自动化配置,我们用spring boot 约定的配置,现在由于业务的需要,另加一个数据源sqlServer。下面是具体步骤以及遇到的一系列问题。

    一、导入依赖
    复制代码
    1 pom.xml文件:
    2 <dependency>
    3    <groupId>com.microsoft.sqlserver</groupId>
    4    <artifactId>mssql-jdbc</artifactId>
    5    <version>6.4.0.jre8</version>
    6    <scope>runtime</scope>
    7 </dependency>
    复制代码
    二.在application.properties中配置
    复制代码
    1 spring.datasource.second.jdbc-url=jdbc:sqlserver://xxxxx:1433;DatabaseName=test
    2 spring.datasource.second.username=xxx
    3 spring.datasource.second.password=xxxx
    4 spring.datasource.second.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
    5 
    6 注意1:连接数据库的方式不一样,mysql是/test ,sqlServer是;DatabaseName=test
    7 spring.datasource.url=jdbc:mysql://xxxx/test  
    8 spring.datasource.second.jdbc-url=jdbc:sqlserver://xxxxx:1433;DatabaseName=test
    复制代码
    三.配置sqlServer数据源
    复制代码
     1 package com.ieou.qmt.common;
     2 import org.apache.ibatis.session.SqlSessionFactory;
     3 import org.mybatis.spring.SqlSessionFactoryBean;
     4 import org.springframework.beans.factory.annotation.Qualifier;
     5 import org.springframework.boot.context.properties.ConfigurationProperties;
     6 import org.springframework.boot.jdbc.DataSourceBuilder;
     7 import org.springframework.context.annotation.Bean;
     8 import org.springframework.context.annotation.Configuration;
     9 import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
    10 import org.springframework.core.io.support.ResourcePatternResolver;
    11 import org.springframework.jdbc.core.JdbcTemplate;
    12 import org.springframework.jdbc.datasource.DataSourceTransactionManager;
    13 import org.springframework.transaction.PlatformTransactionManager;
    14 import javax.sql.DataSource;
    15 
    16 @Configuration
    17 public class SqlServerDataSourceConfig {
    18 
    19     @Bean(name = "sqlServerDataSource")
    20     @Qualifier("sqlServerDataSource")
    21     @ConfigurationProperties(prefix="spring.datasource.second")
    22     public DataSource getMyDataSource(){
    23         return DataSourceBuilder.create().build();
    24     }
    25 
    26     @Bean(name = "secondaryJdbcTemplate")
    27     public JdbcTemplate secondaryJdbcTemplate(
    28             @Qualifier("sqlServerDataSource") DataSource dataSource) {
    29         return new JdbcTemplate(dataSource);
    30     }
    31 }
    复制代码

    总结:

    配置到这里就可以使用JdbcTemplate来操作sqlServer了,(mysql是spring boot的自动化配置,sqlServer是我们手动配置的)只要在类中注入即可
    例如:(JdbcTemplate 的用法自行百度)
    public class IEOUMallServiceImpl implements IEOUMallService{
    @Autowired
    @Qualifier("secondaryJdbcTemplate")
    protected JdbcTemplate jdbcTemplate2;
    }
    四.以上配置完成后在执行带有@Transactional 事务的接口时会发现报错:
    复制代码
    1 "org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 
    2 
    3 'org.springframework.transaction.PlatformTransactionManager' available
    	at 
    4 
    5 org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:347)
    	at 
    6 
    7 org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:334)
    	at 
    8 
    9 org.springframework.transaction.interceptor.TransactionAspectSupport.determineTransactionManage
    复制代码
    所以:我们必须手动分别配置mysql与sqlServer
    1.配置文件:application.properties 需要改为如下:
    复制代码
     1 spring.datasource.first.jdbc-url=jdbc:mysql://xxxx:3306/test
     2 (这里要是jdbc-url,不然会报jdbcUrl is required with driverClassName的错误)
     3 spring.datasource.first.type=com.alibaba.druid.pool.DruidDataSource
     4 spring.datasource.first.driver-class-name=com.mysql.jdbc.Driver
     5 spring.datasource.first.username=xxx
     6 spring.datasource.first.password=xxx
     7 
     8 spring.datasource.second.jdbc-url=jdbc:sqlserver://xxxx:1433;DatabaseName=test
     9 spring.datasource.second.username=xxx
    10 spring.datasource.second.password=xxx
    11 spring.datasource.second.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
    复制代码
    2.原来的SqlServerDataSourceConfig改为如下:
    复制代码
     1 package com.ieou.qmt.common;
     2 
     3 import org.apache.ibatis.session.SqlSessionFactory;
     4 import org.mybatis.spring.SqlSessionFactoryBean;
     5 import org.springframework.beans.factory.annotation.Qualifier;
     6 import org.springframework.boot.context.properties.ConfigurationProperties;
     7 import org.springframework.boot.jdbc.DataSourceBuilder;
     8 import org.springframework.context.annotation.Bean;
     9 import org.springframework.context.annotation.Configuration;
    10 import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
    11 import org.springframework.core.io.support.ResourcePatternResolver;
    12 import org.springframework.jdbc.core.JdbcTemplate;
    13 import org.springframework.jdbc.datasource.DataSourceTransactionManager;
    14 import org.springframework.transaction.PlatformTransactionManager;
    15 
    16 import javax.sql.DataSource;
    17 
    18 @Configuration
    19 public class SqlServerDataSourceConfig {
    20 
    21     private static final String MAPPER_PATH = "classpath:mybatis/mapping/mapper/*.xml";
    22 
    23     private static final String ENTITY_PACKAGE = "com.ieou.qmt.mapper";
    24 
    25     @Bean(name = "sqlServerDataSource")
    26     @Qualifier("sqlServerDataSource")
    27     @ConfigurationProperties(prefix="spring.datasource.second")
    28     public DataSource getMyDataSource(){
    29         return DataSourceBuilder.create().build();
    30     }
    31 
    32     @Bean(name = "secondaryJdbcTemplate")
    33     public JdbcTemplate secondaryJdbcTemplate(
    34             @Qualifier("sqlServerDataSource") DataSource dataSource) {
    35         return new JdbcTemplate(dataSource);
    36     }
    37 
    38     @Bean(name = "second.SqlSessionTemplate")
    39     public SqlSessionFactory devSqlSessionFactory(
    40             @Qualifier("sqlServerDataSource") DataSource ddataSource)
    41             throws Exception {
    42         final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
    43         sessionFactory.setDataSource(ddataSource);
    44         ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
    45         sessionFactory.setMapperLocations(resolver.getResources(MAPPER_PATH));
    46         sessionFactory.setTypeAliasesPackage(ENTITY_PACKAGE);
    47         return sessionFactory.getObject();
    48     }
    49 
    50     @Bean
    51     public PlatformTransactionManager sqlServerTransactionManager(@Qualifier("sqlServerDataSource") DataSource sqlServerDataSource)
    52     {
    53         return new DataSourceTransactionManager(sqlServerDataSource);
    54     }
    55 
    56 }
    复制代码
    3.新建mysql配置文件如下:
    复制代码
     1 package com.ieou.qmt.common;
     2 
     3 import org.apache.ibatis.session.SqlSessionFactory;
     4 import org.mybatis.spring.SqlSessionFactoryBean;
     5 import org.springframework.beans.factory.annotation.Qualifier;
     6 import org.springframework.boot.context.properties.ConfigurationProperties;
     7 import org.springframework.boot.jdbc.DataSourceBuilder;
     8 import org.springframework.context.annotation.Bean;
     9 import org.springframework.context.annotation.Configuration;
    10 import org.springframework.context.annotation.Primary;
    11 import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
    12 import org.springframework.core.io.support.ResourcePatternResolver;
    13 import org.springframework.jdbc.datasource.DataSourceTransactionManager;
    14 import org.springframework.transaction.PlatformTransactionManager;
    15 
    16 import javax.sql.DataSource;
    17 
    18 @Configuration
    19 public class MysqlDataSourceConfig {
    20 
    21     private static final String MAPPER_PATH = "classpath:mybatis/mapping/*.xml";
    22 
    23     private static final String ENTITY_PACKAGE = "com.ieou.qmt.mapper";
    24 
    25 
    26     @Bean(name = "dataSource")
    27     @Primary
    28     @Qualifier("dataSource")
    29     @ConfigurationProperties(prefix="spring.datasource.first")
    30     public DataSource getMyDataSource(){
    31         return DataSourceBuilder.create().build();
    32     }
    33 
    34     @Bean(name = "first.SqlSessionTemplate")
    35     @Primary
    36     public SqlSessionFactory devSqlSessionFactory(
    37             @Qualifier("dataSource") DataSource ddataSource)
    38             throws Exception {
    39         final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
    40         sessionFactory.setDataSource(ddataSource);
    41         ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
    42         sessionFactory.setMapperLocations(resolver.getResources(MAPPER_PATH));
    43         sessionFactory.setTypeAliasesPackage(ENTITY_PACKAGE);
    44         return sessionFactory.getObject();
    45     }
    46 
    47     @Bean
    48     @Primary
    49     public PlatformTransactionManager mysqlTransactionManager(@Qualifier("dataSource") DataSource mysqlDataSource)
    50     {
    51         return new DataSourceTransactionManager(mysqlDataSource);
    52     }
    53 }
    复制代码
    4.从事务管理器中选择一个事务,在方法上加@Transactional(value = "mysqlTransactionManager",rollbackFor = Exception.class)
     
    至此:配置完毕,如有不足或不对的地方,请补充。
    hello world!!!
     
    分类: spring boot

    _____________________________________________________________________________________________________

    https://www.cnblogs.com/memoryXudy/p/7767741.html

    基本项目框架搭建 sqlserver druid配置

     

      1.  我的连接池采用的是阿里云的druid的连接池,工具是IDEA 框架是springboot+maven

       以下是我的项目框架结构

      

     2. pom  中配置

    复制代码
    <?xml version="1.0" encoding="UTF-8"?>
    <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.xudy.sqlservice</groupId>
        <artifactId>StorageSqlService</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.5.4.RELEASE</version>
            <relativePath/>
        </parent>
    
        <dependencies>
    
    
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.0.25</version>
            </dependency>
            <dependency>
                <groupId>com.microsoft.sqlserver</groupId>
                <artifactId>sqljdbc4</artifactId>
                <version>4.0</version>
            </dependency>
            <!-- Spring Boot JDBC -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-jdbc</artifactId>
            </dependency>
    
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
        </dependencies>
    
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    
    </project>
    复制代码

    2. .properties 配置

    复制代码
    server.port=8011
    
    druid.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
    
    
    druid.url=jdbc:sqlserver://localhost:1433;DatabaseName=test
    druid.username=sa
    druid.password=123456
    复制代码

     3. SystemConfig 配置

    复制代码
    package cn.xudy.group.config;
    
    
    
    
    import com.alibaba.druid.pool.DruidDataSource;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.Primary;
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.stereotype.Component;
    import org.springframework.web.servlet.config.annotation.CorsRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
    
    import javax.sql.DataSource;
    
    /**
     * Created by Ulegal on 2017/8/19.
     */
    @Configuration
    public class SystemConfig {
    
    
                @Bean(name = "dataSource")
                @Qualifier(value = "dataSource")
                @Primary
                @ConfigurationProperties(prefix = "druid")
                public DataSource dataSource() {
                    return DataSourceBuilder.create().type(DruidDataSource.class).build();
    
                }
    
    
        /**
         * 跨域
         * @return
         */
        @Bean
        public WebMvcConfigurer corsConfigurer() {
            return new WebMvcConfigurerAdapter() {
                @Override
                public void addCorsMappings(CorsRegistry registry) {
                    registry.addMapping("/**");
                }
            };
        }
    
    }
    复制代码

    4. dao数据层测试

    复制代码
    @Repository
    public class StorageDaoImpl implements StorageDao{
    
        @Autowired
        JdbcTemplate jdbcTemplate;
    
        @Override
        public List<Map<String, Object>> getInfo() {
    
    
            // 传统方法
            List<Map<String,Object>> list = new ArrayList<Map<String, Object>>();
            String  sql  =   "SELECT * FROM " + "Table_1" +";";
            list = jdbcTemplate.queryForList(sql);
            System.out.println("-------------"+list);
    
            return list;
        }
    复制代码

       搞定

  • 相关阅读:
    Uva 10935 Throwing cards away I
    Uva 3226 Symmetry
    eclipse @ 注释为何一写就报错
    2015省赛小感想
    Zoj 3842 Beauty of Array
    fedora 设置命令别名
    Uva220 Othello
    工作小技巧积累
    SSL介绍与Java实例
    一个完整的SSL连接建立过程
  • 原文地址:https://www.cnblogs.com/kelelipeng/p/11290726.html
Copyright © 2020-2023  润新知