diff --git a/.idea/compiler.xml b/.idea/compiler.xml index cfa0a0e..0ba92b0 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -1,16 +1,37 @@ + + + \ No newline at end of file diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml index a9f791d..5cf3a29 100644 --- a/.idea/dataSources.xml +++ b/.idea/dataSources.xml @@ -10,6 +10,7 @@ + $ProjectFileDir$ diff --git a/.idea/encodings.xml b/.idea/encodings.xml index e0f8c39..93cecb7 100644 --- a/.idea/encodings.xml +++ b/.idea/encodings.xml @@ -1,13 +1,36 @@ - + - - + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml index 5a2f139..7628153 100644 --- a/.idea/jarRepositories.xml +++ b/.idea/jarRepositories.xml @@ -1,6 +1,11 @@ + + + + \ No newline at end of file diff --git a/.idea/libraries/lombok.xml b/.idea/libraries/lombok.xml deleted file mode 100644 index e9dc78c..0000000 --- a/.idea/libraries/lombok.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 7fe267b..700ba15 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -6,13 +6,9 @@ - diff --git a/homework02/homework02.iml b/homework02/homework02.iml index 5a1763a..bec6296 100644 --- a/homework02/homework02.iml +++ b/homework02/homework02.iml @@ -22,5 +22,6 @@ + \ No newline at end of file diff --git a/learn02/learn02.iml b/learn02/learn02.iml index 7fdfd07..40daf49 100644 --- a/learn02/learn02.iml +++ b/learn02/learn02.iml @@ -24,7 +24,7 @@ - + \ No newline at end of file diff --git a/learn02/web/js/course-edit.js b/learn02/web/js/course-edit.js index 8ec5b90..95fd005 100644 --- a/learn02/web/js/course-edit.js +++ b/learn02/web/js/course-edit.js @@ -25,35 +25,35 @@ new Vue({ }); function getCourses(){ - // $.ajax({ - // url: path+"/courseAction/list", - // method: "GET", - // success: (data, status, xhr)=>{ - // const course_list = document.getElementById('course-list'); - // console.log(xhr.status); - // course_list.innerHTML = "课程信息列表 名称 性质 学分 开设年级 开设专业 " - // courses = data; - // for (let i in data){ - // const course_tr = document.createElement('tr'); - // course_tr.innerHTML=""+ data[i].name +"" + - // ""+types[data[i].type]+"" + - // ""+ data[i].credit +"" + - // ""+ data[i].grade + "" + - // ""+ majors[data[i].major]+"" + - // "编辑 删除"; - // course_list.appendChild(course_tr); - // } - // const end_tr = document.createElement('tr'); - // end_tr.innerHTML="添加" + - // "刷新数据列表"; - // course_list.appendChild(end_tr); - // }, - // error: ()=>{ - // window.location=path+"/login/login.jsp"; - // } - // }); + $.ajax({ + url: path+"/courseAction/list", + method: "GET", + success: (data, status, xhr)=>{ + const course_list = document.getElementById('course-list'); + console.log(xhr.status); + course_list.innerHTML = "课程信息列表 名称 性质 学分 开设年级 开设专业 " + courses = data; + for (let i in data){ + const course_tr = document.createElement('tr'); + course_tr.innerHTML=""+ data[i].name +"" + + ""+types[data[i].type]+"" + + ""+ data[i].credit +"" + + ""+ data[i].grade + "" + + ""+ majors[data[i].major]+"" + + "编辑 删除"; + course_list.appendChild(course_tr); + } + const end_tr = document.createElement('tr'); + end_tr.innerHTML="添加" + + "刷新数据列表"; + course_list.appendChild(end_tr); + }, + error: ()=>{ + window.location=path+"/login/login.jsp"; + } + }); } $(document).ready(getCourses); diff --git a/learn03-springboot/.gitattributes b/learn03-springboot/.gitattributes deleted file mode 100644 index 3b41682..0000000 --- a/learn03-springboot/.gitattributes +++ /dev/null @@ -1,2 +0,0 @@ -/mvnw text eol=lf -*.cmd text eol=crlf diff --git a/learn03-springboot/.gitignore b/learn03-springboot/.gitignore index 549e00a..7ed0d6b 100644 --- a/learn03-springboot/.gitignore +++ b/learn03-springboot/.gitignore @@ -1,4 +1,3 @@ -HELP.md target/ !.mvn/wrapper/maven-wrapper.jar !**/src/main/**/target/ diff --git a/learn03-springboot/.mvn/wrapper/maven-wrapper.properties b/learn03-springboot/.mvn/wrapper/maven-wrapper.properties deleted file mode 100644 index d58dfb7..0000000 --- a/learn03-springboot/.mvn/wrapper/maven-wrapper.properties +++ /dev/null @@ -1,19 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -wrapperVersion=3.3.2 -distributionType=only-script -distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip diff --git a/learn03-springboot/mvnw b/learn03-springboot/mvnw deleted file mode 100644 index 19529dd..0000000 --- a/learn03-springboot/mvnw +++ /dev/null @@ -1,259 +0,0 @@ -#!/bin/sh -# ---------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# ---------------------------------------------------------------------------- - -# ---------------------------------------------------------------------------- -# Apache Maven Wrapper startup batch script, version 3.3.2 -# -# Optional ENV vars -# ----------------- -# JAVA_HOME - location of a JDK home dir, required when download maven via java source -# MVNW_REPOURL - repo url base for downloading maven distribution -# MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven -# MVNW_VERBOSE - true: enable verbose log; debug: trace the mvnw script; others: silence the output -# ---------------------------------------------------------------------------- - -set -euf -[ "${MVNW_VERBOSE-}" != debug ] || set -x - -# OS specific support. -native_path() { printf %s\\n "$1"; } -case "$(uname)" in -CYGWIN* | MINGW*) - [ -z "${JAVA_HOME-}" ] || JAVA_HOME="$(cygpath --unix "$JAVA_HOME")" - native_path() { cygpath --path --windows "$1"; } - ;; -esac - -# set JAVACMD and JAVACCMD -set_java_home() { - # For Cygwin and MinGW, ensure paths are in Unix format before anything is touched - if [ -n "${JAVA_HOME-}" ]; then - if [ -x "$JAVA_HOME/jre/sh/java" ]; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - JAVACCMD="$JAVA_HOME/jre/sh/javac" - else - JAVACMD="$JAVA_HOME/bin/java" - JAVACCMD="$JAVA_HOME/bin/javac" - - if [ ! -x "$JAVACMD" ] || [ ! -x "$JAVACCMD" ]; then - echo "The JAVA_HOME environment variable is not defined correctly, so mvnw cannot run." >&2 - echo "JAVA_HOME is set to \"$JAVA_HOME\", but \"\$JAVA_HOME/bin/java\" or \"\$JAVA_HOME/bin/javac\" does not exist." >&2 - return 1 - fi - fi - else - JAVACMD="$( - 'set' +e - 'unset' -f command 2>/dev/null - 'command' -v java - )" || : - JAVACCMD="$( - 'set' +e - 'unset' -f command 2>/dev/null - 'command' -v javac - )" || : - - if [ ! -x "${JAVACMD-}" ] || [ ! -x "${JAVACCMD-}" ]; then - echo "The java/javac command does not exist in PATH nor is JAVA_HOME set, so mvnw cannot run." >&2 - return 1 - fi - fi -} - -# hash string like Java String::hashCode -hash_string() { - str="${1:-}" h=0 - while [ -n "$str" ]; do - char="${str%"${str#?}"}" - h=$(((h * 31 + $(LC_CTYPE=C printf %d "'$char")) % 4294967296)) - str="${str#?}" - done - printf %x\\n $h -} - -verbose() { :; } -[ "${MVNW_VERBOSE-}" != true ] || verbose() { printf %s\\n "${1-}"; } - -die() { - printf %s\\n "$1" >&2 - exit 1 -} - -trim() { - # MWRAPPER-139: - # Trims trailing and leading whitespace, carriage returns, tabs, and linefeeds. - # Needed for removing poorly interpreted newline sequences when running in more - # exotic environments such as mingw bash on Windows. - printf "%s" "${1}" | tr -d '[:space:]' -} - -# parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties -while IFS="=" read -r key value; do - case "${key-}" in - distributionUrl) distributionUrl=$(trim "${value-}") ;; - distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;; - esac -done <"${0%/*}/.mvn/wrapper/maven-wrapper.properties" -[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in ${0%/*}/.mvn/wrapper/maven-wrapper.properties" - -case "${distributionUrl##*/}" in -maven-mvnd-*bin.*) - MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ - case "${PROCESSOR_ARCHITECTURE-}${PROCESSOR_ARCHITEW6432-}:$(uname -a)" in - *AMD64:CYGWIN* | *AMD64:MINGW*) distributionPlatform=windows-amd64 ;; - :Darwin*x86_64) distributionPlatform=darwin-amd64 ;; - :Darwin*arm64) distributionPlatform=darwin-aarch64 ;; - :Linux*x86_64*) distributionPlatform=linux-amd64 ;; - *) - echo "Cannot detect native platform for mvnd on $(uname)-$(uname -m), use pure java version" >&2 - distributionPlatform=linux-amd64 - ;; - esac - distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip" - ;; -maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;; -*) MVN_CMD="mvn${0##*/mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;; -esac - -# apply MVNW_REPOURL and calculate MAVEN_HOME -# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ -[ -z "${MVNW_REPOURL-}" ] || distributionUrl="$MVNW_REPOURL$_MVNW_REPO_PATTERN${distributionUrl#*"$_MVNW_REPO_PATTERN"}" -distributionUrlName="${distributionUrl##*/}" -distributionUrlNameMain="${distributionUrlName%.*}" -distributionUrlNameMain="${distributionUrlNameMain%-bin}" -MAVEN_USER_HOME="${MAVEN_USER_HOME:-${HOME}/.m2}" -MAVEN_HOME="${MAVEN_USER_HOME}/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")" - -exec_maven() { - unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || : - exec "$MAVEN_HOME/bin/$MVN_CMD" "$@" || die "cannot exec $MAVEN_HOME/bin/$MVN_CMD" -} - -if [ -d "$MAVEN_HOME" ]; then - verbose "found existing MAVEN_HOME at $MAVEN_HOME" - exec_maven "$@" -fi - -case "${distributionUrl-}" in -*?-bin.zip | *?maven-mvnd-?*-?*.zip) ;; -*) die "distributionUrl is not valid, must match *-bin.zip or maven-mvnd-*.zip, but found '${distributionUrl-}'" ;; -esac - -# prepare tmp dir -if TMP_DOWNLOAD_DIR="$(mktemp -d)" && [ -d "$TMP_DOWNLOAD_DIR" ]; then - clean() { rm -rf -- "$TMP_DOWNLOAD_DIR"; } - trap clean HUP INT TERM EXIT -else - die "cannot create temp dir" -fi - -mkdir -p -- "${MAVEN_HOME%/*}" - -# Download and Install Apache Maven -verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." -verbose "Downloading from: $distributionUrl" -verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" - -# select .zip or .tar.gz -if ! command -v unzip >/dev/null; then - distributionUrl="${distributionUrl%.zip}.tar.gz" - distributionUrlName="${distributionUrl##*/}" -fi - -# verbose opt -__MVNW_QUIET_WGET=--quiet __MVNW_QUIET_CURL=--silent __MVNW_QUIET_UNZIP=-q __MVNW_QUIET_TAR='' -[ "${MVNW_VERBOSE-}" != true ] || __MVNW_QUIET_WGET='' __MVNW_QUIET_CURL='' __MVNW_QUIET_UNZIP='' __MVNW_QUIET_TAR=v - -# normalize http auth -case "${MVNW_PASSWORD:+has-password}" in -'') MVNW_USERNAME='' MVNW_PASSWORD='' ;; -has-password) [ -n "${MVNW_USERNAME-}" ] || MVNW_USERNAME='' MVNW_PASSWORD='' ;; -esac - -if [ -z "${MVNW_USERNAME-}" ] && command -v wget >/dev/null; then - verbose "Found wget ... using wget" - wget ${__MVNW_QUIET_WGET:+"$__MVNW_QUIET_WGET"} "$distributionUrl" -O "$TMP_DOWNLOAD_DIR/$distributionUrlName" || die "wget: Failed to fetch $distributionUrl" -elif [ -z "${MVNW_USERNAME-}" ] && command -v curl >/dev/null; then - verbose "Found curl ... using curl" - curl ${__MVNW_QUIET_CURL:+"$__MVNW_QUIET_CURL"} -f -L -o "$TMP_DOWNLOAD_DIR/$distributionUrlName" "$distributionUrl" || die "curl: Failed to fetch $distributionUrl" -elif set_java_home; then - verbose "Falling back to use Java to download" - javaSource="$TMP_DOWNLOAD_DIR/Downloader.java" - targetZip="$TMP_DOWNLOAD_DIR/$distributionUrlName" - cat >"$javaSource" <<-END - public class Downloader extends java.net.Authenticator - { - protected java.net.PasswordAuthentication getPasswordAuthentication() - { - return new java.net.PasswordAuthentication( System.getenv( "MVNW_USERNAME" ), System.getenv( "MVNW_PASSWORD" ).toCharArray() ); - } - public static void main( String[] args ) throws Exception - { - setDefault( new Downloader() ); - java.nio.file.Files.copy( java.net.URI.create( args[0] ).toURL().openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() ); - } - } - END - # For Cygwin/MinGW, switch paths to Windows format before running javac and java - verbose " - Compiling Downloader.java ..." - "$(native_path "$JAVACCMD")" "$(native_path "$javaSource")" || die "Failed to compile Downloader.java" - verbose " - Running Downloader.java ..." - "$(native_path "$JAVACMD")" -cp "$(native_path "$TMP_DOWNLOAD_DIR")" Downloader "$distributionUrl" "$(native_path "$targetZip")" -fi - -# If specified, validate the SHA-256 sum of the Maven distribution zip file -if [ -n "${distributionSha256Sum-}" ]; then - distributionSha256Result=false - if [ "$MVN_CMD" = mvnd.sh ]; then - echo "Checksum validation is not supported for maven-mvnd." >&2 - echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 - exit 1 - elif command -v sha256sum >/dev/null; then - if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c >/dev/null 2>&1; then - distributionSha256Result=true - fi - elif command -v shasum >/dev/null; then - if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | shasum -a 256 -c >/dev/null 2>&1; then - distributionSha256Result=true - fi - else - echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." >&2 - echo "Please install either command, or disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 - exit 1 - fi - if [ $distributionSha256Result = false ]; then - echo "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised." >&2 - echo "If you updated your Maven version, you need to update the specified distributionSha256Sum property." >&2 - exit 1 - fi -fi - -# unzip and move -if command -v unzip >/dev/null; then - unzip ${__MVNW_QUIET_UNZIP:+"$__MVNW_QUIET_UNZIP"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -d "$TMP_DOWNLOAD_DIR" || die "failed to unzip" -else - tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar" -fi -printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/mvnw.url" -mv -- "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME" - -clean || : -exec_maven "$@" diff --git a/learn03-springboot/mvnw.cmd b/learn03-springboot/mvnw.cmd deleted file mode 100644 index 249bdf3..0000000 --- a/learn03-springboot/mvnw.cmd +++ /dev/null @@ -1,149 +0,0 @@ -<# : batch portion -@REM ---------------------------------------------------------------------------- -@REM Licensed to the Apache Software Foundation (ASF) under one -@REM or more contributor license agreements. See the NOTICE file -@REM distributed with this work for additional information -@REM regarding copyright ownership. The ASF licenses this file -@REM to you under the Apache License, Version 2.0 (the -@REM "License"); you may not use this file except in compliance -@REM with the License. You may obtain a copy of the License at -@REM -@REM http://www.apache.org/licenses/LICENSE-2.0 -@REM -@REM Unless required by applicable law or agreed to in writing, -@REM software distributed under the License is distributed on an -@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -@REM KIND, either express or implied. See the License for the -@REM specific language governing permissions and limitations -@REM under the License. -@REM ---------------------------------------------------------------------------- - -@REM ---------------------------------------------------------------------------- -@REM Apache Maven Wrapper startup batch script, version 3.3.2 -@REM -@REM Optional ENV vars -@REM MVNW_REPOURL - repo url base for downloading maven distribution -@REM MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven -@REM MVNW_VERBOSE - true: enable verbose log; others: silence the output -@REM ---------------------------------------------------------------------------- - -@IF "%__MVNW_ARG0_NAME__%"=="" (SET __MVNW_ARG0_NAME__=%~nx0) -@SET __MVNW_CMD__= -@SET __MVNW_ERROR__= -@SET __MVNW_PSMODULEP_SAVE=%PSModulePath% -@SET PSModulePath= -@FOR /F "usebackq tokens=1* delims==" %%A IN (`powershell -noprofile "& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}"`) DO @( - IF "%%A"=="MVN_CMD" (set __MVNW_CMD__=%%B) ELSE IF "%%B"=="" (echo %%A) ELSE (echo %%A=%%B) -) -@SET PSModulePath=%__MVNW_PSMODULEP_SAVE% -@SET __MVNW_PSMODULEP_SAVE= -@SET __MVNW_ARG0_NAME__= -@SET MVNW_USERNAME= -@SET MVNW_PASSWORD= -@IF NOT "%__MVNW_CMD__%"=="" (%__MVNW_CMD__% %*) -@echo Cannot start maven from wrapper >&2 && exit /b 1 -@GOTO :EOF -: end batch / begin powershell #> - -$ErrorActionPreference = "Stop" -if ($env:MVNW_VERBOSE -eq "true") { - $VerbosePreference = "Continue" -} - -# calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties -$distributionUrl = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionUrl -if (!$distributionUrl) { - Write-Error "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties" -} - -switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) { - "maven-mvnd-*" { - $USE_MVND = $true - $distributionUrl = $distributionUrl -replace '-bin\.[^.]*$',"-windows-amd64.zip" - $MVN_CMD = "mvnd.cmd" - break - } - default { - $USE_MVND = $false - $MVN_CMD = $script -replace '^mvnw','mvn' - break - } -} - -# apply MVNW_REPOURL and calculate MAVEN_HOME -# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ -if ($env:MVNW_REPOURL) { - $MVNW_REPO_PATTERN = if ($USE_MVND) { "/org/apache/maven/" } else { "/maven/mvnd/" } - $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace '^.*'+$MVNW_REPO_PATTERN,'')" -} -$distributionUrlName = $distributionUrl -replace '^.*/','' -$distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$','' -$MAVEN_HOME_PARENT = "$HOME/.m2/wrapper/dists/$distributionUrlNameMain" -if ($env:MAVEN_USER_HOME) { - $MAVEN_HOME_PARENT = "$env:MAVEN_USER_HOME/wrapper/dists/$distributionUrlNameMain" -} -$MAVEN_HOME_NAME = ([System.Security.Cryptography.MD5]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join '' -$MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME" - -if (Test-Path -Path "$MAVEN_HOME" -PathType Container) { - Write-Verbose "found existing MAVEN_HOME at $MAVEN_HOME" - Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" - exit $? -} - -if (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) { - Write-Error "distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl" -} - -# prepare tmp dir -$TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile -$TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path "$TMP_DOWNLOAD_DIR_HOLDER.dir" -$TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null -trap { - if ($TMP_DOWNLOAD_DIR.Exists) { - try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } - catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } - } -} - -New-Item -Itemtype Directory -Path "$MAVEN_HOME_PARENT" -Force | Out-Null - -# Download and Install Apache Maven -Write-Verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." -Write-Verbose "Downloading from: $distributionUrl" -Write-Verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" - -$webclient = New-Object System.Net.WebClient -if ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) { - $webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD) -} -[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 -$webclient.DownloadFile($distributionUrl, "$TMP_DOWNLOAD_DIR/$distributionUrlName") | Out-Null - -# If specified, validate the SHA-256 sum of the Maven distribution zip file -$distributionSha256Sum = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionSha256Sum -if ($distributionSha256Sum) { - if ($USE_MVND) { - Write-Error "Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." - } - Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash - if ((Get-FileHash "$TMP_DOWNLOAD_DIR/$distributionUrlName" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) { - Write-Error "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property." - } -} - -# unzip and move -Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null -Rename-Item -Path "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" -NewName $MAVEN_HOME_NAME | Out-Null -try { - Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null -} catch { - if (! (Test-Path -Path "$MAVEN_HOME" -PathType Container)) { - Write-Error "fail to move MAVEN_HOME" - } -} finally { - try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } - catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } -} - -Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" diff --git a/learn03-springboot/pom.xml b/learn03-springboot/pom.xml index 0dbb187..52d00c6 100644 --- a/learn03-springboot/pom.xml +++ b/learn03-springboot/pom.xml @@ -39,7 +39,8 @@ org.projectlombok lombok - true + 1.18.36 + provided org.springframework.boot @@ -51,6 +52,38 @@ spring-boot-starter-test test + + org.apache.commons + commons-dbcp2 + 2.13.0 + + + com.intellij + annotations + 6.0.3 + + + org.xerial + sqlite-jdbc + 3.47.1.0 + + + org.springframework.boot + spring-boot-starter-actuator + + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + 3.0.4 + + + + com.alibaba + druid-spring-boot-3-starter + 1.2.24 + + @@ -63,6 +96,7 @@ org.projectlombok lombok + release diff --git a/learn03-springboot/src/main/java/top/awin_x/learn/common/DBTool.java b/learn03-springboot/src/main/java/top/awin_x/learn/common/DBTool.java new file mode 100644 index 0000000..fd71ec9 --- /dev/null +++ b/learn03-springboot/src/main/java/top/awin_x/learn/common/DBTool.java @@ -0,0 +1,84 @@ +package top.awin_x.learn.common; + +import org.apache.commons.dbcp2.BasicDataSourceFactory; + +import javax.sql.DataSource; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.Properties; + + +/** + * 这是一个数据库工具类,创建了一个数据库连接池 + * 需要在database.properties中配置数据库连接属性 + * @author Awin-x + */ +public class DBTool { + static DataSource ds; + static{ + Properties prop = new Properties(); + try { + InputStream database_info = DBTool.class.getClassLoader().getResourceAsStream("database.properties"); + if (database_info != null) { + prop.load(new InputStreamReader(database_info, "GBK")); + prop.list(System.out); + }else{ + throw new FileNotFoundException("database.properties file does not exist in the classpath"); + } + } catch (IOException e) { + System.out.println("数据库配置加载失败!"); + throw new RuntimeException(e); + } + try { + ds = BasicDataSourceFactory.createDataSource(prop); + } catch (Exception e) { + System.out.println("数据库连接池初始化失败"); + throw new RuntimeException(e); + } + } + + public static Connection getConnection(){ + try{ + return ds.getConnection(); + } catch (SQLException e) { + e.printStackTrace(); + return null; + } + } + + public static PreparedStatement getPreparedStatement(String sql) throws SQLException{ + //noinspection SqlSourceToSinkFlow + return ds.getConnection().prepareStatement(sql); + } + + public static void close(Connection conn, PreparedStatement ps, ResultSet rs){ + try{ + if(rs != null){ + rs.close(); + } + if(ps != null){ + ps.close(); + } + if(conn != null){ + conn.close(); + } + } catch (SQLException e) { + System.out.println("关闭失败"); + e.printStackTrace(); + } + } + + public static void close(PreparedStatement ps, ResultSet rs) throws SQLException { + close(ps.getConnection(), ps, rs); + } + + public static void close(PreparedStatement ps) throws SQLException { + close(ps.getConnection(), ps, null); + } +} diff --git a/learn03-springboot/src/main/java/top/awin_x/learn/controller/CourseController.java b/learn03-springboot/src/main/java/top/awin_x/learn/controller/CourseController.java new file mode 100644 index 0000000..62bbb72 --- /dev/null +++ b/learn03-springboot/src/main/java/top/awin_x/learn/controller/CourseController.java @@ -0,0 +1,27 @@ +package top.awin_x.learn.controller; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import top.awin_x.learn.pojo.CourseInfo; +import top.awin_x.learn.pojo.Result; +import top.awin_x.learn.service.CourseService; +import top.awin_x.learn.service.impl.CourseServiceImpl; + +import java.util.ArrayList; + +@RestController +public class CourseController { + @Autowired + private CourseService courseService; + + @RequestMapping("/courseAction/list") + public Result listCourse(Integer page, Integer pageSize, String keyword, Integer type) { + ArrayList list = courseService.listCourses(page, pageSize, keyword, type); + return Result.success(list); + } + @RequestMapping("/courseAction/edit") + public Result editCourse(CourseInfo course) { + return Result.success(new CourseServiceImpl().editCourse(course)); + } +} diff --git a/learn03-springboot/src/main/java/top/awin_x/learn/controller/HelloController.java b/learn03-springboot/src/main/java/top/awin_x/learn/controller/HelloController.java new file mode 100644 index 0000000..b232605 --- /dev/null +++ b/learn03-springboot/src/main/java/top/awin_x/learn/controller/HelloController.java @@ -0,0 +1,60 @@ +package top.awin_x.learn.controller; + +import jakarta.servlet.http.HttpServletRequest; +import org.springframework.web.bind.annotation.*; +import top.awin_x.learn.pojo.CourseInfo; +import top.awin_x.learn.pojo.Result; +import top.awin_x.learn.service.impl.CourseServiceImpl; + +import java.util.ArrayList; + +@RestController +@RequestMapping("/test") +public class HelloController { + @GetMapping("/hello1") + public String hello() { + System.out.println("Hello World"); + return "Hello World"; + } + + @GetMapping("/helloWithParam") + public String helloWithParam(HttpServletRequest request) { + String name = request.getParameter("name"); + return "Hello " + name; + } + + @GetMapping("/helloWithParam2") + public String helloWithParam2(String name, Integer age) { + return "Hello " + name + " " + age; + } + + @GetMapping("/helloWithParam3") + public String helloWithParam3(CourseInfo courseInfo) { + System.out.println(courseInfo); + return "Hello " + courseInfo.getName(); + } + + @GetMapping("/helloWithJSON") + public String helloWithJSON(@RequestBody CourseInfo courseInfo) { + System.out.println(courseInfo); + return "Hello " + courseInfo.getName(); + } + + @GetMapping("/helloWithPath/{name}") + public String helloWithPath(@PathVariable String name) { + return "Hello " + name; + } + + @GetMapping("/helloWithResultReturn") + public Result helloWithResultReturn(String name) { + Result result = new Result(); + ArrayList list = new ArrayList<>(); + list.add(name); + result.setData(list); + result.setMsg("Hello " + name); + result.setSuccess(true); + return result; + } + + +} diff --git a/learn03-springboot/src/main/java/top/awin_x/learn/dao/CourseDB.java b/learn03-springboot/src/main/java/top/awin_x/learn/dao/CourseDB.java new file mode 100644 index 0000000..bf6f1dc --- /dev/null +++ b/learn03-springboot/src/main/java/top/awin_x/learn/dao/CourseDB.java @@ -0,0 +1,67 @@ +package top.awin_x.learn.dao; + + + +import top.awin_x.learn.pojo.CourseInfo; + +import java.util.ArrayList; + +public interface CourseDB { + /** + * 用于列出全部课程 + * @return 返回从数据库中查询到的全部课程 + */ + ArrayList getAllCourseInfo(); + + /** + * 用于分页列出筛选课程 + * @param page 页码 + * @param pageSize 每页条数 + * @param keyword 关键词筛选,为空字符串表示不筛选 + * @param type 类型筛选,为0表示不筛选 + * @return 返回从数据库查询到的该页课程 + */ + ArrayList getCourseInfos(int page, int pageSize, String keyword, int type); + + /** + * 用于获取一个课程 + * @param id 目标课程的id + * @return 根据id从数据库查询到的课程信息 + */ + CourseInfo getCourseInfoByID(int id); + + /** + * 用于获取课程总数 + * @return 返回数据库中课程信息条数 + */ + int getAllCourseInfoCount(); + + /** + * 获取一个课程筛选结果集的总数 + * @param keyword 关键词筛选,为空字符串表示不筛选 + * @param type 类型筛选,为0表示不筛选 + * @return 课程筛选结果集的总数 + */ + int getAllCourseInfoCount(String keyword, int type); + + /** + * 用于添加课程 + * @param courseInfo 要添加的课程 + * @return 影响数据库行数,行数大于0则说明添加成功 + */ + int addCourseInfo(CourseInfo courseInfo); + + /** + * 用于更新一个课程信息 + * @param courseInfo 修改的课程信息,id不可修改,id作为修改目标查找参数 + * @return 影响的行数,行数大于0则说明更新成功 + */ + int updateCourseInfo(CourseInfo courseInfo); + + /** + * 用于删除一个课程 + * @param id 要删除的课程的id + * @return 影响的行数,行数大于0则说明更新成功 + */ + int deleteCourseInfo(int id); +} diff --git a/learn03-springboot/src/main/java/top/awin_x/learn/dao/ScoreDB.java b/learn03-springboot/src/main/java/top/awin_x/learn/dao/ScoreDB.java new file mode 100644 index 0000000..134319d --- /dev/null +++ b/learn03-springboot/src/main/java/top/awin_x/learn/dao/ScoreDB.java @@ -0,0 +1,16 @@ +package top.awin_x.learn.dao; + + +import top.awin_x.learn.pojo.ScoreInfo; + +import java.util.ArrayList; + +public interface ScoreDB { + ScoreInfo getScoreInfoByID(int studentID, int courseID); + ArrayList getScoreInfoByStudentID(int studentID); + ArrayList getScoreInfoByCourseID(int courseID); + int getScoreByStudentID(int studentID); + int addScoreInfo(ScoreInfo scoreInfo); + int updateScoreInfo(ScoreInfo scoreInfo); + int deleteScoreInfo(int studentID, int courseID); +} diff --git a/learn03-springboot/src/main/java/top/awin_x/learn/dao/StudentDB.java b/learn03-springboot/src/main/java/top/awin_x/learn/dao/StudentDB.java new file mode 100644 index 0000000..553acf5 --- /dev/null +++ b/learn03-springboot/src/main/java/top/awin_x/learn/dao/StudentDB.java @@ -0,0 +1,22 @@ +package top.awin_x.learn.dao; + + +import top.awin_x.learn.pojo.StudentInfo; + +import java.util.ArrayList; + +public interface StudentDB { + ArrayList getAllStudentInfo(); + + StudentInfo getStudentInfoByID(int id); + + StudentInfo getStudentInfoByName(String name); + + StudentInfo getStudentInfoByCode(String code); + + int addStudentInfo(StudentInfo studentInfo); + + int updateStudentInfo(StudentInfo studentInfo); + + int deleteStudentInfo(int id); +} diff --git a/learn03-springboot/src/main/java/top/awin_x/learn/dao/TeacherDB.java b/learn03-springboot/src/main/java/top/awin_x/learn/dao/TeacherDB.java new file mode 100644 index 0000000..19921b0 --- /dev/null +++ b/learn03-springboot/src/main/java/top/awin_x/learn/dao/TeacherDB.java @@ -0,0 +1,20 @@ +package top.awin_x.learn.dao; + + +import top.awin_x.learn.pojo.TeacherInfo; + +import java.util.ArrayList; + +public interface TeacherDB { + ArrayList getAllTeacherInfo(); + + TeacherInfo getTeacherInfoByID(int id); + + TeacherInfo getTeacherInfoByName(String name); + + int addTeacherInfo(TeacherInfo teacherInfo); + + int updateTeacherInfo(TeacherInfo teacherInfo); + + int deleteTeacherInfo(int id); +} diff --git a/learn03-springboot/src/main/java/top/awin_x/learn/dao/UserDB.java b/learn03-springboot/src/main/java/top/awin_x/learn/dao/UserDB.java new file mode 100644 index 0000000..bec86ea --- /dev/null +++ b/learn03-springboot/src/main/java/top/awin_x/learn/dao/UserDB.java @@ -0,0 +1,16 @@ +package top.awin_x.learn.dao; + + +import top.awin_x.learn.pojo.UserInfo; + +public interface UserDB { + UserInfo getUserByName(String username); + + UserInfo getUserById(int id); + + int addUser(UserInfo user); + + int updateUser(UserInfo user); + + int deleteUser(int id); +} diff --git a/learn03-springboot/src/main/java/top/awin_x/learn/dao/impl/CourseDBImpl.java b/learn03-springboot/src/main/java/top/awin_x/learn/dao/impl/CourseDBImpl.java new file mode 100644 index 0000000..a0d7dd9 --- /dev/null +++ b/learn03-springboot/src/main/java/top/awin_x/learn/dao/impl/CourseDBImpl.java @@ -0,0 +1,180 @@ +package top.awin_x.learn.dao.impl; + + +import org.springframework.stereotype.Repository; +import top.awin_x.learn.common.DBTool; +import top.awin_x.learn.dao.CourseDB; +import top.awin_x.learn.pojo.CourseInfo; + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; + +@Repository +public class CourseDBImpl implements CourseDB { + + private CourseInfo fillCourseInfo(ResultSet rs) throws SQLException { + CourseInfo courseInfo = new CourseInfo(); + courseInfo.setId(rs.getInt("N_COURSE_ID")); + courseInfo.setName(rs.getString("VC_COURSE_NAME")); + courseInfo.setType(rs.getInt("N_TYPE")); + courseInfo.setCredit(rs.getFloat("F_CREDIT")); + courseInfo.setGrade(rs.getInt("N_GRADE")); + courseInfo.setMajor(rs.getInt("N_MAJOR")); + courseInfo.setDetail(rs.getString("VC_DETAIL")); + return courseInfo; + } + + @Override + public ArrayList getAllCourseInfo() { + ArrayList courseList = new ArrayList<>(); + try { + PreparedStatement ps = DBTool.getPreparedStatement("SELECT * FROM t_course"); + ResultSet rs = ps.executeQuery(); + while (rs.next()) { + courseList.add(fillCourseInfo(rs)); + } + DBTool.close(ps, rs); + } catch (SQLException e) { + throw new RuntimeException(e); + } + return courseList; + } + + @Override + public ArrayList getCourseInfos(int page, int pageSize, String keyword, int type) { + ArrayList courseList = new ArrayList<>(); + String sql = "SELECT * FROM t_course WHERE UPPER(VC_COURSE_NAME) LIKE ? AND ? IN (N_TYPE, 0) ORDER BY N_COURSE_ID LIMIT ?, ?"; + try { + PreparedStatement ps = DBTool.getPreparedStatement(sql); + ps.setString(1, "%"+keyword.toUpperCase()+"%"); + ps.setInt(2, type); + ps.setInt(3, (page - 1) * pageSize); + ps.setInt(4, pageSize); + ResultSet rs = ps.executeQuery(); + while (rs.next()) { + courseList.add(fillCourseInfo(rs)); + } + DBTool.close(ps, rs); + } catch (SQLException e) { + throw new RuntimeException(e); + } + return courseList; + } + + @Override + public CourseInfo getCourseInfoByID(int id) { + CourseInfo courseInfo = null; + try { + PreparedStatement ps = DBTool.getPreparedStatement("select * from t_course WHERE N_COURSE_ID = ?"); + ps.setInt(1, id); + ResultSet rs = ps.executeQuery(); + while (rs.next()) { + String name = rs.getString("VC_COURSE_NAME"); + int type = rs.getInt("N_TYPE"); + float credits = rs.getFloat("F_CREDIT"); + int grade = rs.getInt("N_GRADE"); + int major = rs.getInt("N_MAJOR"); + String detail = rs.getString("VC_DETAIL"); + courseInfo = new CourseInfo(id, name, type, credits, grade, major, detail); + } + DBTool.close(ps, rs); + } catch (SQLException e) { + throw new RuntimeException(e); + } + return courseInfo; + } + + @Override + public int getAllCourseInfoCount() { + int count = 0; + String sql = "SELECT COUNT(*) FROM t_course"; + try { + PreparedStatement ps = DBTool.getPreparedStatement(sql); + ResultSet rs = ps.executeQuery(); + if (rs.next()) { + count = rs.getInt(1); + } + DBTool.close(ps, rs); + } catch (SQLException e) { + return -1; + } + return count; + } + + @Override + public int getAllCourseInfoCount(String keyword, int type) { + int count = 0; + String sql = "SELECT COUNT(*) FROM t_course WHERE UPPER(VC_COURSE_NAME) LIKE ? AND ? IN (N_TYPE, 0)"; + try { + PreparedStatement ps = DBTool.getPreparedStatement(sql); + ps.setString(1, "%"+keyword.toUpperCase()+"%"); + ps.setInt(2, type); + ResultSet rs = ps.executeQuery(); + if (rs.next()) { + count = rs.getInt(1); + } + DBTool.close(ps, rs); + } catch (SQLException e) { + return -1; + } + return count; + } + + @Override + public int addCourseInfo(CourseInfo courseInfo) { + int lines; + try { + String sql = "INSERT INTO t_course (VC_COURSE_NAME, N_TYPE, F_CREDIT, N_GRADE, N_MAJOR, VC_DETAIL) VALUES(?, ?, ?, ?, ?, ?)"; + PreparedStatement ps = DBTool.getPreparedStatement(sql); + ps.setString(1, courseInfo.getName()); + ps.setInt(2, courseInfo.getType()); + ps.setFloat(3, courseInfo.getCredit()); + ps.setInt(4, courseInfo.getGrade()); + ps.setInt(5, courseInfo.getMajor()); + ps.setString(6, courseInfo.getDetail()); + lines = ps.executeUpdate(); + DBTool.close(ps); + } catch (SQLException e) { + throw new RuntimeException(e); + } + return lines; + } + + @Override + public int updateCourseInfo(CourseInfo courseInfo) { + int lines; + try { + PreparedStatement ps = DBTool.getPreparedStatement("UPDATE t_course SET VC_COURSE_NAME = ?," + + " N_TYPE = ?, F_CREDIT = ?, N_GRADE = ?, N_MAJOR = ?, VC_DETAIL = ? WHERE N_COURSE_ID = ?"); + ps.setString(1, courseInfo.getName()); + ps.setInt(2, courseInfo.getType()); + ps.setFloat(3, courseInfo.getCredit()); + ps.setInt(4, courseInfo.getGrade()); + ps.setInt(5, courseInfo.getMajor()); + ps.setString(6, courseInfo.getDetail()); + ps.setInt(7, courseInfo.getId()); + lines = ps.executeUpdate(); + DBTool.close(ps); + } catch (SQLException e) { + throw new RuntimeException(e); + } + return lines; + } + + @Override + public int deleteCourseInfo(int id) { + int lines; + try { + String sql = "DELETE FROM t_course WHERE N_COURSE_ID = ?"; + PreparedStatement ps = DBTool.getPreparedStatement(sql); + ps.setInt(1, id); + lines = ps.executeUpdate(); + DBTool.close(ps); + } catch (SQLException e) { + throw new RuntimeException(e); + } + return lines; + } +} diff --git a/learn03-springboot/src/main/java/top/awin_x/learn/dao/impl/TeacherDBImpl.java b/learn03-springboot/src/main/java/top/awin_x/learn/dao/impl/TeacherDBImpl.java new file mode 100644 index 0000000..4318d37 --- /dev/null +++ b/learn03-springboot/src/main/java/top/awin_x/learn/dao/impl/TeacherDBImpl.java @@ -0,0 +1,62 @@ +package top.awin_x.learn.dao.impl; + + + +import top.awin_x.learn.common.DBTool; +import top.awin_x.learn.dao.TeacherDB; +import top.awin_x.learn.pojo.TeacherInfo; + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; + +public class TeacherDBImpl implements TeacherDB { + @Override + public ArrayList getAllTeacherInfo() { + ArrayList teacherInfos = new ArrayList<>(); + String sql = "select * from t_teacher"; + try{ + PreparedStatement ps = DBTool.getPreparedStatement(sql); + ResultSet rs = ps.executeQuery(); + while(rs.next()){ + TeacherInfo teacherInfo = new TeacherInfo(); + teacherInfo.setId(rs.getInt("N_TEACHER_ID")); + teacherInfo.setName(rs.getString("VC_TEACHER_NAME")); + teacherInfo.setSex(rs.getInt("N_SEX")); + teacherInfo.setBrith(rs.getString("VC_BIRTH")); + teacherInfo.setEduc(rs.getInt("N_EDUC")); + teacherInfo.setTitle(rs.getInt("N_TITLE")); + teacherInfos.add(teacherInfo); + } + } catch (SQLException e) { + throw new RuntimeException(e); + } + return teacherInfos; + } + + @Override + public TeacherInfo getTeacherInfoByID(int id) { + return null; + } + + @Override + public TeacherInfo getTeacherInfoByName(String name) { + return null; + } + + @Override + public int addTeacherInfo(TeacherInfo teacherInfo) { + return 0; + } + + @Override + public int updateTeacherInfo(TeacherInfo teacherInfo) { + return 0; + } + + @Override + public int deleteTeacherInfo(int id) { + return 0; + } +} diff --git a/learn03-springboot/src/main/java/top/awin_x/learn/dao/impl/UserDBImpl.java b/learn03-springboot/src/main/java/top/awin_x/learn/dao/impl/UserDBImpl.java new file mode 100644 index 0000000..2712e44 --- /dev/null +++ b/learn03-springboot/src/main/java/top/awin_x/learn/dao/impl/UserDBImpl.java @@ -0,0 +1,104 @@ +package top.awin_x.learn.dao.impl; + + +import top.awin_x.learn.common.DBTool; +import top.awin_x.learn.dao.UserDB; +import top.awin_x.learn.pojo.UserInfo; + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +public class UserDBImpl implements UserDB { + + @Override + public UserInfo getUserByName(String username) { + UserInfo u = new UserInfo(); + ResultSet rs = null; + try{ + String sql = "select * from t_user where VC_LOGIN_NAME = ?"; + PreparedStatement ps = DBTool.getPreparedStatement(sql); + ps.setString(1, username); + rs = ps.executeQuery(); + if(rs.next()) { + u.setId(rs.getInt("N_USER_ID")); + u.setName(rs.getString("VC_LOGIN_NAME")); + u.setPass(rs.getString("VC_PASSWORD")); + }else{ + u = null; + } + DBTool.close(ps, rs); + } catch (SQLException e) { + throw new RuntimeException(e); + } + return u; + } + + @Override + public UserInfo getUserById(int id) { + UserInfo u = new UserInfo(); + ResultSet rs = null; + try{ + String sql = "select * from t_user where N_USER_ID = ?"; + PreparedStatement ps = DBTool.getPreparedStatement(sql); + ps.setInt(1, id); + rs = ps.executeQuery(); + if(rs.next()) { + u.setId(rs.getInt("N_USER_ID")); + u.setName(rs.getString("VC_LOGIN_NAME")); + u.setPass(rs.getString("VC_PASSWORD")); + }else{ + u = null; + } + DBTool.close(ps, rs); + } catch (SQLException e) { + throw new RuntimeException(e); + } + return u; + } + + @Override + public int addUser(UserInfo user) { + int lines = 0; + String sql = "INSERT INTO t_user (VC_LOGIN_NAME, VC_PASSWORD) VALUES (?, ?)"; + try{ + PreparedStatement ps = DBTool.getPreparedStatement(sql); + ps.setString(1, user.getName()); + ps.setString(2, user.getPass()); + lines = ps.executeUpdate(); + } catch (SQLException e) { + throw new RuntimeException(e); + } + return lines; + } + + @Override + public int updateUser(UserInfo user) { + int lines = 0; + String sql = "UPDATE t_user SET VC_PASSWORD = ?,VC_LOGIN_NAME = ? WHERE N_USER_ID = ?"; + try{ + PreparedStatement ps = DBTool.getPreparedStatement(sql); + ps.setString(1, user.getPass()); + ps.setString(2, user.getName()); + ps.setInt(3, user.getId()); + lines = ps.executeUpdate(); + } catch (SQLException e) { + throw new RuntimeException(e); + } + return lines; + } + + @Override + public int deleteUser(int id) { + int lines = 0; + String sql = "DELETE FROM t_user WHERE N_USER_ID = ?"; + try{ + PreparedStatement ps = DBTool.getPreparedStatement(sql); + ps.setInt(1, id); + lines = ps.executeUpdate(); + } catch (SQLException e) { + throw new RuntimeException(e); + } + return 0; + } +} diff --git a/learn03-springboot/src/main/java/top/awin_x/learn/mapper/CourseMapper.java b/learn03-springboot/src/main/java/top/awin_x/learn/mapper/CourseMapper.java new file mode 100644 index 0000000..2e4c098 --- /dev/null +++ b/learn03-springboot/src/main/java/top/awin_x/learn/mapper/CourseMapper.java @@ -0,0 +1,20 @@ +package top.awin_x.learn.mapper; + +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Options; +import org.apache.ibatis.annotations.Select; +import top.awin_x.learn.pojo.Course; + +import java.util.ArrayList; + +@Mapper +public interface CourseMapper { + @Select("SELECT * FROM t_course") + public ArrayList selectAll(); + + @Options(useGeneratedKeys = true, keyProperty = "N_COURSE_ID") + @Insert("INSERT INTO t_course(VC_COURSE_NAME, N_TYPE, F_CREDIT, N_GRADE, N_MAJOR, VC_DETAIL) VALUES " + + "(#{VC_COURSE_NAME}, #{N_TYPE},#{F_CREDIT},#{N_GRADE},#{N_MAJOR},#{VC_DETAIL})") + public int insert(Course course); +} diff --git a/learn03-springboot/src/main/java/top/awin_x/learn/pojo/Course.java b/learn03-springboot/src/main/java/top/awin_x/learn/pojo/Course.java new file mode 100644 index 0000000..a959ab6 --- /dev/null +++ b/learn03-springboot/src/main/java/top/awin_x/learn/pojo/Course.java @@ -0,0 +1,18 @@ +package top.awin_x.learn.pojo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class Course { + private Integer N_COURSE_ID; + private String VC_COURSE_NAME; + private Integer N_TYPE; + private Float F_CREDIT; + private Integer N_GRADE; + private Integer N_MAJOR; + private String VC_DETAIL; +} diff --git a/learn03-springboot/src/main/java/top/awin_x/learn/pojo/CourseInfo.java b/learn03-springboot/src/main/java/top/awin_x/learn/pojo/CourseInfo.java new file mode 100644 index 0000000..3a867ff --- /dev/null +++ b/learn03-springboot/src/main/java/top/awin_x/learn/pojo/CourseInfo.java @@ -0,0 +1,21 @@ +package top.awin_x.learn.pojo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 这是课程信息的封装类 + */ +@AllArgsConstructor +@NoArgsConstructor +@Data +public class CourseInfo { + private int id; //id为-1时表示当前内容尚未进入数据库,没有id + private String name; + private int type; + private float credit; + private int grade; + private int major; + private String detail; +} \ No newline at end of file diff --git a/learn03-springboot/src/main/java/top/awin_x/learn/pojo/Result.java b/learn03-springboot/src/main/java/top/awin_x/learn/pojo/Result.java new file mode 100644 index 0000000..cb197dd --- /dev/null +++ b/learn03-springboot/src/main/java/top/awin_x/learn/pojo/Result.java @@ -0,0 +1,59 @@ +package top.awin_x.learn.pojo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 这是统一的响应格式类,所有的响应都应该是这个类 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class Result { + private boolean success = true; + private String msg = "success"; + private int count = 0; + private Object data = ""; + + public static Result success(Object data, String msg) { + Result result = success(data); + result.setMsg(msg); + return result; + } + + public static Result success(Object data) { + Result result = new Result(); + result.setSuccess(true); + result.setData(data); + return result; + } + + public static Result success() { + return success(""); + } + + public static Result success(boolean isSuccess) { + Result result = new Result(); + result.setSuccess(isSuccess); + if (isSuccess){ + result.setMsg("success"); + }else{ + result.setMsg("fail"); + } + return result; + } + + public static Result error(String msg) { + Result result = new Result(); + result.setSuccess(false); + result.setMsg(msg); + return result; + } + + public static Result error(Object data, String msg) { + Result result = error(msg); + result.setData(data); + return result; + } +} diff --git a/learn03-springboot/src/main/java/top/awin_x/learn/pojo/ScoreInfo.java b/learn03-springboot/src/main/java/top/awin_x/learn/pojo/ScoreInfo.java new file mode 100644 index 0000000..f092c24 --- /dev/null +++ b/learn03-springboot/src/main/java/top/awin_x/learn/pojo/ScoreInfo.java @@ -0,0 +1,15 @@ +package top.awin_x.learn.pojo; + + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ScoreInfo { + private int studentId; + private int courseId; + private float score; +} diff --git a/learn03-springboot/src/main/java/top/awin_x/learn/pojo/StudentInfo.java b/learn03-springboot/src/main/java/top/awin_x/learn/pojo/StudentInfo.java new file mode 100644 index 0000000..667893a --- /dev/null +++ b/learn03-springboot/src/main/java/top/awin_x/learn/pojo/StudentInfo.java @@ -0,0 +1,18 @@ +package top.awin_x.learn.pojo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class StudentInfo { + private int id; + private String code; + private String name; + private int sex; + private int grade; + private String major; + private String detail; +} diff --git a/learn03-springboot/src/main/java/top/awin_x/learn/pojo/TeacherInfo.java b/learn03-springboot/src/main/java/top/awin_x/learn/pojo/TeacherInfo.java new file mode 100644 index 0000000..d0a166d --- /dev/null +++ b/learn03-springboot/src/main/java/top/awin_x/learn/pojo/TeacherInfo.java @@ -0,0 +1,17 @@ +package top.awin_x.learn.pojo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class TeacherInfo { + private int id; + private String name; + private int sex; + private String brith; + private int educ; + private int title; +} diff --git a/learn03-springboot/src/main/java/top/awin_x/learn/pojo/UserInfo.java b/learn03-springboot/src/main/java/top/awin_x/learn/pojo/UserInfo.java new file mode 100644 index 0000000..6703b83 --- /dev/null +++ b/learn03-springboot/src/main/java/top/awin_x/learn/pojo/UserInfo.java @@ -0,0 +1,14 @@ +package top.awin_x.learn.pojo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@AllArgsConstructor +@NoArgsConstructor +@Data +public class UserInfo { + private int id; + private String name; + private String pass; +} \ No newline at end of file diff --git a/learn03-springboot/src/main/java/top/awin_x/learn/service/CourseService.java b/learn03-springboot/src/main/java/top/awin_x/learn/service/CourseService.java new file mode 100644 index 0000000..24e5d11 --- /dev/null +++ b/learn03-springboot/src/main/java/top/awin_x/learn/service/CourseService.java @@ -0,0 +1,10 @@ +package top.awin_x.learn.service; + +import top.awin_x.learn.pojo.CourseInfo; + +import java.util.ArrayList; + +public interface CourseService { + public ArrayList listCourses(int page, int pageSize, String keyword, int type); + public boolean editCourse(CourseInfo course); +} diff --git a/learn03-springboot/src/main/java/top/awin_x/learn/service/ScoreService.java b/learn03-springboot/src/main/java/top/awin_x/learn/service/ScoreService.java new file mode 100644 index 0000000..375c475 --- /dev/null +++ b/learn03-springboot/src/main/java/top/awin_x/learn/service/ScoreService.java @@ -0,0 +1,4 @@ +package top.awin_x.learn.service; + +public interface ScoreService { +} diff --git a/learn03-springboot/src/main/java/top/awin_x/learn/service/StudentService.java b/learn03-springboot/src/main/java/top/awin_x/learn/service/StudentService.java new file mode 100644 index 0000000..fd01b62 --- /dev/null +++ b/learn03-springboot/src/main/java/top/awin_x/learn/service/StudentService.java @@ -0,0 +1,4 @@ +package top.awin_x.learn.service; + +public interface StudentService { +} diff --git a/learn03-springboot/src/main/java/top/awin_x/learn/service/TeacherService.java b/learn03-springboot/src/main/java/top/awin_x/learn/service/TeacherService.java new file mode 100644 index 0000000..a4d2f7b --- /dev/null +++ b/learn03-springboot/src/main/java/top/awin_x/learn/service/TeacherService.java @@ -0,0 +1,4 @@ +package top.awin_x.learn.service; + +public interface TeacherService { +} diff --git a/learn03-springboot/src/main/java/top/awin_x/learn/service/UserService.java b/learn03-springboot/src/main/java/top/awin_x/learn/service/UserService.java new file mode 100644 index 0000000..65f5685 --- /dev/null +++ b/learn03-springboot/src/main/java/top/awin_x/learn/service/UserService.java @@ -0,0 +1,4 @@ +package top.awin_x.learn.service; + +public interface UserService { +} diff --git a/learn03-springboot/src/main/java/top/awin_x/learn/service/impl/CourseServiceImpl.java b/learn03-springboot/src/main/java/top/awin_x/learn/service/impl/CourseServiceImpl.java new file mode 100644 index 0000000..f26c530 --- /dev/null +++ b/learn03-springboot/src/main/java/top/awin_x/learn/service/impl/CourseServiceImpl.java @@ -0,0 +1,32 @@ +package top.awin_x.learn.service.impl; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import top.awin_x.learn.dao.impl.CourseDBImpl; +import top.awin_x.learn.pojo.CourseInfo; +import top.awin_x.learn.service.CourseService; + +import java.util.ArrayList; + +@Service +public class CourseServiceImpl implements CourseService { + @Autowired + private CourseDBImpl courseDB; + + @Override + public ArrayList listCourses(int page, int pageSize, String keyword, int type) { + return new CourseDBImpl().getCourseInfos(page, pageSize, keyword, type); + } + + @Override + public boolean editCourse(CourseInfo course) { + CourseDBImpl courseDBImpl = new CourseDBImpl(); + CourseInfo courseInfo = courseDBImpl.getCourseInfoByID(course.getId()); + if (courseInfo != null) { + courseDBImpl.updateCourseInfo(course); + return true; + }else{ + return false; + } + } +} diff --git a/learn03-springboot/src/main/resources/application.properties b/learn03-springboot/src/main/resources/application.properties index 45c4bb2..a6fc412 100644 --- a/learn03-springboot/src/main/resources/application.properties +++ b/learn03-springboot/src/main/resources/application.properties @@ -1 +1,6 @@ spring.application.name=learn03-springboot + +spring.datasource.driver-class-name=org.sqlite.JDBC +spring.datasource.url=jdbc:sqlite:F:\\Work_Area\\desk\\database\\\u5B66\u4E60\\java\u6D4B\u8BD5\u6570\u636E\u5E93\\db_student.db + +mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl diff --git a/learn03-springboot/src/main/resources/database.properties b/learn03-springboot/src/main/resources/database.properties new file mode 100644 index 0000000..8dcbcdd --- /dev/null +++ b/learn03-springboot/src/main/resources/database.properties @@ -0,0 +1,41 @@ +#-------------------------------------------------------------------------------------------------- +#DriverClassName=com.mysql.cj.jdbc.Driver +#url=jdbc:mysql://10.19.38.253:3306/chat?useUnicode=true&characterEncoding=utf-8&useSSL=true +#username=admin +#password=1227496003131313xY +#-------------------------------------------------------------------------------------------------- +driverClassName=org.sqlite.JDBC +url=jdbc:sqlite:F:\\Work_Area\\desk\\database\\ѧϰ\\javaݿ\\db_student.db +#-------------------------------------------------------------------------------------------------- + +defaultAutoCommit=true + +defaultReadOnly=false + +initialSize=10 + +maxActive=20 + +maxIdle=20 + +minIdle=5 + +maxWait=10000 + +testOnBorrow=true + +testOnReturn=false + +validationQuery=select 1 + +validationQueryTimeout=1 + +testWhileIdle=false + +timeBetweenEvictionRunsMillis=1 + +numTestsPerEvictionRun=3 + +poolPreparedStatements=true + +maxOpenPreparedStatements=3 \ No newline at end of file diff --git a/learn03-springboot/src/main/resources/static/test.html b/learn03-springboot/src/main/resources/static/test.html new file mode 100644 index 0000000..0e19e9c --- /dev/null +++ b/learn03-springboot/src/main/resources/static/test.html @@ -0,0 +1,15 @@ + + + + + 测试 + + +
+ + +
+ + \ No newline at end of file diff --git a/learn03-springboot/src/test/java/top/awin_x/learn/Learn03SpringbootApplicationTests.java b/learn03-springboot/src/test/java/top/awin_x/learn/Learn03SpringbootApplicationTests.java index a78dccd..9bd395d 100644 --- a/learn03-springboot/src/test/java/top/awin_x/learn/Learn03SpringbootApplicationTests.java +++ b/learn03-springboot/src/test/java/top/awin_x/learn/Learn03SpringbootApplicationTests.java @@ -1,13 +1,38 @@ package top.awin_x.learn; import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import top.awin_x.learn.mapper.CourseMapper; +import top.awin_x.learn.pojo.Course; + +import java.util.ArrayList; @SpringBootTest class Learn03SpringbootApplicationTests { + @Autowired + private CourseMapper courseMapper; + @Test - void contextLoads() { + public void testSelectAllCourse(){ + ArrayList courses = courseMapper.selectAll(); + for (Course course : courses) { + System.out.println(course); + } + } + + @Test + public void testInsertCourse(){ + Course course = new Course(); + course.setVC_COURSE_NAME("测试数据"); + course.setF_CREDIT(2.5F); + course.setN_GRADE(2024); + course.setN_MAJOR(2); + course.setVC_DETAIL("test"); + course.setN_TYPE(2); + System.out.println(courseMapper.insert(course)); + System.out.println(course.getN_COURSE_ID()); } } diff --git a/learn1/learn1.iml b/learn1/learn1.iml index 3f1746d..5387837 100644 --- a/learn1/learn1.iml +++ b/learn1/learn1.iml @@ -19,12 +19,12 @@ - + \ No newline at end of file diff --git a/learn1/web/course/course.jsp b/learn1/web/course/course.jsp index 874321c..d249bc7 100644 --- a/learn1/web/course/course.jsp +++ b/learn1/web/course/course.jsp @@ -16,8 +16,10 @@
+
+
diff --git a/test03/test03.iml b/test03/test03.iml index 3f28cb9..0a65285 100644 --- a/test03/test03.iml +++ b/test03/test03.iml @@ -29,7 +29,7 @@
- + \ No newline at end of file diff --git a/test04/test04.iml b/test04/test04.iml index 0eddcde..c0094be 100644 --- a/test04/test04.iml +++ b/test04/test04.iml @@ -19,12 +19,12 @@ - + \ No newline at end of file diff --git a/test05/.gitignore b/test05/.gitignore new file mode 100644 index 0000000..549e00a --- /dev/null +++ b/test05/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/test05/pom.xml b/test05/pom.xml new file mode 100644 index 0000000..eedc7fa --- /dev/null +++ b/test05/pom.xml @@ -0,0 +1,91 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 3.4.0 + + + top.awin-x + test05 + 0.0.1-SNAPSHOT + test05 + test05 + + + + + + + + + + + + + + + 21 + + + + org.springframework.boot + spring-boot-starter-web + + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + 3.0.4 + + + + org.springframework.boot + spring-boot-starter-test + test + + + + org.mybatis.spring.boot + mybatis-spring-boot-starter-test + 3.0.4 + test + + + + com.alibaba + druid-spring-boot-3-starter + 1.2.24 + + + + org.xerial + sqlite-jdbc + 3.47.1.0 + + + + mysql + mysql-connector-java + 8.0.33 + + + + org.projectlombok + lombok + true + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + diff --git a/test05/src/main/java/test05/Test05Application.java b/test05/src/main/java/test05/Test05Application.java new file mode 100644 index 0000000..7a90406 --- /dev/null +++ b/test05/src/main/java/test05/Test05Application.java @@ -0,0 +1,13 @@ +package test05; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class Test05Application { + + public static void main(String[] args) { + SpringApplication.run(Test05Application.class, args); + } + +} diff --git a/test05/src/main/java/test05/controller/CourseController.java b/test05/src/main/java/test05/controller/CourseController.java new file mode 100644 index 0000000..b541442 --- /dev/null +++ b/test05/src/main/java/test05/controller/CourseController.java @@ -0,0 +1,55 @@ +package test05.controller; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import test05.pojo.Course; +import test05.pojo.Result; +import test05.service.CourseService; + +@RestController +@RequestMapping("/courseAction") +@CrossOrigin +public class CourseController { + private final CourseService courseService; + + @Autowired + public CourseController(CourseService courseService) { + this.courseService = courseService; + } + + @RequestMapping("/get") + public Result getCourse(String keyword, Integer type, Integer grade, Float credit, Integer page, Integer pageSize) { + Course course = new Course(); + course.setName(keyword==null?"":keyword); + course.setDetail(keyword==null?"":keyword); + course.setType((type==null?-1:type)); + course.setGrade((grade==null?-1:grade)); + course.setCredit(credit==null?-1:credit); + if (page == null || page < 0) { + page = 0; + } + if (pageSize == null || pageSize < 0) { + pageSize = 10; + } + return courseService.getCourse(course, page, pageSize); + } + + @RequestMapping("/edit") + public Result editCourse(Course course) { + return courseService.updateCourse(course); + } + + @RequestMapping("/add") + public Result addCourse(Course course) { + return courseService.addCourse(course); + } + + @RequestMapping("/delete") + public Result deleteCourse(Integer id) { + Course course = new Course(); + course.setId(id); + return courseService.deleteCourse(course); + } +} diff --git a/test05/src/main/java/test05/controller/Hello.java b/test05/src/main/java/test05/controller/Hello.java new file mode 100644 index 0000000..7855791 --- /dev/null +++ b/test05/src/main/java/test05/controller/Hello.java @@ -0,0 +1,13 @@ +package test05.controller; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/test") +public class Hello { + @RequestMapping("/hello") + public String hello() { + return "Hello World"; + } +} diff --git a/test05/src/main/java/test05/controller/UserController.java b/test05/src/main/java/test05/controller/UserController.java new file mode 100644 index 0000000..9c94134 --- /dev/null +++ b/test05/src/main/java/test05/controller/UserController.java @@ -0,0 +1,9 @@ +package test05.controller; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/userAction") +public class UserController { +} diff --git a/test05/src/main/java/test05/mapper/CourseMapper.java b/test05/src/main/java/test05/mapper/CourseMapper.java new file mode 100644 index 0000000..cfb4959 --- /dev/null +++ b/test05/src/main/java/test05/mapper/CourseMapper.java @@ -0,0 +1,39 @@ +package test05.mapper; + +import org.apache.ibatis.annotations.Mapper; +import test05.pojo.Course; + +import java.util.List; + +@Mapper +public interface CourseMapper { + /** + * 查询课程 + * @param course 作为查询条件,该对象中的默认值表示不对该项筛选。 + * @return 查询结果集 + */ + public List selectCourse(Course course, int page, int pageSize); + + /** + * 插入课程 + * @param course 要插入的课程 + * @return 影响的行数,大于0时表示插入成功 + */ + public int insertCourse(Course course); + + /** + * 更新课程 + * @param course 更新的课程,id作为更新条件,所有其他字段都将会被更新 + * @return 影响的行数,行数大于0时表示根性成功 + */ + public int updateCourse(Course course); + + /** + * 删除课程 + * @param course 删除的课程,id作为删除条件 + * @return 影响的行数,行数大于0时表示删除成功 + */ + public int deleteCourse(Course course); + + public int selectCourseCount(Course course); +} diff --git a/test05/src/main/java/test05/mapper/ScoreMapper.java b/test05/src/main/java/test05/mapper/ScoreMapper.java new file mode 100644 index 0000000..b7bf779 --- /dev/null +++ b/test05/src/main/java/test05/mapper/ScoreMapper.java @@ -0,0 +1,14 @@ +package test05.mapper; + +import org.apache.ibatis.annotations.Mapper; +import test05.pojo.Score; + +import java.util.List; + +@Mapper +public interface ScoreMapper { + public List selectScore(Score score); + public int insertScore(Score score); + public int deleteScore(Score score); + public int updateScore(Score score); +} diff --git a/test05/src/main/java/test05/mapper/StudentMapper.java b/test05/src/main/java/test05/mapper/StudentMapper.java new file mode 100644 index 0000000..468bf2d --- /dev/null +++ b/test05/src/main/java/test05/mapper/StudentMapper.java @@ -0,0 +1,15 @@ +package test05.mapper; + +import org.apache.ibatis.annotations.Mapper; +import test05.pojo.Student; + +import java.util.List; + +@Mapper +public interface StudentMapper { + public List selectStudent(Student student, int page, int pageSize); + public int selectStudentCount(Student student); + public int insertStudent(Student student); + public int updateStudent(Student student); + public int deleteStudent(Student student); +} diff --git a/test05/src/main/java/test05/mapper/TeacherMapper.java b/test05/src/main/java/test05/mapper/TeacherMapper.java new file mode 100644 index 0000000..136bedb --- /dev/null +++ b/test05/src/main/java/test05/mapper/TeacherMapper.java @@ -0,0 +1,14 @@ +package test05.mapper; + +import org.apache.ibatis.annotations.Mapper; +import test05.pojo.Teacher; + +import java.util.List; + +@Mapper +public interface TeacherMapper { + List selectTeacher(Teacher teacher); + int insertTeacher(Teacher teacher); + int updateTeacher(Teacher teacher); + int deleteTeacher(Teacher teacher); +} diff --git a/test05/src/main/java/test05/mapper/UserMapper.java b/test05/src/main/java/test05/mapper/UserMapper.java new file mode 100644 index 0000000..05833ca --- /dev/null +++ b/test05/src/main/java/test05/mapper/UserMapper.java @@ -0,0 +1,15 @@ +package test05.mapper; + +import org.apache.ibatis.annotations.Mapper; +import test05.pojo.User; + +import java.util.List; + +@Mapper +public interface UserMapper { + List selectUser(User user); + User selectUserByName(String username); + int insertUser(User user); + int deleteUser(User user); + int updateUser(User user); +} diff --git a/test05/src/main/java/test05/pojo/Course.java b/test05/src/main/java/test05/pojo/Course.java new file mode 100644 index 0000000..8714eb6 --- /dev/null +++ b/test05/src/main/java/test05/pojo/Course.java @@ -0,0 +1,34 @@ +package test05.pojo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.NonNull; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class Course { + @NonNull + private Integer id = -1; + @NonNull + private String name = ""; + @NonNull + private Integer type = -1; + @NonNull + private Float credit = -1.0F; + @NonNull + private Integer grade = -1; + @NonNull + private Integer major = -1; + @NonNull + private String detail = ""; + + public Course(int id) { + this.id = id; + } + + public boolean isComplete() { + return id != -1 && type != -1 && !name.isEmpty() && grade != -1 && major != -1 && credit != -1; + } +} diff --git a/test05/src/main/java/test05/pojo/CourseFront.java b/test05/src/main/java/test05/pojo/CourseFront.java new file mode 100644 index 0000000..79793bb --- /dev/null +++ b/test05/src/main/java/test05/pojo/CourseFront.java @@ -0,0 +1,10 @@ +package test05.pojo; + +public class CourseFront { + private int id; + private String name; + private int type; + private float credit; + private int grade; + private String detail; +} diff --git a/test05/src/main/java/test05/pojo/Result.java b/test05/src/main/java/test05/pojo/Result.java new file mode 100644 index 0000000..489a41c --- /dev/null +++ b/test05/src/main/java/test05/pojo/Result.java @@ -0,0 +1,66 @@ +package test05.pojo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.NonNull; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class Result { + private boolean success=true; + private int count=-1; + @NonNull + private String msg="success"; + @NonNull + private Object data=""; + + public static Result success(Object data, String msg) { + return success(data, msg, -1); + } + + public static Result success(Object data, int count){ + return success(data, "success", count); + } + + public static Result success(Object data, String msg, int count) { + Result result = success(data); + result.setMsg(msg); + result.setCount(count); + return result; + } + + public static Result success(Object data) { + Result result = new Result(); + result.setSuccess(true); + result.setData(data); + return result; + } + + public static Result success() { + return success(""); + } + + public static Result success(boolean isSuccess) { + Result result = new Result(); + result.setSuccess(isSuccess); + if(!isSuccess){ + result.setMsg("fail"); + } + return result; + } + + public static Result error(String msg) { + Result result = new Result(); + result.setSuccess(false); + result.setMsg(msg); + return result; + } + + public static Result error(String msg, Object data) { + Result result = error(msg); + result.setData(data); + return result; + } +} diff --git a/test05/src/main/java/test05/pojo/Score.java b/test05/src/main/java/test05/pojo/Score.java new file mode 100644 index 0000000..dcb4648 --- /dev/null +++ b/test05/src/main/java/test05/pojo/Score.java @@ -0,0 +1,22 @@ +package test05.pojo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.NonNull; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class Score { + @NonNull + private Integer N_STUDENT_ID = -1; + @NonNull + private Integer N_COURSE_ID = -1; + @NonNull + private Float F_SCORE = -1.0F; + public Score(int stu_id, int course_id){ + this.N_STUDENT_ID = stu_id; + this.N_COURSE_ID = course_id; + } +} diff --git a/test05/src/main/java/test05/pojo/Student.java b/test05/src/main/java/test05/pojo/Student.java new file mode 100644 index 0000000..3f61bf9 --- /dev/null +++ b/test05/src/main/java/test05/pojo/Student.java @@ -0,0 +1,29 @@ +package test05.pojo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.NonNull; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class Student { + @NonNull + private Integer N_STUDENT_ID=-1; + @NonNull + private String VC_STUDENT_CODE=""; + @NonNull + private String VC_STUDENT_NAME=""; + @NonNull + private Integer N_SEX=-1; + @NonNull + private Integer N_GRADE=-1; + @NonNull + private Integer N_MAJOR=-1; + @NonNull + private String VC_DETAIL=""; + public Student(int id){ + N_STUDENT_ID=id; + } +} diff --git a/test05/src/main/java/test05/pojo/Teacher.java b/test05/src/main/java/test05/pojo/Teacher.java new file mode 100644 index 0000000..d6e8058 --- /dev/null +++ b/test05/src/main/java/test05/pojo/Teacher.java @@ -0,0 +1,27 @@ +package test05.pojo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.NonNull; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class Teacher { + @NonNull + Integer N_TEACHER_ID=-1; + @NonNull + String VC_TEACHER_NAME=""; + @NonNull + Integer N_SEX=-1; + @NonNull + String VC_BIRTH=""; + @NonNull + Integer N_EDUC=-1; + @NonNull + Integer N_TITLE=-1; + public Teacher(int id){ + N_TEACHER_ID = id; + } +} diff --git a/test05/src/main/java/test05/pojo/User.java b/test05/src/main/java/test05/pojo/User.java new file mode 100644 index 0000000..de14c09 --- /dev/null +++ b/test05/src/main/java/test05/pojo/User.java @@ -0,0 +1,21 @@ +package test05.pojo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.NonNull; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class User { + @NonNull + private Integer N_USER_ID=-1; + @NonNull + private String VC_LOGIN_NAME =""; + @NonNull + private String VC_PASSWORD=""; + public User(int id){ + N_USER_ID = id; + } +} diff --git a/test05/src/main/java/test05/service/CourseService.java b/test05/src/main/java/test05/service/CourseService.java new file mode 100644 index 0000000..ab01bfd --- /dev/null +++ b/test05/src/main/java/test05/service/CourseService.java @@ -0,0 +1,11 @@ +package test05.service; + +import test05.pojo.Course; +import test05.pojo.Result; + +public interface CourseService { + public Result addCourse(Course course); + public Result deleteCourse(Course course); + public Result updateCourse(Course course); + Result getCourse(Course course, int page, int pageSize); +} diff --git a/test05/src/main/java/test05/service/UserService.java b/test05/src/main/java/test05/service/UserService.java new file mode 100644 index 0000000..67d8ff5 --- /dev/null +++ b/test05/src/main/java/test05/service/UserService.java @@ -0,0 +1,4 @@ +package test05.service; + +public interface UserService { +} diff --git a/test05/src/main/java/test05/service/impl/CourseServiceImpl.java b/test05/src/main/java/test05/service/impl/CourseServiceImpl.java new file mode 100644 index 0000000..681f4ef --- /dev/null +++ b/test05/src/main/java/test05/service/impl/CourseServiceImpl.java @@ -0,0 +1,85 @@ +package test05.service.impl; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import test05.mapper.CourseMapper; +import test05.pojo.Course; +import test05.pojo.Result; +import test05.service.CourseService; + +import java.util.List; + +@Service +public class CourseServiceImpl implements CourseService { + + + private final CourseMapper courseMapper; + + private String courseCheck(Course course) { + if (course.getId()!=-1){ + return "do not set N_COURSE_ID"; + } + if (course.getName().length()<4||course.getName().length()>25){ + return "name too long"; + } + if (course.getGrade()>3000||course.getGrade()<2000){ + return "grade invalid"; + } + if (course.getMajor()<1||course.getMajor()>6){ + return "major invalid"; + } + if (course.getType()<1||course.getType()>6){ + return "type invalid"; + } + if (course.getDetail().length()>200){ + return "detail too long"; + } + return "ok"; + } + + @Autowired + public CourseServiceImpl(CourseMapper courseMapper) { + this.courseMapper = courseMapper; + } + + @Override + public Result addCourse(Course course) { + String check = courseCheck(course); + if (!check.equals("ok")){ + return Result.error(check); + } + if (courseMapper.insertCourse(course) > 0 && course.getId()!=-1){ + return Result.success(course); + }else{ + return Result.error("add course error"); + } + } + + @Override + public Result deleteCourse(Course course) { + if (courseMapper.deleteCourse(course)>=1){ + return Result.success(course); + }else{ + return Result.error("delete course error"); + } + } + + @Override + public Result updateCourse(Course course) { + String check = courseCheck(course); + if (!course.isComplete()&&check.equals("ok")){ + return Result.error("please complete the course:"+check); + }else if(courseMapper.updateCourse(course)>=1){ + return Result.success(course); + }else{ + return Result.error("update course error"); + } + } + + @Override + public Result getCourse(Course course, int page, int pageSize) { + List courseList = courseMapper.selectCourse(course, page, pageSize); + int total = courseMapper.selectCourseCount(course); + return Result.success(courseList, total); + } +} diff --git a/test05/src/main/resources/application.properties b/test05/src/main/resources/application.properties new file mode 100644 index 0000000..7b86124 --- /dev/null +++ b/test05/src/main/resources/application.properties @@ -0,0 +1,15 @@ +spring.application.name=test05 + +#\u4F7F\u7528\u672C\u5730\u6D4B\u8BD5\u6570\u636E\u5E93 +spring.datasource.driver-class-name=org.sqlite.JDBC +spring.datasource.url=jdbc:sqlite:F:\\Work_Area\\desk\\database\\\u5B66\u4E60\\java\u6D4B\u8BD5\u6570\u636E\u5E93\\db_student.db + +##\u4F7F\u7528mysql\u6570\u636E\u5E93 +#spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +#spring.datasource.url=jdbc:mysql://localhost:3306/db_student.db +#spring.datasource.username=root +#spring.datasource.password=123456 + +spring.datasource.druid.validation-query=SELECT 1 + +mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl diff --git a/test05/src/main/resources/test05/mapper/CourseMapper.xml b/test05/src/main/resources/test05/mapper/CourseMapper.xml new file mode 100644 index 0000000..a48ba70 --- /dev/null +++ b/test05/src/main/resources/test05/mapper/CourseMapper.xml @@ -0,0 +1,50 @@ + + + + + + + INSERT INTO t_course + (VC_COURSE_NAME, N_TYPE, F_CREDIT, N_GRADE, N_MAJOR, VC_DETAIL) + VALUES (#{name}, #{type}, #{credit}, #{grade}, #{major}, #{detail}) + + + UPDATE t_course + SET VC_COURSE_NAME=#{name}, + N_TYPE=#{type}, + F_CREDIT=#{credit}, + N_GRADE=#{grade}, + N_MAJOR=#{major}, + VC_DETAIL=#{detail} + WHERE N_COURSE_ID=#{id}; + + + DELETE FROM t_course + WHERE N_COURSE_ID=#{id}; + + \ No newline at end of file diff --git a/test05/src/main/resources/test05/mapper/ScoreMapper.xml b/test05/src/main/resources/test05/mapper/ScoreMapper.xml new file mode 100644 index 0000000..ade087d --- /dev/null +++ b/test05/src/main/resources/test05/mapper/ScoreMapper.xml @@ -0,0 +1,30 @@ + + + + + + UPDATE t_score + SET F_SCORE = #{F_SCORE} + WHERE N_COURSE_ID = #{N_COURSE_ID} + AND N_STUDENT_ID = #{N_STUDENT_ID} + + + DELETE + FROM t_score + WHERE N_STUDENT_ID = #{N_STUDENT_ID} + AND N_COURSE_ID = #{N_COURSE_ID} + + + INSERT INTO t_score + (N_STUDENT_ID, N_COURSE_ID, F_SCORE) + VALUES (#{N_STUDENT_ID}, #{N_COURSE_ID}, #{F_SCORE}); + + \ No newline at end of file diff --git a/test05/src/main/resources/test05/mapper/StudentMapper.xml b/test05/src/main/resources/test05/mapper/StudentMapper.xml new file mode 100644 index 0000000..07606d4 --- /dev/null +++ b/test05/src/main/resources/test05/mapper/StudentMapper.xml @@ -0,0 +1,40 @@ + + + + + + INSERT INTO t_student + (VC_STUDENT_CODE, VC_STUDENT_NAME, N_SEX, N_GRADE, N_MAJOR, VC_DETAIL) + VALUES + (#{VC_STUDENT_CODE},#{VC_STUDENT_NAME},#{N_SEX},#{N_GRADE},#{N_MAJOR},#{VC_DETAIL}); + + + DELETE + FROM t_student + WHERE N_STUDENT_ID = #{N_STUDENT_ID}; + + + UPDATE t_student + SET VC_STUDENT_CODE=#{VC_STUDENT_CODE}, + VC_STUDENT_NAME=#{VC_STUDENT_NAME}, + N_SEX=#{N_SEX}, + N_GRADE=#{N_GRADE}, + N_MAJOR=#{N_MAJOR}, + VC_DETAIL=#{VC_DETAIL} + WHERE N_STUDENT_ID=#{N_STUDENT_ID}; + + \ No newline at end of file diff --git a/test05/src/main/resources/test05/mapper/TeacherMapper.xml b/test05/src/main/resources/test05/mapper/TeacherMapper.xml new file mode 100644 index 0000000..abc33e7 --- /dev/null +++ b/test05/src/main/resources/test05/mapper/TeacherMapper.xml @@ -0,0 +1,34 @@ + + + + + + INSERT INTO t_teacher + (VC_TEACHER_NAME, N_SEX, VC_BIRTH, N_EDUC, N_TITLE) + VALUES (#{VC_TEACHER_NAME},#{N_SEX},#{VC_BIRTH},#{N_EDUC},#{N_TITLE}) + + + UPDATE t_teacher + SET VC_TEACHER_NAME=#{VC_TEACHER_NAME}, + N_SEX=#{N_SEX}, + VC_BIRTH=#{VC_BIRTH}, + N_EDUC=#{N_EDUC}, + N_TITLE=#{N_TITLE} + WHERE N_TEACHER_ID = #{N_TEACHER_ID} + + + DELETE FROM t_teacher + WHERE N_TEACHER_ID = #{N_TEACHER_ID} + + \ No newline at end of file diff --git a/test05/src/main/resources/test05/mapper/UserMapper.xml b/test05/src/main/resources/test05/mapper/UserMapper.xml new file mode 100644 index 0000000..8fe7102 --- /dev/null +++ b/test05/src/main/resources/test05/mapper/UserMapper.xml @@ -0,0 +1,36 @@ + + + + + + INSERT INTO t_user + (VC_LOGIN_NAME, VC_PASSWORD) + VALUES + (#{VC_LOGIN_NAME}, #{VC_PASSWORD}) + + + UPDATE t_user + SET VC_PASSWORD=#{VC_PASSWORD}, + VC_LOGIN_NAME=#{VC_LOGIN_NAME} + WHERE N_USER_ID = #{N_USER_ID}; + + + DELETE + FROM t_user + WHERE N_USER_ID = #{N_USER_ID} + + + \ No newline at end of file diff --git a/test05/src/test/java/test05/Test05ApplicationTests.java b/test05/src/test/java/test05/Test05ApplicationTests.java new file mode 100644 index 0000000..e501fe7 --- /dev/null +++ b/test05/src/test/java/test05/Test05ApplicationTests.java @@ -0,0 +1,222 @@ +package test05; + +import org.junit.jupiter.api.Test; +import org.opentest4j.TestAbortedException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import test05.mapper.*; +import test05.pojo.*; + +import java.util.List; + +@SpringBootTest +class Test05ApplicationTests { + @Autowired + CourseMapper courseMapper; + @Autowired + ScoreMapper scoreMapper; + @Autowired + StudentMapper studentMapper; + @Autowired + TeacherMapper teacherMapper; + @Autowired + UserMapper userMapper; + + @Test + public void courseMapperTest(){ + + Course course = new Course(); + course.setName("测试课程"); + course.setCredit(1.0F); + course.setMajor(2); + course.setType(2); + course.setGrade(2022); + List selectCourse = courseMapper.selectCourse(course, 0, 10); + if (!selectCourse.isEmpty()) { + courseMapper.deleteCourse(course); + } + courseMapper.insertCourse(course); + if (course.getId()==-1){ + System.out.println("课程添加出阿信错误"); + throw new TestAbortedException(); + } + selectCourse = courseMapper.selectCourse(new Course(), 0, 10); + if (!selectCourse.isEmpty()) { + System.out.println("课程查询出现错误"); + } + course.setDetail("hello"); + courseMapper.updateCourse(course); + selectCourse = courseMapper.selectCourse(course, 0, 10); + if (selectCourse.isEmpty()) { + System.out.println("课程修改出现错误"); + } + courseMapper.deleteCourse(course); + selectCourse = courseMapper.selectCourse(course, 0, 10); + if (!selectCourse.isEmpty()) { + System.out.println("课程删除出现错误"); + } + } + + @Test + public void scoreSelectTest(){ + Score score = new Score(); + List result = scoreMapper.selectScore(score); + System.out.println(result); + } + + @Test + public void scoreInsertTest(){ + Score score = new Score(); + score.setN_COURSE_ID(22); + score.setN_STUDENT_ID(22); + score.setF_SCORE(1.0F); + scoreMapper.insertScore(score); + } + + @Test + public void scoreUpdateTest(){ + Score score = new Score(); + score.setN_COURSE_ID(22); + score.setN_STUDENT_ID(22); + score.setF_SCORE(2.0F); + scoreMapper.updateScore(score); + } + + @Test + public void scoreDeleteTest(){ + Score score = new Score(); + score.setN_COURSE_ID(22); + score.setN_STUDENT_ID(22); + scoreMapper.deleteScore(score); + } + + @Test + public void studentMapperTest(){ + Student student = new Student(); + student.setVC_STUDENT_CODE("2020202"); + student.setN_MAJOR(2); + student.setVC_STUDENT_NAME("测试学生"); + student.setN_SEX(1); + student.setN_GRADE(2022); + //添加学生 + studentMapper.insertStudent(student); + System.out.println(student.getN_STUDENT_ID()); + if (student.getN_STUDENT_ID()==-1) { + System.out.println("学生信息添加出现错误"); + throw new TestAbortedException(); + } + //查询学生 + List selectResult = studentMapper.selectStudent(new Student(), 0, 10); + if (selectResult.isEmpty()) { + System.out.println("学生信息查询出现错误"); + throw new TestAbortedException(); + } + System.out.println(selectResult); + //修改学生 + student.setN_GRADE(2023); + studentMapper.updateStudent(student); + selectResult = studentMapper.selectStudent(student, 0, 10); + if (selectResult.size() != 1) { + System.out.println("学生信息查询出现错误"); + throw new TestAbortedException(); + } + if (selectResult.getFirst().getN_GRADE() != 2023) { + System.out.println("学生信息修改出现错误"); + throw new TestAbortedException(); + } + //删除学生 + studentMapper.deleteStudent(student); + selectResult = studentMapper.selectStudent(student, 0, 10); + if (!selectResult.isEmpty()) { + System.out.println("学生信息删除出现错误"); + } + } + + @Test + public void teacherMapperTest(){ + Teacher teacher = new Teacher(); + teacher.setVC_TEACHER_NAME("测试老师"); + teacher.setN_EDUC(2); + teacher.setN_TITLE(2); + teacher.setVC_BIRTH("20230810"); + teacher.setN_SEX(1); + //添加老师 + teacherMapper.insertTeacher(teacher); + System.out.println(teacher.getN_TEACHER_ID()); + if (teacher.getN_TEACHER_ID() == -1) { + System.out.println("老师信息添加错误"); + throw new TestAbortedException(); + } + //查询老师 + List selectResult = teacherMapper.selectTeacher(new Teacher()); + if (selectResult.isEmpty()){ + System.out.println("查询老师信息出现错误"); + throw new TestAbortedException(); + } + System.out.println(selectResult); + teacher.setN_SEX(0); + //修改老师 + teacherMapper.updateTeacher(teacher); + selectResult = teacherMapper.selectTeacher(teacher); + if (selectResult.size() != 1){ + System.out.println("查询老师信息出现错误"); + throw new TestAbortedException(); + } + if (selectResult.getFirst().getN_SEX()!=0) { + System.out.println("老师信息修改出现错误"); + throw new TestAbortedException(); + } + //删除老师 + teacherMapper.deleteTeacher(teacher); + selectResult = teacherMapper.selectTeacher(teacher); + if (!selectResult.isEmpty()){ + System.out.println("老师信息删除出现错误"); + } + } + + @Test + public void userMapperTest(){ + User user; + user = userMapper.selectUserByName("测试用户"); + if (user == null) { + user = new User(); + }else{ + userMapper.deleteUser(user); + } + user.setVC_PASSWORD("123456"); + user.setVC_LOGIN_NAME("测试用户"); + userMapper.insertUser(user); + if (user.getN_USER_ID()==-1) { + System.out.println("添加用户出现错误"); + throw new TestAbortedException(); + } + List selectResult = userMapper.selectUser(new User()); + if (selectResult.isEmpty()){ + System.out.println("查询用户出现错误"); + throw new TestAbortedException(); + } + System.out.println(selectResult); + user.setVC_PASSWORD("654321"); + userMapper.updateUser(user); + selectResult = userMapper.selectUser(user); + if (selectResult.size()!=1){ + System.out.println("查询用户失败"); + throw new TestAbortedException(); + } + if (!selectResult.getFirst().getVC_PASSWORD().equals(user.getVC_PASSWORD())) { + System.out.println("修改用户出现错误"); + throw new TestAbortedException(); + } + User selectUser = userMapper.selectUserByName(user.getVC_LOGIN_NAME()); + if (selectUser==null){ + System.out.println("用户定位失败"); + throw new TestAbortedException(); + } + userMapper.deleteUser(user); + selectResult = userMapper.selectUser(user); + if (!selectResult.isEmpty()){ + System.out.println("删除用户失败"); + throw new TestAbortedException(); + } + } +}