springbootはmybatisとmycatを統合します

springbootはmybatisとmycatを統合します


実際、mybatisを介してmycatとmysqlを統合するspringbootの構成は基本的に似ています。最大の落とし穴は、mybatisのバージョン依存性です。
コードは真上にあります。このモジュールはspringcloudの下のサブモジュールです。このモジュールには、eurekaレジストリに関する構成情報とその他の構成情報が含まれています。純粋なspringbootプロジェクトの場合は、eureka関連の依存関係と構成情報を無視して、 mybatisとmycat.canの構成。


準備条件:
1。Java環境がセットアップされます。
2. Mycatのインストールと構成が完了しました
。https

ここに画像の説明を挿入
//blog.csdn.net/qq_37488998/article/details/110679222を参照してください。スキーマテーブルの構成は次のとおりです。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