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の統合は基本的に完了しています。