Springboot集成MyCat

一、创建三个数据库,三个数据库中都有一个User表

.三个数据库中分别建表

create table user
(
    id   bigint       not null  primary key,
    name varchar(255) null
);

二、配置MyCat服务

1.下载mycat
地址:http://dl.mycat.org.cn/1.6.7.4/Mycat-server-1.6.7.4-release/Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz

2.解压下载包,目录如下

3.修改主要配置文件schema.xml

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

	<schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100" randomDataNode="dn1">
		<table name="user" dataNode="dn1,dn2,dn3" rule="mod-long" splitTableNames ="false"/>
	</schema>

	<dataNode name="dn1" dataHost="localhost1" database="db1" />
	<dataNode name="dn2" dataHost="localhost1" database="db2" />
	<dataNode name="dn3" dataHost="localhost1" database="db3" />
	
	<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1"  slaveThreshold="100">
		<heartbeat>select user()</heartbeat>
		<!-- can have multi write hosts -->
		<writeHost host="hostM1" url="jdbc:mysql://localhost:3306" user="root" password="123456"></writeHost>
	</dataHost>
	
</mycat:schema>

规则: 

<schema>:表示的是在mycat中的逻辑库配置,逻辑库名称为:TESTDB
<table>:表示在mycat中的逻辑表配置,逻辑表名称为:user,映射到两个数据库节点dataNode中,切分规则为:rule1(在rule.xml配置)
<dataNode>:表示数据库节点,这个节点不一定是单节点,可以配置成读写分离.
<dataHost>:真实的数据库的地址配置
<heartbeat>:用户心跳检测
<writeHost>:写库的配置

复制高版本的mysql-connector-java到mycat安装目录

 

然后启动服务:

./bin/startup_nowrap.sh 

三、Springboot配置 

1、application.yml中配置数据源

mybatis:
  mapper-locations: classpath:mapping/*Mapper.xml
  type-aliases-package: com.wisea.tp.entity
spring:
  datasource:
    url: jdbc:mysql://192.168.29.128:8066/TESTDB
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: 

2、创建实体类,以操作数据库

package com.wisea.tp.entity;

import org.apache.ibatis.type.Alias;

@Alias("User")
@Date
public class User {
    private Long id;
    private String name;
}

3、编写Dao

package com.wisea.tp.mapper;
import com.wisea.tp.entity.User;
import java.util.List;
public interface UserMapper {
    List<User> findList();
    int insert(User user);
}
<?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="com.wisea.tp.mapper.UserMapper">
    <select id="findList" resultType="User">
        select * from user
    </select>
    <insert id="insert" parameterType="User">
        insert into user(ID,NAME)
        values (#{id},#{name})
    </insert>
</mapper>

4.编写Controller

package com.wisea.tp.controller;
import com.wisea.tp.entity.User;
import com.wisea.tp.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserMapper userMapper;
    @RequestMapping("/list")
    public List<User> list() {
        return userMapper.findList();
    }
    @RequestMapping("/add")
    public Integer add(User user) {
        return userMapper.insert(user);
    }
}

四、测试 

测试
插入数据:
http://lcoalhost:8080/user/add?id=1&name=jack
http://lcoalhost:8080/user/add?id=2&name=jerry
http://lcoalhost:8080/user/add?id=3&name=tom

多插入几条数据,可以发现数据分散到db1、db2、db3的user表了。


转载自:https://blog.csdn.net/chinoukin/article/details/107182491

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值