Springboot集成使用mycat

12 篇文章 0 订阅
7 篇文章 0 订阅

数据库

1.数据使用mysql,版本为8.0.20,这里在docker上运行起来

docker run -d --name mysql \
-p 3306:3306 \
-v /opt/mysql/conf.d:/etc/mysql/conf.d \
-v /opt/mysql/data:/var/lib/mysql \
-v /opt/mysql/logs:/logs \
-v /etc/localtime:/etc/localtime:ro \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:8.0.20

2.创建三个数据库db1、db2、db3
在这里插入图片描述
3.三个数据库中分别建表

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>

5.复制高版本的mysql-connector-java到mycat安装目录
在这里插入图片描述

4.启动mycat

./bin/startup_nowrap.sh 

查看log是否启动成功:tail -f ./logs/mycat.log
在这里插入图片描述

SpringBoot代码

1.pom主要依赖

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter</artifactId>
 </dependency>
 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web</artifactId>
 </dependency>
 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-jdbc</artifactId>
 </dependency>
 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-actuator</artifactId>
 </dependency>
 <dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
     <version>8.0.20</version>
 </dependency>
 <dependency>
     <groupId>org.mybatis.spring.boot</groupId>
     <artifactId>mybatis-spring-boot-starter</artifactId>
     <version>1.3.2</version>
 </dependency>

2.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: 123456

3.User实体类

package com.wisea.tp.entity;

import org.apache.ibatis.type.Alias;

@Alias("User")
public class User {

    private Long id;

    private String name;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

4.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>

5.编写测试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表了。

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot与MyCat集成可以通过以下步骤实现: 1. 首先,在你的Spring Boot项目中添加MyCat的依赖。你可以在项目的pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>io.mycat</groupId> <artifactId>mycat-client</artifactId> <version>1.6.7.2</version> </dependency> ``` 2. 接下来,配置MyCat的连接信息。在你的application.properties或application.yml文件中添加以下配置: ``` spring.datasource.url=jdbc:mysql://mycat-server:8066/mycatdb?useUnicode=true&characterEncoding=utf-8 spring.datasource.username=mycat spring.datasource.password=mycat ``` 其中,`mycat-server`是你的MyCat服务器地址,`mycatdb`是你要连接的数据库名称,`mycat`是MyCat的用户名和密码。 3. 创建一个MyCatConfig类,用于配置MyCat代理。在这个类中,你需要创建一个DataSource对象,并将其设置为主数据源。 ```java @Configuration public class MyCatConfig { @Value("${spring.datasource.url}") private String url; @Value("${spring.datasource.username}") private String username; @Value("${spring.datasource.password}") private String password; @Bean public DataSource dataSource() { DruidDataSource dataSource = new DruidDataSource(); dataSource.setUrl(url); dataSource.setUsername(username); dataSource.setPassword(password); return dataSource; } @Primary @Bean(name = "myCatDataSource") public DataSourceProxy dataSourceProxy(DataSource dataSource) { return new DataSourceProxy(dataSource); } } ``` 4. 最后,在需要使用数据库的地方,注入`myCatDataSource`数据源,并使用它进行数据库操作。 ```java @Autowired @Qualifier("myCatDataSource") private DataSource dataSource; ``` 这样,你的Spring Boot项目就成功集成MyCat。请确保你的MyCat服务器已经正确配置,并且能够连接到底层的MySQL数据库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值