spring boot 添加数据源 整合 mybaties (三)

来源:互联网 发布:知乎 长青春痘 编辑:程序博客网 时间:2024/06/05 13:13

<1.手动>(该手动版本为第一次试验获取,凭记忆粘贴,可能有遗漏,因为此版本在添加 spring cloud eureka 依赖,报mapper找不到错误,所以更改为使用mybaties

 官网 给予整合包,搭建)

一 、整合数据源

1.添加jdbc配置文件 hmq-demo-server\src\main\resources\jdbc.properties

jdbc.driverClassName=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://127.0.0.1:3306/xxx?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=truejdbc.username=rootjdbc.password=123456
2.配置数据库驱动  com.heimeiqiu.config.DataSourceConfig

package com.heimeiqiu.config;import javax.sql.DataSource;import com.jolbox.bonecp.BoneCPDataSource;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.PropertySource;/** * Created by wxl on 2017/12/13. */@Configuration@PropertySource(value = { "classpath:jdbc.properties" }, ignoreResourceNotFound = true)public class DataSourceConfig {    @Value("${jdbc.url}")    private String jdbcUrl;    @Value("${jdbc.driverClassName}")    private String jdbcDriverClassName;    @Value("${jdbc.username}")    private String jdbcUsername;    @Value("${jdbc.password}")    private String jdbcPassword;    @Bean(destroyMethod = "close")    public DataSource dataSource() {        BoneCPDataSource boneCPDataSource = new BoneCPDataSource();        // 数据库驱动        boneCPDataSource.setDriverClass(jdbcDriverClassName);        // 相应驱动的jdbcUrl        boneCPDataSource.setJdbcUrl(jdbcUrl);        // 数据库的用户名        boneCPDataSource.setUsername(jdbcUsername);        // 数据库的密码        boneCPDataSource.setPassword(jdbcUsername);        // 检查数据库连接池中空闲连接的间隔时间,单位是分,默认值:240,如果要取消则设置为0        boneCPDataSource.setIdleConnectionTestPeriodInMinutes(60);        // 连接池中未使用的链接最大存活时间,单位是分,默认值:60,如果要永远存活设置为0        boneCPDataSource.setIdleMaxAgeInMinutes(30);        // 每个分区最大的连接数        boneCPDataSource.setMaxConnectionsPerPartition(100);        // 每个分区最小的连接数        boneCPDataSource.setMinConnectionsPerPartition(5);        return boneCPDataSource;    }}
2.添加banner  hmq-demo-server\src\main\resources\banner.txt

生成网址

http://patorjk.com/software/taag/#p=display&f=Fire%20Font-k&t=heimeiqiu%0A


3.修改数据源类 com.heimeiqiu.config.DataSourceConfig

package com.heimeiqiu.config;import javax.sql.DataSource;import org.springframework.beans.factory.annotation.Value;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;import org.springframework.boot.builder.SpringApplicationBuilder;import org.springframework.boot.web.support.SpringBootServletInitializer;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.PropertySource;import org.springframework.core.io.Resource;import org.springframework.core.io.support.PathMatchingResourcePatternResolver;import org.springframework.core.io.support.ResourcePatternResolver;/** * Created by wxl on 2017/12/13. * 数据源配置 */@Configuration //开启配置@PropertySource(value = { "classpath:jdbc.properties" }, ignoreResourceNotFound = true) //引入文件 读取配置@SpringBootApplicationpublic class DataSourceConfig extends SpringBootServletInitializer {    @Value("${jdbc.url}")    private String jdbcUrl;    @Value("${jdbc.driverClassName}")    private String jdbcDriverClassName;    @Value("${jdbc.username}")    private String jdbcUsername;    @Value("${jdbc.password}")    private String jdbcPassword;    @Bean(destroyMethod = "close")    public DataSource dataSource() {        BoneCPDataSource boneCPDataSource = new BoneCPDataSource();        // 数据库驱动        boneCPDataSource.setDriverClass(jdbcDriverClassName);        // 相应驱动的jdbcUrl        boneCPDataSource.setJdbcUrl(jdbcUrl);        // 数据库的用户名        boneCPDataSource.setUsername(jdbcUsername);        // 数据库的密码        boneCPDataSource.setPassword(jdbcUsername);        // 检查数据库连接池中空闲连接的间隔时间,单位是分,默认值:240,如果要取消则设置为0        boneCPDataSource.setIdleConnectionTestPeriodInMinutes(60);        // 连接池中未使用的链接最大存活时间,单位是分,默认值:60,如果要永远存活设置为0        boneCPDataSource.setIdleMaxAgeInMinutes(30);        // 每个分区最大的连接数        boneCPDataSource.setMaxConnectionsPerPartition(100);        // 每个分区最小的连接数        boneCPDataSource.setMinConnectionsPerPartition(5);        return boneCPDataSource;    }    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {        return builder.sources(DataSourceConfig.class);    }    @Bean    @ConditionalOnMissingBean //当容器里没有指定的Bean的情况下创建该对象    public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource) {        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();        // 设置数据源        sqlSessionFactoryBean.setDataSource(dataSource);        // 设置mybatis的主配置文件        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();        Resource mybatisConfigXml = resolver.getResource("classpath:mapper/mybatis-config.xml");        sqlSessionFactoryBean.setConfigLocation(mybatisConfigXml);        // 设置别名包        sqlSessionFactoryBean.setTypeAliasesPackage("com.heimeiqiu.entity");        return sqlSessionFactoryBean;    }}
4。开启mapper扫描,数据源加载后

com.heimeiqiu.config.DataSourceConfig

package com.heimeiqiu.config;import com.heimeiqiu.HmqDemoServerApplication;import org.springframework.boot.autoconfigure.AutoConfigureAfter;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configuration@AutoConfigureAfter(DataSourceConfig.class) //保证在MyBatisConfig实例化之后再实例化该类public class MapperScannerConfig {        // mapper接口的扫描器    @Bean    public MapperScannerConfigurer mapperScannerConfigurer() {        MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();        mapperScannerConfigurer.setBasePackage("com.heimeiqiu.dao.mapper");        return mapperScannerConfigurer;    }}

5.启动入口修改

//启动应用入口public static void main(String[] args) {   SpringApplication.run(HmqDemoServerApplication.class, args);}并在启动类上添加 注解 
@Configuration@SpringBootApplication  //开启自动化注解@ComponentScan(basePackages = "com.heimeiqiu")@MapperScan("com.heimeiqiu.dao.mapper")

6.添加依赖包

      <!-- MySql -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!-- 连接池 -->
        <dependency>
            <groupId>com.jolbox</groupId>
            <artifactId>bonecp-spring</artifactId>
            <version>0.8.0.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>

        <!-- Mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.2.8</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.2.2</version>
        </dependency>

     <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
        </dependency>


<2mybaties 官网配置方案>

1.将mybaties 依赖换为

<dependency>

    <groupId>org.mybatis.spring.boot</groupId>

    <artifactId>mybatis-spring-boot-starter</artifactId>

   <version>1.0.0</version>

</dependency>

2.修改数据库配置

#数据库设置spring.datasource.type=com.alibaba.druid.pool.DruidDataSourcespring.datasource.driverClassName=com.mysql.jdbc.Driverspring.datasource.url=jdbc:mysql://127.0.0.1:3306/hmqspring.datasource.username=rootspring.datasource.password=123456#--------------------------# 下面为连接池的补充设置,应用到上面所有数据源中# 初始化大小,最小,最大spring.datasource.initialSize=5spring.datasource.minIdle=5spring.datasource.maxActive=20# 配置获取连接等待超时的时间spring.datasource.maxWait=60000# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒spring.datasource.timeBetweenEvictionRunsMillis=60000# 配置一个连接在池中最小生存的时间,单位是毫秒spring.datasource.minEvictableIdleTimeMillis=300000spring.datasource.validationQuery=SELECT 1 FROM DUALspring.datasource.testWhileIdle=truespring.datasource.testOnBorrow=falsespring.datasource.testOnReturn=false# 打开PSCache,并且指定每个连接上PSCache的大小spring.datasource.poolPreparedStatements=truespring.datasource.maxPoolPreparedStatementPerConnectionSize=20# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙spring.datasource.filters=stat,wall,log4j# 通过connectProperties属性来打开mergeSql功能;慢SQL记录spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000# 合并多个DruidDataSource的监控数据#spring.datasource.useGlobalDataSourceStat=truemybatis.mapper-locations=classpath:mapper/*.xmlmybatis.type-aliases-package=com.heimeiqiu.entity






原创粉丝点击