Skip to content

Commit a677873

Browse files
authoredMar 11, 2023
Merge pull request #32 from cloudAndMonkey/master
apijson 支持sql语句模版, 传递参数, 执行sql语句, 支持redis cluster、sentinel、single模式
2 parents 3489227 + 5fdf7e0 commit a677873

40 files changed

+7472
-0
lines changed
 

‎APIJSON-Java-Server/APIJSONDemo-MultiDataSource-Redis/README.md

+907
Large diffs are not rendered by default.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,196 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
3+
<modelVersion>4.0.0</modelVersion>
4+
<parent>
5+
<groupId>org.springframework.boot</groupId>
6+
<artifactId>spring-boot-starter-parent</artifactId>
7+
<version>2.5.13</version>
8+
<!-- <relativePath>./pom.xml</relativePath>-->
9+
</parent>
10+
<groupId>apijson.demo</groupId>
11+
<artifactId>apijsondemo-multidatasource-redis</artifactId>
12+
<version>6.0.0</version>
13+
14+
<name>apijsondemo-multidatasource-redis</name>
15+
<description>Demo project for testing APIJSON server based on SpringBoot</description>
16+
17+
<properties>
18+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
19+
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
20+
<commons-lang3.version>3.12.0</commons-lang3.version>
21+
<druid.version>1.1.16</druid.version>
22+
<mybatisplus.version>3.5.1</mybatisplus.version>
23+
<mybatis-plus-support.version>2.3.3</mybatis-plus-support.version>
24+
<commons-collections4.version>4.4</commons-collections4.version>
25+
<commons.configuration.version>1.10</commons.configuration.version>
26+
<guava.version>30.1.1-jre</guava.version>
27+
<fastjson.version>1.2.72</fastjson.version>
28+
<hutool.version>4.1.1</hutool.version>
29+
<lombok.version>1.18.4</lombok.version>
30+
<commons-lang3.version>3.12.0</commons-lang3.version>
31+
<commons.io.version>2.5</commons.io.version>
32+
<commons.codec.version>1.10</commons.codec.version>
33+
<commons-collections4.version>4.4</commons-collections4.version>
34+
<commons.configuration.version>1.10</commons.configuration.version>
35+
<apijson.version>6.0.0</apijson.version>
36+
<mysql.version>8.0.31</mysql.version>
37+
<spring-context-support.version>5.3.18</spring-context-support.version>
38+
<spring-boot-configuration-processor.version>2.6.6</spring-boot-configuration-processor.version>
39+
<dynamic-datasource-spring-boot-starter.version>3.5.2</dynamic-datasource-spring-boot-starter.version>
40+
<jedis.version>3.7.1</jedis.version>
41+
<java.version>1.8</java.version>
42+
</properties>
43+
44+
<dependencies>
45+
<!-- 需要的 APIJSON 相关依赖 -->
46+
<dependency>
47+
<groupId>com.github.Tencent</groupId>
48+
<artifactId>APIJSON</artifactId>
49+
<version>${apijson.version}</version>
50+
</dependency>
51+
<dependency>
52+
<groupId>com.github.APIJSON</groupId>
53+
<artifactId>apijson-framework</artifactId>
54+
<version>${apijson.version}</version>
55+
</dependency>
56+
57+
<!-- 需要用的数据库 JDBC 驱动 -->
58+
59+
<!-- Oracle, SQLServer 等其它数据库的 JDBC 驱动,可以在这里加上 Maven 依赖或 libs 目录放 Jar 包并依赖 -->
60+
61+
<!-- 需要用的 SpringBoot 框架,1.4.0 以上 -->
62+
<dependency>
63+
<groupId>org.springframework.boot</groupId>
64+
<artifactId>spring-boot-starter-web</artifactId>
65+
</dependency>
66+
<dependency>
67+
<groupId>org.springframework</groupId>
68+
<artifactId>spring-context-support</artifactId>
69+
<version>${spring-context-support.version}</version>
70+
</dependency>
71+
<dependency>
72+
<groupId>org.springframework.boot</groupId>
73+
<artifactId>spring-boot-configuration-processor</artifactId>
74+
<version>${spring-boot-configuration-processor.version}</version>
75+
<optional>true</optional>
76+
</dependency>
77+
<dependency>
78+
<groupId>com.alibaba</groupId>
79+
<artifactId>druid-spring-boot-starter</artifactId>
80+
<version>${druid.version}</version>
81+
</dependency>
82+
<dependency>
83+
<groupId>com.baomidou</groupId>
84+
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
85+
<version>${dynamic-datasource-spring-boot-starter.version}</version>
86+
</dependency>
87+
<dependency>
88+
<groupId>com.baomidou</groupId>
89+
<artifactId>mybatis-plus-boot-starter</artifactId>
90+
<version>${mybatisplus.version}</version>
91+
<exclusions>
92+
<exclusion>
93+
<groupId>com.baomidou</groupId>
94+
<artifactId>mybatis-plus-generator</artifactId>
95+
</exclusion>
96+
</exclusions>
97+
</dependency>
98+
<dependency>
99+
<groupId>com.baomidou</groupId>
100+
<artifactId>mybatis-plus-support</artifactId>
101+
<version>${mybatis-plus-support.version}</version>
102+
</dependency>
103+
<dependency>
104+
<groupId>org.apache.commons</groupId>
105+
<artifactId>commons-collections4</artifactId>
106+
<version>${commons-collections4.version}</version>
107+
</dependency>
108+
<dependency>
109+
<groupId>mysql</groupId>
110+
<artifactId>mysql-connector-java</artifactId>
111+
<version>${mysql.version}</version>
112+
</dependency>
113+
<dependency>
114+
<groupId>com.google.guava</groupId>
115+
<artifactId>guava</artifactId>
116+
<version>${guava.version}</version>
117+
</dependency>
118+
<dependency>
119+
<groupId>org.projectlombok</groupId>
120+
<artifactId>lombok</artifactId>
121+
<version>${lombok.version}</version>
122+
</dependency>
123+
<dependency>
124+
<groupId>commons-io</groupId>
125+
<artifactId>commons-io</artifactId>
126+
<version>${commons.io.version}</version>
127+
</dependency>
128+
<dependency>
129+
<groupId>commons-codec</groupId>
130+
<artifactId>commons-codec</artifactId>
131+
<version>${commons.codec.version}</version>
132+
</dependency>
133+
<dependency>
134+
<groupId>commons-configuration</groupId>
135+
<artifactId>commons-configuration</artifactId>
136+
<version>${commons.configuration.version}</version>
137+
</dependency>
138+
<dependency>
139+
<groupId>redis.clients</groupId>
140+
<artifactId>jedis</artifactId>
141+
<version>${jedis.version}</version>
142+
</dependency>
143+
</dependencies>
144+
145+
<build>
146+
<plugins>
147+
<plugin>
148+
<groupId>org.springframework.boot</groupId>
149+
<artifactId>spring-boot-maven-plugin</artifactId>
150+
<configuration>
151+
<fork>true</fork>
152+
<mainClass>apijson.demo.DemoApplication</mainClass>
153+
</configuration>
154+
<executions>
155+
<execution>
156+
<goals>
157+
<goal>repackage</goal>
158+
</goals>
159+
</execution>
160+
</executions>
161+
</plugin>
162+
<plugin>
163+
<groupId>org.apache.maven.plugins</groupId>
164+
<artifactId>maven-compiler-plugin</artifactId>
165+
<configuration>
166+
<source>1.8</source>
167+
<target>1.8</target>
168+
</configuration>
169+
</plugin>
170+
</plugins>
171+
</build>
172+
173+
<repositories>
174+
<!-- APIJSON 必须用到的托管平台 -->
175+
<repository>
176+
<id>jitpack.io</id>
177+
<url>https://jitpack.io</url>
178+
<snapshots>
179+
<enabled>true</enabled>
180+
</snapshots>
181+
</repository>
182+
183+
<repository>
184+
<id>spring-snapshots</id>
185+
<url>https://repo.spring.io/snapshot</url>
186+
<snapshots>
187+
<enabled>true</enabled>
188+
</snapshots>
189+
</repository>
190+
<repository>
191+
<id>spring-milestones</id>
192+
<url>https://repo.spring.io/milestone</url>
193+
</repository>
194+
</repositories>
195+
196+
</project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package apijson.demo;
2+
3+
import org.springframework.beans.factory.annotation.Value;
4+
import org.springframework.context.annotation.Configuration;
5+
6+
@Configuration
7+
public class DataBaseConfig {
8+
private String primary;
9+
10+
@Value("${spring.datasource.dynamic.primary}")
11+
public void setPrimary(String primary) {
12+
this.primary = primary;
13+
}
14+
15+
public String getPrimary() {
16+
return primary;
17+
}
18+
19+
public static DataBaseConfig getInstence() {
20+
return SpringContextUtils.getBean(DataBaseConfig.class);
21+
}
22+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package apijson.demo;
2+
3+
import org.springframework.beans.factory.annotation.Value;
4+
import org.springframework.context.annotation.Configuration;
5+
6+
@Configuration
7+
public class DataBaseUrlConfig {
8+
private String primary;
9+
10+
@Value("${spring.datasource.dynamic.primary}")
11+
public void setPrimary(String primary) {
12+
this.primary = primary;
13+
}
14+
15+
public String getPrimary() {
16+
return primary;
17+
}
18+
19+
public static DataBaseUrlConfig getInstence() {
20+
return SpringContextUtils.getBean(DataBaseUrlConfig.class);
21+
}
22+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package apijson.demo;
2+
3+
import java.util.regex.Matcher;
4+
import java.util.regex.Pattern;
5+
6+
import lombok.extern.log4j.Log4j2;
7+
8+
@Log4j2
9+
public class DataBaseUtil {
10+
11+
/**
12+
* 根据url获取库名
13+
* @param url
14+
* @return
15+
*/
16+
public static String getLibname(String url) {
17+
Pattern p = Pattern.compile("jdbc:(?<db>\\w+):.*((//)|@)(?<host>.+):(?<port>\\d+)(/|(;DatabaseName=)|:)(?<dbName>\\w+)\\??.*");
18+
Matcher m = p.matcher(url);
19+
if(m.find()) {
20+
return m.group("dbName");
21+
}
22+
return null;
23+
}
24+
25+
/***
26+
* primary: master
27+
* strict: false
28+
* @param datasource: 匹配不成功, 自动匹配默认数据库
29+
* @return
30+
*/
31+
public static javax.sql.DataSource getDataSource(String datasource) {
32+
try {
33+
return DynamicDataSource.getDetail(datasource).getDataSource(); // 数据源
34+
} catch (Exception e) {
35+
throw new IllegalArgumentException("动态数据源配置错误 " + datasource);
36+
}
37+
}
38+
39+
public static String getDruidUrl(String datasource) {
40+
return DynamicDataSource.getDetail(datasource).getUrl(); // 数据库连接url
41+
}
42+
43+
public static String getDruidSchema(String datasource) {
44+
return getLibname(DynamicDataSource.getDetail(datasource).getUrl()); // 数据库名;
45+
}
46+
47+
public static String getDruidDBAccount(String datasource) {
48+
return DynamicDataSource.getDetail(datasource).getDbAccount(); // 数据库用户名
49+
}
50+
51+
public static String getDruidDBPassword(String datasource) {
52+
return DynamicDataSource.getDetail(datasource).getDbPassword(); // 数据库密码
53+
}
54+
}

0 commit comments

Comments
 (0)
Please sign in to comment.