• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > 关于spring集成mybatis如何实现mysql数据库读写分离的实例分析

关于spring集成mybatis如何实现mysql数据库读写分离的实例分析

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了mybatis,spring,如何等相关知识,希望本文的分享对您有所帮助
本文通过实例代码给大家介绍了spring集成mybatis实现mysql数据库读写分离,需要的朋友可以参考下

前言

在网站的用户达到一定规模后,数据库因为负载压力过高而成为网站的瓶颈。幸运的是目前大部分的主流数据库都提供主从热备功能,通过配置两台数据库主从关系,可以将一台数据库的数据更新同步到另一台服务器上。网站利用数据库的这一功能,实现数据库读写分离,从而改善数据库负载压力。如下图所示:

  应用服务器在写数据的时候,访问主数据库,主数据库通过主从复制机制将数据更新同步到从数据库,这样当应用服务器读数据的时候,就可以通过从数据库获得数据。为了便于应用程序访问读写分离后的数据库,通常在应用服务器使用专门的数据库访问模块,使数据库读写分离对应用透明。

而本博客就是来实现“专门的数据库访问模块”,使数据库读写分离对应用透明。另外,mysql数据库的主从复制可以参考我的mysql5.7.18的安装与主从复制。注意,数据库实现了主从复制,才能做数据库的读写分离,所以,没有实现数据库主从复制的记得先去实现数据库的主从复制

配置读写数据源(主从数据库)

mysqldb.properties


#主数据库数据源
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://192.168.0.4:3306/mybatis?useUnicode=true&characterEncoding=utf-8&useSSL=false
jdbc.username=root
jdbc.password=123456
jdbc.initialSize=1
jdbc.minIdle=1
jdbc.maxActive=20
jdbc.maxWait=60000
jdbc.removeAbandoned=true
jdbc.removeAbandonedTimeout=180
jdbc.timeBetweenEvictionRunsMillis=60000
jdbc.minEvictableIdleTimeMillis=300000
jdbc.validationQuery=SELECT 1
jdbc.testWhileIdle=true
jdbc.testOnBorrow=false
jdbc.testOnReturn=false
#从数据库数据源
slave.jdbc.driverClassName=com.mysql.jdbc.Driver
slave.jdbc.url=jdbc:mysql://192.168.0.221:3306/mybatis?useUnicode=true&characterEncoding=utf-8&useSSL=false
slave.jdbc.username=root
slave.jdbc.password=123456
slave.jdbc.initialSize=1
slave.jdbc.minIdle=1
slave.jdbc.maxActive=20
slave.jdbc.maxWait=60000
slave.jdbc.removeAbandoned=true
slave.jdbc.removeAbandonedTimeout=180
slave.jdbc.timeBetweenEvictionRunsMillis=60000
slave.jdbc.minEvictableIdleTimeMillis=300000
slave.jdbc.validationQuery=SELECT 1
slave.jdbc.testWhileIdle=true
slave.jdbc.testOnBorrow=false
slave.jdbc.testOnReturn=false

    主、从数据库的地址记得改成自己的,账号和密码也需要改成自己的;其他配置项,大家可以酌情自行设置

mybatis-spring.xml


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
  xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
  xsi:schemaLocation="http://www.springframework.org/schema/beans 
   http://www.springframework.org/schema/beans/spring-beans.xsd
   http://www.springframework.org/schema/context
   http://www.springframework.org/schema/context/spring-context.xsd
   http://www.springframework.org/schema/aop
   http://www.springframework.org/schema/aop/spring-aop.xsd
   http://www.springframework.org/schema/tx 
   http://www.springframework.org/schema/tx/spring-tx.xsd">
  <!-- master数据源 -->
  <bean id="masterDataSource" class="com.alibaba.druid.pool.DruidDataSource">
    <!-- 基本属性 url、user、password --> 
    <property name="driverClassName" value="${jdbc.driverClassName}" /> 
    <property name="url" value="${jdbc.url}" /> 
    <property name="username" value="${jdbc.username}" /> 
    <property name="password" value="${jdbc.password}" /> 
    <property name="initialSize" value="${jdbc.initialSize}" /> 
    <property name="minIdle" value="${jdbc.minIdle}" />  
    <property name="maxActive" value="${jdbc.maxActive}" /> 
    <property name="maxWait" value="${jdbc.maxWait}" />
    <!-- 超过时间限制是否回收 -->
    <property name="removeAbandoned" value="${jdbc.removeAbandoned}" />
    <!-- 超过时间限制多长; -->
    <property name="removeAbandonedTimeout" value="${jdbc.removeAbandonedTimeout}" />
    <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
    <property name="timeBetweenEvictionRunsMillis" value="${jdbc.timeBetweenEvictionRunsMillis}" />
    <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
    <property name="minEvictableIdleTimeMillis" value="${jdbc.minEvictableIdleTimeMillis}" />
    <!-- 用来检测连接是否有效的sql,要求是一个查询语句-->
    <property name="validationQuery" value="${jdbc.validationQuery}" />
    <!-- 申请连接的时候检测 -->
    <property name="testWhileIdle" value="${jdbc.testWhileIdle}" />
    <!-- 申请连接时执行validationQuery检测连接是否有效,配置为true会降低性能 -->
    <property name="testOnBorrow" value="${jdbc.testOnBorrow}" />
    <!-- 归还连接时执行validationQuery检测连接是否有效,配置为true会降低性能 -->
    <property name="testOnReturn" value="${jdbc.testOnReturn}" />
  </bean>
  <!-- slave数据源 -->
  <bean id="slaveDataSource" class="com.alibaba.druid.pool.DruidDataSource">
    <property name="driverClassName" value="${slave.jdbc.driverClassName}" /> 
    <property name="url" value="${slave.jdbc.url}" /> 
    <property name="username" value="${slave.jdbc.username}" /> 
    <property name="password" value="${slave.jdbc.password}" /> 
    <property name="initialSize" value="${slave.jdbc.initialSize}" /> 
    <property name="minIdle" value="${slave.jdbc.minIdle}" />  
    <property name="maxActive" value="${slave.jdbc.maxActive}" /> 
    <property name="maxWait" value="${slave.jdbc.maxWait}" />
    <property name="removeAbandoned" value="${slave.jdbc.removeAbandoned}" />
    <property name="removeAbandonedTimeout" value="${slave.jdbc.removeAbandonedTimeout}" />
    <property name="timeBetweenEvictionRunsMillis" value="${slave.jdbc.timeBetweenEvictionRunsMillis}" />
    <property name="minEvictableIdleTimeMillis" value="${slave.jdbc.minEvictableIdleTimeMillis}" />
    <property name="validationQuery" value="${slave.jdbc.validationQuery}" />
    <property name="testWhileIdle" value="${slave.jdbc.testWhileIdle}" />
    <property name="testOnBorrow" value="${slave.jdbc.testOnBorrow}" />
    <property name="testOnReturn" value="${slave.jdbc.testOnReturn}" />
  </bean>
  <!-- 动态数据源,根据service接口上的注解来决定取哪个数据源 -->
  <bean id="dataSource" class="com.yzb.util.DynamicDataSource"> 
    <property name="targetDataSources">   
     <map key-type="java.lang.String">   
       <!-- write or slave -->  
       <entry key="slave" value-ref="slaveDataSource"/>   
       <!-- read or
  


 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 获取缺失主键表信息的MYSQL语句
  • MyBatis的逆向工程的解析及简单教程(附代码)
  • SQL 正则表达式及mybatis中使用正则表达式
  • mybatis属性详解
  • mybatis分页插件pageHelper实例详解
  • Oracle结合Mybatis实现取表的10条数据
  • MyBatis如何实现Mysql数据库分库分表的实例详解
  • 关于spring集成mybatis如何实现mysql数据库读写分离的实例分析
  • Mybatis中#{}和${}有什么区别
  • 通过Mybatis调用MySQL存储过程的实例详解

相关文章

  • 2018-12-05 漫谈数据挖掘从入门到进阶
  • 2017-05-11mysql 控制台操作
  • 2018-12-05MySQL查看、删除及重命名数据表(MYSQL数据表操作教程3)
  • 2018-12-05Linux下实现MySQL数据库自动备份的实例详解
  • 2018-12-05MySQL索引什么情况下创建
  • 2017-05-11MySQL 删除大表的性能问题解决方案
  • 2017-05-11Mysql 自动增加设定基值的语句
  • 2018-12-05MySQL自定义函数
  • 2018-12-05MySQL下将一个表的数据插入到另外一个表的实现语句
  • 2018-12-05mysql数据库使用Node.js实现连接功能的示例

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • 教你一个快速安装mysql的方法实例
    • 浅谈 管理用户 核心架构设计
    • 实例详解IOS 数据库升级数据迁移
    • 在安装sql2005中或安装后sa用户无法登陆系统解决方法
    • mysql日志文件在哪 如何修改MySQL日志文件位置
    • MYSQL的学习笔记
    • 浅谈 改善性能 核心架构设计
    • mysql正确安全清空在线慢查询日志slow log的流程分享
    • 搜索sql语句
    • sql注入实例以及如何防sql注入

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有