springboot整合mybatis和mycat

springboot整合mybatis和mycat


其实springboot通过mybatis整合mycat和mysql的配置基本相似,最大的坑就是mybatis的版本依赖问题。
下面直接上代码,本模块是springcloud下的一个子模块,模块中有关于eureka注册中心等配置信息,如果只是单纯的springboot项目,可以忽略eureka相关依赖以及配置信息,只关注mybatis和mycat的配置即可。


准备条件:
1.java环境搭建完成。
2.mycat安装配置完成:
具体可参考: https://blog.csdn.net/qq_37488998/article/details/110679222
schema表的配置如下:
在这里插入图片描述
rule.xml配置信息
在这里插入图片描述
server.xml配置信息:
在这里插入图片描述

3.用mycat添加一些数据,以租户表为例:
在这里插入图片描述

1.创建项目模块,目录结构如下
在这里插入图片描述
2.pom依赖
注意:mysql驱动,mycat使用的不能用过高的版本依赖,只能用5.*的版本。
博主开始用8. *,查询时候一直报错缺少一些东西。

<?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">
    <parent>
        <artifactId>demo</artifactId>
        <groupId>com.example</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>ideal-mycat-1016</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.73</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-commons</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <!-- mysql驱动,mycat使用的不能用高的依赖,只能用5.*,还不能高的小版本-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.31</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.0.1</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <!--可以用maven直接将代码打成jar包-->
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

3.yml配置文件

server:
  port: 1016

spring:
  main:
    allow-bean-definition-overriding: true
  application:
    name: IDEAL-MYCAT
  # Mycat配置信息
  datasource:
    url: jdbc:mysql://localhost:8066/TESTDB?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8
    username: root
    password: root
    # mybatis是依赖5.*的版本,所以相对于8.*的少个cj;
    driver-class-name: com.mysql.jdbc.Driver

# MyBatis
mybatis:
  type-aliases-package: com.demo.mycat.mapper
  mapper-locations: classpath:/mapper/*.xml
  configuration:
    map-underscore-to-camel-case: true
    
eureka:
  instance:
    prefer-ip-address: true # 注册服务的时候使用服务的ip地址
    hostname: mycat-service
  client:
    service-url:
      defaultZone: http://localhost:1001/eureka/
    # 是否注册自身到eureka服务器
    register-with-eureka: true
    fetch-registry: true
    

4.剩下的接口和mysql方法一致

package com.demo.mycat.controller;

import com.demo.mycat.dto.Result;
import com.demo.mycat.dto.Tenant;
import com.demo.mycat.mapper.TenantMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("/mycat")
@Slf4j
public class MycatController {
    
    

    @Autowired
    private TenantMapper tenantMapper;

    @GetMapping
    Result getTest(){
    
    
        List<Tenant> tenants = tenantMapper.queryAllTenant();
        if(null != tenants && !tenants.isEmpty()){
    
    
            return Result.ok(tenants);
        }
        return Result.ok("未查询到数据!");
    }
}
package com.demo.mycat.mapper;

import com.demo.mycat.dto.Tenant;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface TenantMapper {
    
    
    List<Tenant> queryAllTenant();
}
<?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.demo.mycat.mapper.TenantMapper">

    <select id="queryAllTenant" resultType="com.demo.mycat.dto.Tenant">
      SELECT id,tenant_id,tenant_name,phone from tenant
    </select>

</mapper>

5.测试结果
在这里插入图片描述
到此,整合mycat基本就完成了!
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_37488998/article/details/110895986