当前位置:首页 > 后端开发 > 搭建 springboot 2.0 mybatis 读写分离 配置区分不同环境

搭建 springboot 2.0 mybatis 读写分离 配置区分不同环境

7个月前 (05-23)50

  最近公司打算使用springboot2.0, springboot支持HTTP/2,所以提前先搭建一下环境。网上很多都在springboot1.5实现的,所以还是有些差异的。接下来咱们一块看一下。

  文章的主要思路:

  1.工程的结构。

  2.重要代码说明。

  3.运行结果。

  4.总结。

  

  1) 我用的开发工具是Idea。工程的结构如下:

  搭建 springboot 2.0  mybatis 读写分离 配置区分不同环境 _ Java侠

工程结构的每个部分的说明: 

  config:  用于配置动态数据源的配置,同时使用切面实现数据库读写分离。同时使用ThreadLocal去维护当前线程该用读锁还是写锁。

  controller: 用于拦截请求,我在示例里边使用的是rest的请求拦截。

  entity: 与数据库对应的实体类。

  mapper: 与数据库数据库方法的对应

  service: 用于实现控制层到数据层的一个衔接,提供服务。

  还有一个启动入口类。  

  resources下面的mapper文件夹是数据库映射的xml文件。

  app-config.xml用于添加外部的bean等提前放置的xml文件。需要使用该类时需要加上注解:@ImportResource("classpath:app-config.xml")。

  application.yml是应用的配置文件。

  logback.xml用于日志输出配置。

  mybatis-config.xml用于mybatis的一些配置内容。

  Testinit.sql用于创建表使用的。

  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>com.hqs.demo</groupId>
    <artifactId>springboot-mybatis-rw</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>springboot2.0.1.RELEASE-mybatis-rw</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <logback.version>1.1.7</logback.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.6</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.4</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <!--热部署使用 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.jayway.jsonpath</groupId>
            <artifactId>json-path</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>${logback.version}</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>${logback.version}</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>

  2)  这块内容比较复杂的点应该就是读写库的切换:

    通过在DataSourceConfig.java里边读取主库从库:

   搭建 springboot 2.0  mybatis 读写分离 配置区分不同环境 _ Java侠

   使用Spring切面编程来拦截需要更改数据库的方法:

   搭建 springboot 2.0  mybatis 读写分离 配置区分不同环境 _ Java侠

  根据配置的方法放到配置文件,可以将需要读或写的方法放到application.yml文件中:

read: get,select,count,list,query,find
write: add,create,update,delete,remove,insert

  3)运行结果:

  读数据:

  搭建 springboot 2.0  mybatis 读写分离 配置区分不同环境 _ Java侠

  数据库采用read库

  搭建 springboot 2.0  mybatis 读写分离 配置区分不同环境 _ Java侠

  写数据:

  搭建 springboot 2.0  mybatis 读写分离 配置区分不同环境 _ Java侠

  使用写库:

  搭建 springboot 2.0  mybatis 读写分离 配置区分不同环境 _ Java侠

  4)总结:

   1. 通过搭建springboot简单了解到其原理,编写很容易,运行也方便。

    2. 在搭建的过程中也参考了很多资料,非常感谢,牛人还是很多的。

    3. 本来打算用最新的druid-spring-boot-starter 1.1.9,但是没找到太多的资料,所以没有用。

    4. 放上git地址供参考 https://github.com/stonehqs/springboot2.0.1.RELEASE-mybatis-rw

如果有不对的地方,还希望同学们给出意见和建议。

 

作者:黄青石
来源链接:https://www.cnblogs.com/huangqingshi/p/8847182.html

标签: MyBatis

“搭建 springboot 2.0 mybatis 读写分离 配置区分不同环境” 的相关文章

mybatis generator配置文件

<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configura...

springboot mybatis整合 yml配置

spring:   datasource:     url: jdbc:mysql://localhost:3306/xxxx?serverTi...

Mybatis精讲(一)---环境配置及架构梳理

Mybatis精讲(一)---环境配置及架构梳理

此文已独家授权给【新华前后端开发】使用。其他平台使用联系作者后再使用 目录 简介 ORM模型 Hib...

SpringBoot整合Mybatis配置与事物(5)

SpringBoot整合Mybatis配置与事物(5)

前提 SpringBoot整合Mybatis需要导入 jar 第一种 第二种 1:spring-boot-starter-x...

spring配置mybatis的sqlsessionfactory

https://www.cnblogs.com/feitianshaoxai/p/6605171.html   <!--读入配置文件 -->...

MyBatis的环境配置

MyBatis的环境配置

  一、拓展包 二、配置文件 mybatis-config.xml <?xml version="1.0" encod...

mybatis-配置

XML配置 导包 需要两个包,mybatis和jdbc驱动 <dependencies> <d...

mybatis的配置

MyBatis 框架 MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的...

挺详细的spring+springmvc+mybatis配置整合|含源代码

挺详细的spring+springmvc+mybatis配置整合|含源代码

大家好,我是雄雄,今天来带着大家来配置一下SSM(spring+springmvc+ mybatis)框架。 01 新建java...

MyBatis配置报错java.io.IOException: Could not find resource mybatis-conf.xml

MyBatis配置报错java.io.IOException: Could not find resource mybatis-conf.xml

参考:http://blog.csdn.net/u010648555/article/details/70880425 本人用的也是IDEA,maven搭建的...