Selaa lähdekoodia

读写分离-demo

傅行帆 5 vuotta sitten
vanhempi
commit
31212c98db
24 muutettua tiedostoa jossa 1069 lisäystä ja 0 poistoa
  1. 31
    0
      separation/.gitignore
  2. 114
    0
      separation/.mvn/wrapper/MavenWrapperDownloader.java
  3. BIN
      separation/.mvn/wrapper/maven-wrapper.jar
  4. 1
    0
      separation/.mvn/wrapper/maven-wrapper.properties
  5. 286
    0
      separation/mvnw
  6. 161
    0
      separation/mvnw.cmd
  7. 80
    0
      separation/pom.xml
  8. 15
    0
      separation/src/main/java/com/fxf/separation/SeparationApplication.java
  9. 27
    0
      separation/src/main/java/com/fxf/separation/aop/DataSourceAop.java
  10. 34
    0
      separation/src/main/java/com/fxf/separation/bean/DBContextHolder.java
  11. 14
    0
      separation/src/main/java/com/fxf/separation/bean/MyRoutingDataSource.java
  12. 9
    0
      separation/src/main/java/com/fxf/separation/common/DBTypeEnum.java
  13. 26
    0
      separation/src/main/java/com/fxf/separation/config/AccessConfig.java
  14. 46
    0
      separation/src/main/java/com/fxf/separation/config/DataSourceConfig.java
  15. 37
    0
      separation/src/main/java/com/fxf/separation/config/MyBatisConfig.java
  16. 27
    0
      separation/src/main/java/com/fxf/separation/interceptor/AccessInterceptor.java
  17. 34
    0
      separation/src/main/java/com/fxf/separation/taUser/controller/TaUserController.java
  18. 22
    0
      separation/src/main/java/com/fxf/separation/taUser/dao/TaUserMapper.java
  19. 17
    0
      separation/src/main/java/com/fxf/separation/taUser/model/TaUser.java
  20. 11
    0
      separation/src/main/java/com/fxf/separation/taUser/service/TaUserServiceI.java
  21. 31
    0
      separation/src/main/java/com/fxf/separation/taUser/service/impl/TaUserServiceImpl.java
  22. 18
    0
      separation/src/main/resources/application.yml
  23. 12
    0
      separation/src/main/resources/mapper/TaUserMapper.xml
  24. 16
    0
      separation/src/test/java/com/fxf/separation/SeparationApplicationTests.java

+ 31
- 0
separation/.gitignore Näytä tiedosto

@@ -0,0 +1,31 @@
1
+HELP.md
2
+target/
3
+!.mvn/wrapper/maven-wrapper.jar
4
+!**/src/main/**
5
+!**/src/test/**
6
+
7
+### STS ###
8
+.apt_generated
9
+.classpath
10
+.factorypath
11
+.project
12
+.settings
13
+.springBeans
14
+.sts4-cache
15
+
16
+### IntelliJ IDEA ###
17
+.idea
18
+*.iws
19
+*.iml
20
+*.ipr
21
+
22
+### NetBeans ###
23
+/nbproject/private/
24
+/nbbuild/
25
+/dist/
26
+/nbdist/
27
+/.nb-gradle/
28
+build/
29
+
30
+### VS Code ###
31
+.vscode/

+ 114
- 0
separation/.mvn/wrapper/MavenWrapperDownloader.java Näytä tiedosto

@@ -0,0 +1,114 @@
1
+/*
2
+Licensed to the Apache Software Foundation (ASF) under one
3
+or more contributor license agreements.  See the NOTICE file
4
+distributed with this work for additional information
5
+regarding copyright ownership.  The ASF licenses this file
6
+to you under the Apache License, Version 2.0 (the
7
+"License"); you may not use this file except in compliance
8
+with the License.  You may obtain a copy of the License at
9
+
10
+  https://www.apache.org/licenses/LICENSE-2.0
11
+
12
+Unless required by applicable law or agreed to in writing,
13
+software distributed under the License is distributed on an
14
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+KIND, either express or implied.  See the License for the
16
+specific language governing permissions and limitations
17
+under the License.
18
+*/
19
+
20
+import java.io.File;
21
+import java.io.FileInputStream;
22
+import java.io.FileOutputStream;
23
+import java.io.IOException;
24
+import java.net.URL;
25
+import java.nio.channels.Channels;
26
+import java.nio.channels.ReadableByteChannel;
27
+import java.util.Properties;
28
+
29
+public class MavenWrapperDownloader {
30
+
31
+    /**
32
+     * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
33
+     */
34
+    private static final String DEFAULT_DOWNLOAD_URL =
35
+            "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar";
36
+
37
+    /**
38
+     * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
39
+     * use instead of the default one.
40
+     */
41
+    private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
42
+            ".mvn/wrapper/maven-wrapper.properties";
43
+
44
+    /**
45
+     * Path where the maven-wrapper.jar will be saved to.
46
+     */
47
+    private static final String MAVEN_WRAPPER_JAR_PATH =
48
+            ".mvn/wrapper/maven-wrapper.jar";
49
+
50
+    /**
51
+     * Name of the property which should be used to override the default download url for the wrapper.
52
+     */
53
+    private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
54
+
55
+    public static void main(String args[]) {
56
+        System.out.println("- Downloader started");
57
+        File baseDirectory = new File(args[0]);
58
+        System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
59
+
60
+        // If the maven-wrapper.properties exists, read it and check if it contains a custom
61
+        // wrapperUrl parameter.
62
+        File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
63
+        String url = DEFAULT_DOWNLOAD_URL;
64
+        if(mavenWrapperPropertyFile.exists()) {
65
+            FileInputStream mavenWrapperPropertyFileInputStream = null;
66
+            try {
67
+                mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
68
+                Properties mavenWrapperProperties = new Properties();
69
+                mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
70
+                url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
71
+            } catch (IOException e) {
72
+                System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
73
+            } finally {
74
+                try {
75
+                    if(mavenWrapperPropertyFileInputStream != null) {
76
+                        mavenWrapperPropertyFileInputStream.close();
77
+                    }
78
+                } catch (IOException e) {
79
+                    // Ignore ...
80
+                }
81
+            }
82
+        }
83
+        System.out.println("- Downloading from: : " + url);
84
+
85
+        File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
86
+        if(!outputFile.getParentFile().exists()) {
87
+            if(!outputFile.getParentFile().mkdirs()) {
88
+                System.out.println(
89
+                        "- ERROR creating output direcrory '" + outputFile.getParentFile().getAbsolutePath() + "'");
90
+            }
91
+        }
92
+        System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
93
+        try {
94
+            downloadFileFromURL(url, outputFile);
95
+            System.out.println("Done");
96
+            System.exit(0);
97
+        } catch (Throwable e) {
98
+            System.out.println("- Error downloading");
99
+            e.printStackTrace();
100
+            System.exit(1);
101
+        }
102
+    }
103
+
104
+    private static void downloadFileFromURL(String urlString, File destination) throws Exception {
105
+        URL website = new URL(urlString);
106
+        ReadableByteChannel rbc;
107
+        rbc = Channels.newChannel(website.openStream());
108
+        FileOutputStream fos = new FileOutputStream(destination);
109
+        fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
110
+        fos.close();
111
+        rbc.close();
112
+    }
113
+
114
+}

BIN
separation/.mvn/wrapper/maven-wrapper.jar Näytä tiedosto


+ 1
- 0
separation/.mvn/wrapper/maven-wrapper.properties Näytä tiedosto

@@ -0,0 +1 @@
1
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.0/apache-maven-3.6.0-bin.zip

+ 286
- 0
separation/mvnw Näytä tiedosto

@@ -0,0 +1,286 @@
1
+#!/bin/sh
2
+# ----------------------------------------------------------------------------
3
+# Licensed to the Apache Software Foundation (ASF) under one
4
+# or more contributor license agreements.  See the NOTICE file
5
+# distributed with this work for additional information
6
+# regarding copyright ownership.  The ASF licenses this file
7
+# to you under the Apache License, Version 2.0 (the
8
+# "License"); you may not use this file except in compliance
9
+# with the License.  You may obtain a copy of the License at
10
+#
11
+#    https://www.apache.org/licenses/LICENSE-2.0
12
+#
13
+# Unless required by applicable law or agreed to in writing,
14
+# software distributed under the License is distributed on an
15
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16
+# KIND, either express or implied.  See the License for the
17
+# specific language governing permissions and limitations
18
+# under the License.
19
+# ----------------------------------------------------------------------------
20
+
21
+# ----------------------------------------------------------------------------
22
+# Maven2 Start Up Batch script
23
+#
24
+# Required ENV vars:
25
+# ------------------
26
+#   JAVA_HOME - location of a JDK home dir
27
+#
28
+# Optional ENV vars
29
+# -----------------
30
+#   M2_HOME - location of maven2's installed home dir
31
+#   MAVEN_OPTS - parameters passed to the Java VM when running Maven
32
+#     e.g. to debug Maven itself, use
33
+#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
34
+#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files
35
+# ----------------------------------------------------------------------------
36
+
37
+if [ -z "$MAVEN_SKIP_RC" ] ; then
38
+
39
+  if [ -f /etc/mavenrc ] ; then
40
+    . /etc/mavenrc
41
+  fi
42
+
43
+  if [ -f "$HOME/.mavenrc" ] ; then
44
+    . "$HOME/.mavenrc"
45
+  fi
46
+
47
+fi
48
+
49
+# OS specific support.  $var _must_ be set to either true or false.
50
+cygwin=false;
51
+darwin=false;
52
+mingw=false
53
+case "`uname`" in
54
+  CYGWIN*) cygwin=true ;;
55
+  MINGW*) mingw=true;;
56
+  Darwin*) darwin=true
57
+    # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
58
+    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
59
+    if [ -z "$JAVA_HOME" ]; then
60
+      if [ -x "/usr/libexec/java_home" ]; then
61
+        export JAVA_HOME="`/usr/libexec/java_home`"
62
+      else
63
+        export JAVA_HOME="/Library/Java/Home"
64
+      fi
65
+    fi
66
+    ;;
67
+esac
68
+
69
+if [ -z "$JAVA_HOME" ] ; then
70
+  if [ -r /etc/gentoo-release ] ; then
71
+    JAVA_HOME=`java-config --jre-home`
72
+  fi
73
+fi
74
+
75
+if [ -z "$M2_HOME" ] ; then
76
+  ## resolve links - $0 may be a link to maven's home
77
+  PRG="$0"
78
+
79
+  # need this for relative symlinks
80
+  while [ -h "$PRG" ] ; do
81
+    ls=`ls -ld "$PRG"`
82
+    link=`expr "$ls" : '.*-> \(.*\)$'`
83
+    if expr "$link" : '/.*' > /dev/null; then
84
+      PRG="$link"
85
+    else
86
+      PRG="`dirname "$PRG"`/$link"
87
+    fi
88
+  done
89
+
90
+  saveddir=`pwd`
91
+
92
+  M2_HOME=`dirname "$PRG"`/..
93
+
94
+  # make it fully qualified
95
+  M2_HOME=`cd "$M2_HOME" && pwd`
96
+
97
+  cd "$saveddir"
98
+  # echo Using m2 at $M2_HOME
99
+fi
100
+
101
+# For Cygwin, ensure paths are in UNIX format before anything is touched
102
+if $cygwin ; then
103
+  [ -n "$M2_HOME" ] &&
104
+    M2_HOME=`cygpath --unix "$M2_HOME"`
105
+  [ -n "$JAVA_HOME" ] &&
106
+    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
107
+  [ -n "$CLASSPATH" ] &&
108
+    CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
109
+fi
110
+
111
+# For Mingw, ensure paths are in UNIX format before anything is touched
112
+if $mingw ; then
113
+  [ -n "$M2_HOME" ] &&
114
+    M2_HOME="`(cd "$M2_HOME"; pwd)`"
115
+  [ -n "$JAVA_HOME" ] &&
116
+    JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
117
+  # TODO classpath?
118
+fi
119
+
120
+if [ -z "$JAVA_HOME" ]; then
121
+  javaExecutable="`which javac`"
122
+  if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
123
+    # readlink(1) is not available as standard on Solaris 10.
124
+    readLink=`which readlink`
125
+    if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
126
+      if $darwin ; then
127
+        javaHome="`dirname \"$javaExecutable\"`"
128
+        javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
129
+      else
130
+        javaExecutable="`readlink -f \"$javaExecutable\"`"
131
+      fi
132
+      javaHome="`dirname \"$javaExecutable\"`"
133
+      javaHome=`expr "$javaHome" : '\(.*\)/bin'`
134
+      JAVA_HOME="$javaHome"
135
+      export JAVA_HOME
136
+    fi
137
+  fi
138
+fi
139
+
140
+if [ -z "$JAVACMD" ] ; then
141
+  if [ -n "$JAVA_HOME"  ] ; then
142
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
143
+      # IBM's JDK on AIX uses strange locations for the executables
144
+      JAVACMD="$JAVA_HOME/jre/sh/java"
145
+    else
146
+      JAVACMD="$JAVA_HOME/bin/java"
147
+    fi
148
+  else
149
+    JAVACMD="`which java`"
150
+  fi
151
+fi
152
+
153
+if [ ! -x "$JAVACMD" ] ; then
154
+  echo "Error: JAVA_HOME is not defined correctly." >&2
155
+  echo "  We cannot execute $JAVACMD" >&2
156
+  exit 1
157
+fi
158
+
159
+if [ -z "$JAVA_HOME" ] ; then
160
+  echo "Warning: JAVA_HOME environment variable is not set."
161
+fi
162
+
163
+CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
164
+
165
+# traverses directory structure from process work directory to filesystem root
166
+# first directory with .mvn subdirectory is considered project base directory
167
+find_maven_basedir() {
168
+
169
+  if [ -z "$1" ]
170
+  then
171
+    echo "Path not specified to find_maven_basedir"
172
+    return 1
173
+  fi
174
+
175
+  basedir="$1"
176
+  wdir="$1"
177
+  while [ "$wdir" != '/' ] ; do
178
+    if [ -d "$wdir"/.mvn ] ; then
179
+      basedir=$wdir
180
+      break
181
+    fi
182
+    # workaround for JBEAP-8937 (on Solaris 10/Sparc)
183
+    if [ -d "${wdir}" ]; then
184
+      wdir=`cd "$wdir/.."; pwd`
185
+    fi
186
+    # end of workaround
187
+  done
188
+  echo "${basedir}"
189
+}
190
+
191
+# concatenates all lines of a file
192
+concat_lines() {
193
+  if [ -f "$1" ]; then
194
+    echo "$(tr -s '\n' ' ' < "$1")"
195
+  fi
196
+}
197
+
198
+BASE_DIR=`find_maven_basedir "$(pwd)"`
199
+if [ -z "$BASE_DIR" ]; then
200
+  exit 1;
201
+fi
202
+
203
+##########################################################################################
204
+# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
205
+# This allows using the maven wrapper in projects that prohibit checking in binary data.
206
+##########################################################################################
207
+if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
208
+    if [ "$MVNW_VERBOSE" = true ]; then
209
+      echo "Found .mvn/wrapper/maven-wrapper.jar"
210
+    fi
211
+else
212
+    if [ "$MVNW_VERBOSE" = true ]; then
213
+      echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
214
+    fi
215
+    jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar"
216
+    while IFS="=" read key value; do
217
+      case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
218
+      esac
219
+    done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
220
+    if [ "$MVNW_VERBOSE" = true ]; then
221
+      echo "Downloading from: $jarUrl"
222
+    fi
223
+    wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
224
+
225
+    if command -v wget > /dev/null; then
226
+        if [ "$MVNW_VERBOSE" = true ]; then
227
+          echo "Found wget ... using wget"
228
+        fi
229
+        wget "$jarUrl" -O "$wrapperJarPath"
230
+    elif command -v curl > /dev/null; then
231
+        if [ "$MVNW_VERBOSE" = true ]; then
232
+          echo "Found curl ... using curl"
233
+        fi
234
+        curl -o "$wrapperJarPath" "$jarUrl"
235
+    else
236
+        if [ "$MVNW_VERBOSE" = true ]; then
237
+          echo "Falling back to using Java to download"
238
+        fi
239
+        javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
240
+        if [ -e "$javaClass" ]; then
241
+            if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
242
+                if [ "$MVNW_VERBOSE" = true ]; then
243
+                  echo " - Compiling MavenWrapperDownloader.java ..."
244
+                fi
245
+                # Compiling the Java class
246
+                ("$JAVA_HOME/bin/javac" "$javaClass")
247
+            fi
248
+            if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
249
+                # Running the downloader
250
+                if [ "$MVNW_VERBOSE" = true ]; then
251
+                  echo " - Running MavenWrapperDownloader.java ..."
252
+                fi
253
+                ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
254
+            fi
255
+        fi
256
+    fi
257
+fi
258
+##########################################################################################
259
+# End of extension
260
+##########################################################################################
261
+
262
+export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
263
+if [ "$MVNW_VERBOSE" = true ]; then
264
+  echo $MAVEN_PROJECTBASEDIR
265
+fi
266
+MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
267
+
268
+# For Cygwin, switch paths to Windows format before running java
269
+if $cygwin; then
270
+  [ -n "$M2_HOME" ] &&
271
+    M2_HOME=`cygpath --path --windows "$M2_HOME"`
272
+  [ -n "$JAVA_HOME" ] &&
273
+    JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
274
+  [ -n "$CLASSPATH" ] &&
275
+    CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
276
+  [ -n "$MAVEN_PROJECTBASEDIR" ] &&
277
+    MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
278
+fi
279
+
280
+WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
281
+
282
+exec "$JAVACMD" \
283
+  $MAVEN_OPTS \
284
+  -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
285
+  "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
286
+  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"

+ 161
- 0
separation/mvnw.cmd Näytä tiedosto

@@ -0,0 +1,161 @@
1
+@REM ----------------------------------------------------------------------------
2
+@REM Licensed to the Apache Software Foundation (ASF) under one
3
+@REM or more contributor license agreements.  See the NOTICE file
4
+@REM distributed with this work for additional information
5
+@REM regarding copyright ownership.  The ASF licenses this file
6
+@REM to you under the Apache License, Version 2.0 (the
7
+@REM "License"); you may not use this file except in compliance
8
+@REM with the License.  You may obtain a copy of the License at
9
+@REM
10
+@REM    https://www.apache.org/licenses/LICENSE-2.0
11
+@REM
12
+@REM Unless required by applicable law or agreed to in writing,
13
+@REM software distributed under the License is distributed on an
14
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+@REM KIND, either express or implied.  See the License for the
16
+@REM specific language governing permissions and limitations
17
+@REM under the License.
18
+@REM ----------------------------------------------------------------------------
19
+
20
+@REM ----------------------------------------------------------------------------
21
+@REM Maven2 Start Up Batch script
22
+@REM
23
+@REM Required ENV vars:
24
+@REM JAVA_HOME - location of a JDK home dir
25
+@REM
26
+@REM Optional ENV vars
27
+@REM M2_HOME - location of maven2's installed home dir
28
+@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
29
+@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending
30
+@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
31
+@REM     e.g. to debug Maven itself, use
32
+@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
33
+@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
34
+@REM ----------------------------------------------------------------------------
35
+
36
+@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
37
+@echo off
38
+@REM set title of command window
39
+title %0
40
+@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on'
41
+@if "%MAVEN_BATCH_ECHO%" == "on"  echo %MAVEN_BATCH_ECHO%
42
+
43
+@REM set %HOME% to equivalent of $HOME
44
+if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
45
+
46
+@REM Execute a user defined script before this one
47
+if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
48
+@REM check for pre script, once with legacy .bat ending and once with .cmd ending
49
+if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
50
+if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
51
+:skipRcPre
52
+
53
+@setlocal
54
+
55
+set ERROR_CODE=0
56
+
57
+@REM To isolate internal variables from possible post scripts, we use another setlocal
58
+@setlocal
59
+
60
+@REM ==== START VALIDATION ====
61
+if not "%JAVA_HOME%" == "" goto OkJHome
62
+
63
+echo.
64
+echo Error: JAVA_HOME not found in your environment. >&2
65
+echo Please set the JAVA_HOME variable in your environment to match the >&2
66
+echo location of your Java installation. >&2
67
+echo.
68
+goto error
69
+
70
+:OkJHome
71
+if exist "%JAVA_HOME%\bin\java.exe" goto init
72
+
73
+echo.
74
+echo Error: JAVA_HOME is set to an invalid directory. >&2
75
+echo JAVA_HOME = "%JAVA_HOME%" >&2
76
+echo Please set the JAVA_HOME variable in your environment to match the >&2
77
+echo location of your Java installation. >&2
78
+echo.
79
+goto error
80
+
81
+@REM ==== END VALIDATION ====
82
+
83
+:init
84
+
85
+@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
86
+@REM Fallback to current working directory if not found.
87
+
88
+set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
89
+IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
90
+
91
+set EXEC_DIR=%CD%
92
+set WDIR=%EXEC_DIR%
93
+:findBaseDir
94
+IF EXIST "%WDIR%"\.mvn goto baseDirFound
95
+cd ..
96
+IF "%WDIR%"=="%CD%" goto baseDirNotFound
97
+set WDIR=%CD%
98
+goto findBaseDir
99
+
100
+:baseDirFound
101
+set MAVEN_PROJECTBASEDIR=%WDIR%
102
+cd "%EXEC_DIR%"
103
+goto endDetectBaseDir
104
+
105
+:baseDirNotFound
106
+set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
107
+cd "%EXEC_DIR%"
108
+
109
+:endDetectBaseDir
110
+
111
+IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
112
+
113
+@setlocal EnableExtensions EnableDelayedExpansion
114
+for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
115
+@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
116
+
117
+:endReadAdditionalConfig
118
+
119
+SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
120
+set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
121
+set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
122
+
123
+set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar"
124
+FOR /F "tokens=1,2 delims==" %%A IN (%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties) DO (
125
+	IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B 
126
+)
127
+
128
+@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
129
+@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
130
+if exist %WRAPPER_JAR% (
131
+    echo Found %WRAPPER_JAR%
132
+) else (
133
+    echo Couldn't find %WRAPPER_JAR%, downloading it ...
134
+	echo Downloading from: %DOWNLOAD_URL%
135
+    powershell -Command "(New-Object Net.WebClient).DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"
136
+    echo Finished downloading %WRAPPER_JAR%
137
+)
138
+@REM End of extension
139
+
140
+%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
141
+if ERRORLEVEL 1 goto error
142
+goto end
143
+
144
+:error
145
+set ERROR_CODE=1
146
+
147
+:end
148
+@endlocal & set ERROR_CODE=%ERROR_CODE%
149
+
150
+if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
151
+@REM check for post script, once with legacy .bat ending and once with .cmd ending
152
+if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
153
+if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
154
+:skipRcPost
155
+
156
+@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
157
+if "%MAVEN_BATCH_PAUSE%" == "on" pause
158
+
159
+if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
160
+
161
+exit /B %ERROR_CODE%

+ 80
- 0
separation/pom.xml Näytä tiedosto

@@ -0,0 +1,80 @@
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"
3
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
4
+	<modelVersion>4.0.0</modelVersion>
5
+	<parent>
6
+		<groupId>org.springframework.boot</groupId>
7
+		<artifactId>spring-boot-starter-parent</artifactId>
8
+		<version>2.1.9.RELEASE</version>
9
+		<relativePath/> <!-- lookup parent from repository -->
10
+	</parent>
11
+	<groupId>com.fxf</groupId>
12
+	<artifactId>separation</artifactId>
13
+	<version>0.0.1-SNAPSHOT</version>
14
+	<name>separation</name>
15
+	<description>Demo project for Spring Boot</description>
16
+
17
+	<properties>
18
+		<java.version>11</java.version>
19
+	</properties>
20
+
21
+	<dependencies>
22
+		<dependency>
23
+			<groupId>org.springframework.boot</groupId>
24
+			<artifactId>spring-boot-starter</artifactId>
25
+		</dependency>
26
+		<dependency>
27
+			<groupId>org.springframework.boot</groupId>
28
+			<artifactId>spring-boot-starter-aop</artifactId>
29
+		</dependency>
30
+		<dependency>
31
+			<groupId>org.mybatis.spring.boot</groupId>
32
+			<artifactId>mybatis-spring-boot-starter</artifactId>
33
+			<version>2.1.0</version>
34
+		</dependency>
35
+
36
+		<dependency>
37
+			<groupId>org.springframework.boot</groupId>
38
+			<artifactId>spring-boot-devtools</artifactId>
39
+			<scope>runtime</scope>
40
+			<optional>true</optional>
41
+		</dependency>
42
+		<dependency>
43
+			<groupId>mysql</groupId>
44
+			<artifactId>mysql-connector-java</artifactId>
45
+			<scope>runtime</scope>
46
+		</dependency>
47
+		<dependency>
48
+			<groupId>org.projectlombok</groupId>
49
+			<artifactId>lombok</artifactId>
50
+			<optional>true</optional>
51
+		</dependency>
52
+		<dependency>
53
+			<groupId>org.springframework.boot</groupId>
54
+			<artifactId>spring-boot-starter-test</artifactId>
55
+			<scope>test</scope>
56
+		</dependency>
57
+		<dependency>
58
+			<groupId>org.springframework.boot</groupId>
59
+			<artifactId>spring-boot-starter-web</artifactId>
60
+			<version>RELEASE</version>
61
+			<scope>compile</scope>
62
+		</dependency>
63
+		<dependency>
64
+			<groupId>org.springframework.boot</groupId>
65
+			<artifactId>spring-boot-starter-web</artifactId>
66
+			<version>RELEASE</version>
67
+			<scope>compile</scope>
68
+		</dependency>
69
+	</dependencies>
70
+
71
+	<build>
72
+		<plugins>
73
+			<plugin>
74
+				<groupId>org.springframework.boot</groupId>
75
+				<artifactId>spring-boot-maven-plugin</artifactId>
76
+			</plugin>
77
+		</plugins>
78
+	</build>
79
+
80
+</project>

+ 15
- 0
separation/src/main/java/com/fxf/separation/SeparationApplication.java Näytä tiedosto

@@ -0,0 +1,15 @@
1
+package com.fxf.separation;
2
+
3
+import org.mybatis.spring.annotation.MapperScan;
4
+import org.springframework.boot.SpringApplication;
5
+import org.springframework.boot.autoconfigure.SpringBootApplication;
6
+
7
+@SpringBootApplication
8
+@MapperScan("com.fxf.separation.*.dao")
9
+public class SeparationApplication {
10
+
11
+	public static void main(String[] args) {
12
+		SpringApplication.run(SeparationApplication.class, args);
13
+	}
14
+
15
+}

+ 27
- 0
separation/src/main/java/com/fxf/separation/aop/DataSourceAop.java Näytä tiedosto

@@ -0,0 +1,27 @@
1
+package com.fxf.separation.aop;
2
+
3
+import com.fxf.separation.bean.DBContextHolder;
4
+import org.aspectj.lang.JoinPoint;
5
+import org.aspectj.lang.annotation.Aspect;
6
+import org.aspectj.lang.annotation.Before;
7
+import org.springframework.stereotype.Component;
8
+
9
+/**
10
+ * AOP切换数据源 和拦截器一起使用 为了更复杂的扩展情况以后使用
11
+ * @author FXF
12
+ * @date 2019-10-14
13
+ */
14
+//@Aspect
15
+//@Component
16
+public class DataSourceAop {
17
+	//@Before("execution(* com.fxf.separation.*.service.impl.*.*(..))")
18
+    //public void before(JoinPoint jp) {
19
+    //    String methodName = jp.getSignature().getName();
20
+	//	System.out.println(methodName);
21
+    //    if (methodName.equals("getList")) {
22
+    //        DBContextHolder.slave();
23
+    //    }else {
24
+    //        DBContextHolder.master();
25
+    //    }
26
+    //}
27
+}

+ 34
- 0
separation/src/main/java/com/fxf/separation/bean/DBContextHolder.java Näytä tiedosto

@@ -0,0 +1,34 @@
1
+package com.fxf.separation.bean;
2
+
3
+import com.fxf.separation.common.DBTypeEnum;
4
+
5
+import java.util.concurrent.atomic.AtomicInteger;
6
+
7
+/**
8
+ * @author FXF
9
+ * @date 2019-10-14
10
+ */
11
+public class DBContextHolder {
12
+	private static final ThreadLocal<DBTypeEnum> contextHolder = new ThreadLocal<>();
13
+	
14
+	private static final AtomicInteger counter = new AtomicInteger(-1);
15
+	
16
+	public static void set(DBTypeEnum dbType) {
17
+		contextHolder.set(dbType);
18
+	}
19
+	
20
+	public static DBTypeEnum get() {
21
+		return contextHolder.get();
22
+	}
23
+	
24
+	public static void master() {
25
+		set(DBTypeEnum.MASTER);
26
+		System.out.println("切换到master");
27
+	}
28
+	
29
+	public static void slave() {
30
+		set(DBTypeEnum.SLAVE1);
31
+		System.out.println("切换到slave1");
32
+	}
33
+	
34
+}

+ 14
- 0
separation/src/main/java/com/fxf/separation/bean/MyRoutingDataSource.java Näytä tiedosto

@@ -0,0 +1,14 @@
1
+package com.fxf.separation.bean;
2
+
3
+import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
4
+
5
+/**
6
+ * @author FXF
7
+ * @date 2019-10-14
8
+ */
9
+public class MyRoutingDataSource extends AbstractRoutingDataSource {
10
+	@Override
11
+	protected Object determineCurrentLookupKey() {
12
+		return DBContextHolder.get();
13
+	}
14
+}

+ 9
- 0
separation/src/main/java/com/fxf/separation/common/DBTypeEnum.java Näytä tiedosto

@@ -0,0 +1,9 @@
1
+package com.fxf.separation.common;
2
+
3
+/**
4
+ * @author FXF
5
+ * @date 2019-10-14
6
+ */
7
+public enum DBTypeEnum {
8
+	MASTER, SLAVE1;
9
+}

+ 26
- 0
separation/src/main/java/com/fxf/separation/config/AccessConfig.java Näytä tiedosto

@@ -0,0 +1,26 @@
1
+package com.fxf.separation.config;
2
+
3
+import com.fxf.separation.interceptor.AccessInterceptor;
4
+import org.springframework.context.annotation.Configuration;
5
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
6
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
7
+
8
+import javax.annotation.Resource;
9
+
10
+/**
11
+ * @author FXF
12
+ * @date 2019-02-22
13
+ */
14
+@Configuration
15
+public class AccessConfig implements WebMvcConfigurer {
16
+
17
+	@Resource
18
+	private AccessInterceptor accessInterceptor;
19
+
20
+	@Override
21
+	public void addInterceptors(InterceptorRegistry registry) {
22
+		// 自定义拦截器,添加拦截路径和排除拦截路径
23
+		registry.addInterceptor(accessInterceptor).addPathPatterns("/**");
24
+	}
25
+	
26
+}

+ 46
- 0
separation/src/main/java/com/fxf/separation/config/DataSourceConfig.java Näytä tiedosto

@@ -0,0 +1,46 @@
1
+package com.fxf.separation.config;
2
+
3
+import com.fxf.separation.bean.MyRoutingDataSource;
4
+import com.fxf.separation.common.DBTypeEnum;
5
+import org.springframework.beans.factory.annotation.Qualifier;
6
+import org.springframework.boot.context.properties.ConfigurationProperties;
7
+import org.springframework.boot.jdbc.DataSourceBuilder;
8
+import org.springframework.context.annotation.Bean;
9
+import org.springframework.context.annotation.Configuration;
10
+
11
+import javax.sql.DataSource;
12
+import java.util.HashMap;
13
+import java.util.Map;
14
+
15
+/**
16
+ * @author FXF
17
+ * @date 2019-10-14
18
+ */
19
+@Configuration
20
+public class DataSourceConfig {
21
+	
22
+	@Bean
23
+	@ConfigurationProperties("spring.datasource.master")
24
+	public DataSource masterDataSource() {
25
+		return DataSourceBuilder.create().build();
26
+	}
27
+	
28
+	@Bean
29
+	@ConfigurationProperties("spring.datasource.slave1")
30
+	public DataSource slave1DataSource() {
31
+		return DataSourceBuilder.create().build();
32
+	}
33
+	
34
+	@Bean
35
+	public DataSource myRoutingDataSource(@Qualifier("masterDataSource") DataSource masterDataSource,
36
+	                                      @Qualifier("slave1DataSource") DataSource slave1DataSource) {
37
+		Map<Object, Object> targetDataSources = new HashMap<>();
38
+		targetDataSources.put(DBTypeEnum.MASTER, masterDataSource);
39
+		targetDataSources.put(DBTypeEnum.SLAVE1, slave1DataSource);
40
+		MyRoutingDataSource myRoutingDataSource = new MyRoutingDataSource();
41
+		myRoutingDataSource.setDefaultTargetDataSource(masterDataSource);
42
+		myRoutingDataSource.setTargetDataSources(targetDataSources);
43
+		return myRoutingDataSource;
44
+	}
45
+	
46
+}

+ 37
- 0
separation/src/main/java/com/fxf/separation/config/MyBatisConfig.java Näytä tiedosto

@@ -0,0 +1,37 @@
1
+package com.fxf.separation.config;
2
+
3
+import org.apache.ibatis.session.SqlSessionFactory;
4
+import org.mybatis.spring.SqlSessionFactoryBean;
5
+import org.springframework.context.annotation.Bean;
6
+import org.springframework.context.annotation.Configuration;
7
+import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
8
+import org.springframework.jdbc.datasource.DataSourceTransactionManager;
9
+import org.springframework.transaction.PlatformTransactionManager;
10
+import org.springframework.transaction.annotation.EnableTransactionManagement;
11
+
12
+import javax.annotation.Resource;
13
+import javax.sql.DataSource;
14
+
15
+/**
16
+ * @author FXF
17
+ * @date 2019-10-14
18
+ */
19
+@EnableTransactionManagement
20
+@Configuration
21
+public class MyBatisConfig {
22
+	@Resource(name = "myRoutingDataSource")
23
+	private DataSource myRoutingDataSource;
24
+	
25
+	@Bean
26
+	public SqlSessionFactory sqlSessionFactory() throws Exception {
27
+		SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
28
+		sqlSessionFactoryBean.setDataSource(myRoutingDataSource);
29
+		sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml"));
30
+		return sqlSessionFactoryBean.getObject();
31
+	}
32
+	
33
+	@Bean
34
+	public PlatformTransactionManager platformTransactionManager() {
35
+		return new DataSourceTransactionManager(myRoutingDataSource);
36
+	}
37
+}

+ 27
- 0
separation/src/main/java/com/fxf/separation/interceptor/AccessInterceptor.java Näytä tiedosto

@@ -0,0 +1,27 @@
1
+package com.fxf.separation.interceptor;
2
+
3
+import com.fxf.separation.bean.DBContextHolder;
4
+import org.springframework.stereotype.Component;
5
+import org.springframework.web.servlet.HandlerInterceptor;
6
+
7
+import javax.servlet.http.HttpServletRequest;
8
+import javax.servlet.http.HttpServletResponse;
9
+
10
+/**
11
+ * @author FXF
12
+ * @date 2019-10-14
13
+ */
14
+@Component
15
+public class AccessInterceptor implements HandlerInterceptor {
16
+	
17
+	@Override
18
+	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object obj) {
19
+		System.out.println(request.getMethod());
20
+		if (request.getMethod().equals("GET")){
21
+			DBContextHolder.slave();
22
+		}else {
23
+			DBContextHolder.master();
24
+		}
25
+		return true;
26
+	}
27
+}

+ 34
- 0
separation/src/main/java/com/fxf/separation/taUser/controller/TaUserController.java Näytä tiedosto

@@ -0,0 +1,34 @@
1
+package com.fxf.separation.taUser.controller;
2
+
3
+import com.fxf.separation.taUser.model.TaUser;
4
+import com.fxf.separation.taUser.service.TaUserServiceI;
5
+import org.springframework.beans.factory.annotation.Autowired;
6
+import org.springframework.web.bind.annotation.GetMapping;
7
+import org.springframework.web.bind.annotation.PostMapping;
8
+import org.springframework.web.bind.annotation.RequestBody;
9
+import org.springframework.web.bind.annotation.RequestMapping;
10
+import org.springframework.web.bind.annotation.RestController;
11
+
12
+import java.util.List;
13
+
14
+/**
15
+ * @author FXF
16
+ * @date 2019-10-14
17
+ */
18
+@RestController
19
+@RequestMapping("/")
20
+public class TaUserController {
21
+	
22
+	@Autowired
23
+	private TaUserServiceI taUserService;
24
+	
25
+	@GetMapping("/users")
26
+	public List<TaUser> getList(){
27
+		return taUserService.getList();
28
+	}
29
+	
30
+	@PostMapping("/user")
31
+	public TaUser addUser(@RequestBody TaUser taUser){
32
+		return taUserService.addUser(taUser);
33
+	}
34
+}

+ 22
- 0
separation/src/main/java/com/fxf/separation/taUser/dao/TaUserMapper.java Näytä tiedosto

@@ -0,0 +1,22 @@
1
+package com.fxf.separation.taUser.dao;
2
+
3
+import com.fxf.separation.taUser.model.TaUser;
4
+import org.apache.ibatis.annotations.Mapper;
5
+
6
+import java.util.List;
7
+/**
8
+ * Demo class
9
+ *
10
+ * @author keriezhang
11
+ * @date 2016/10/31
12
+ */
13
+@Mapper
14
+public interface TaUserMapper {
15
+	/**
16
+	 * 获取所有
17
+	 * @return
18
+	 */
19
+	List<TaUser> getAll();
20
+	
21
+	int add(TaUser taUser);
22
+}

+ 17
- 0
separation/src/main/java/com/fxf/separation/taUser/model/TaUser.java Näytä tiedosto

@@ -0,0 +1,17 @@
1
+package com.fxf.separation.taUser.model;
2
+
3
+import lombok.Data;
4
+
5
+/**
6
+ * @author FXF
7
+ * @date 2019-10-14
8
+ */
9
+@Data
10
+public class TaUser {
11
+	
12
+	private Integer id;
13
+	
14
+	private String name;
15
+	
16
+	private Integer age;
17
+}

+ 11
- 0
separation/src/main/java/com/fxf/separation/taUser/service/TaUserServiceI.java Näytä tiedosto

@@ -0,0 +1,11 @@
1
+package com.fxf.separation.taUser.service;
2
+
3
+import com.fxf.separation.taUser.model.TaUser;
4
+
5
+import java.util.List;
6
+
7
+public interface TaUserServiceI {
8
+	List<TaUser> getList();
9
+	
10
+	TaUser addUser(TaUser taUser);
11
+}

+ 31
- 0
separation/src/main/java/com/fxf/separation/taUser/service/impl/TaUserServiceImpl.java Näytä tiedosto

@@ -0,0 +1,31 @@
1
+package com.fxf.separation.taUser.service.impl;
2
+
3
+import com.fxf.separation.taUser.dao.TaUserMapper;
4
+import com.fxf.separation.taUser.model.TaUser;
5
+import com.fxf.separation.taUser.service.TaUserServiceI;
6
+import org.springframework.beans.factory.annotation.Autowired;
7
+import org.springframework.stereotype.Service;
8
+
9
+import java.util.List;
10
+
11
+/**
12
+ * @author FXF
13
+ * @date 2019-10-14
14
+ */
15
+@Service
16
+public class TaUserServiceImpl implements TaUserServiceI {
17
+	
18
+	@Autowired
19
+	private TaUserMapper taUserMapper;
20
+	
21
+	@Override
22
+	public List<TaUser> getList() {
23
+		return taUserMapper.getAll();
24
+	}
25
+	
26
+	@Override
27
+	public TaUser addUser(TaUser taUser) {
28
+		taUserMapper.add(taUser);
29
+		return taUser;
30
+	}
31
+}

+ 18
- 0
separation/src/main/resources/application.yml Näytä tiedosto

@@ -0,0 +1,18 @@
1
+server:
2
+  port: 8080
3
+spring:
4
+  datasource:
5
+    master:
6
+      jdbc-url: jdbc:mysql://47.101.36.130:3306/separation_test
7
+      username: root
8
+      password: Wt4q*/9}i00q@0a4jM{z6O#h129@F/
9
+      driver-class-name: com.mysql.jdbc.Driver
10
+    slave1:
11
+      jdbc-url: jdbc:mysql://47.101.36.130:3306/separation_test1
12
+      username: root
13
+      password: Wt4q*/9}i00q@0a4jM{z6O#h129@F/
14
+      driver-class-name: com.mysql.jdbc.Driver
15
+  devtools:
16
+    restart:
17
+      enabled: true
18
+      additional-paths: src/main/java

+ 12
- 0
separation/src/main/resources/mapper/TaUserMapper.xml Näytä tiedosto

@@ -0,0 +1,12 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
+<mapper namespace="com.fxf.separation.taUser.dao.TaUserMapper">
4
+
5
+    <select id="getAll" resultType="com.fxf.separation.taUser.model.TaUser">
6
+        select * from ta_user
7
+    </select>
8
+
9
+    <insert id="add" parameterType="com.fxf.separation.taUser.model.TaUser" >
10
+        INSERT INTO ta_user (`name`,age) VALUES (#{name}, #{age})
11
+    </insert>
12
+</mapper>

+ 16
- 0
separation/src/test/java/com/fxf/separation/SeparationApplicationTests.java Näytä tiedosto

@@ -0,0 +1,16 @@
1
+package com.fxf.separation;
2
+
3
+import org.junit.Test;
4
+import org.junit.runner.RunWith;
5
+import org.springframework.boot.test.context.SpringBootTest;
6
+import org.springframework.test.context.junit4.SpringRunner;
7
+
8
+@RunWith(SpringRunner.class)
9
+@SpringBootTest
10
+public class SeparationApplicationTests {
11
+
12
+	@Test
13
+	public void contextLoads() {
14
+	}
15
+
16
+}