ソースを参照

初始化项目

Bsheng123 6 ヶ月 前
コミット
80fd5491b9
51 ファイル変更1025 行追加0 行削除
  1. 8 0
      .idea/.gitignore
  2. 23 0
      .idea/compiler.xml
  3. 7 0
      .idea/encodings.xml
  4. 20 0
      .idea/jarRepositories.xml
  5. 14 0
      .idea/misc.xml
  6. 124 0
      .idea/uiDesigner.xml
  7. 126 0
      pom.xml
  8. 16 0
      src/main/java/com/smart/reader/SpringAPP.java
  9. 22 0
      src/main/java/com/smart/reader/common/Page.java
  10. 44 0
      src/main/java/com/smart/reader/common/R.java
  11. 16 0
      src/main/java/com/smart/reader/config/MybatisPlusConfig.java
  12. 14 0
      src/main/java/com/smart/reader/controller/HelloWorldController.java
  13. 73 0
      src/main/java/com/smart/reader/controller/SysUserInfoController.java
  14. 12 0
      src/main/java/com/smart/reader/dao/SysUserInfoMapper.java
  15. 21 0
      src/main/java/com/smart/reader/enums/ExceptionResultCode.java
  16. 24 0
      src/main/java/com/smart/reader/enums/FailResultCode.java
  17. 37 0
      src/main/java/com/smart/reader/enums/SuccessResultCode.java
  18. 6 0
      src/main/java/com/smart/reader/exception/CustomException.java
  19. 76 0
      src/main/java/com/smart/reader/exception/CustomExceptionHandler.java
  20. 35 0
      src/main/java/com/smart/reader/handler/CustomMetaObjectHandler.java
  21. 4 0
      src/main/java/com/smart/reader/model/bo/SysUserInfoAddBo.java
  22. 4 0
      src/main/java/com/smart/reader/model/bo/SysUserInfoUpdateBo.java
  23. 47 0
      src/main/java/com/smart/reader/model/po/BaseEntity.java
  24. 25 0
      src/main/java/com/smart/reader/model/po/SysUserInfo.java
  25. 4 0
      src/main/java/com/smart/reader/model/vo/SysUserInfoVo.java
  26. 49 0
      src/main/java/com/smart/reader/service/SysUserInfoService.java
  27. 62 0
      src/main/java/com/smart/reader/service/impl/SysUserInfoServiceImpl.java
  28. 13 0
      src/main/resources/mapper/SysUserInfoMapper.xml
  29. 43 0
      src/main/resources/static/application.yml
  30. BIN
      target/classes/com/smart/reader/SpringAPP.class
  31. BIN
      target/classes/com/smart/reader/common/Page.class
  32. BIN
      target/classes/com/smart/reader/common/R.class
  33. BIN
      target/classes/com/smart/reader/config/MybatisPlusConfig.class
  34. BIN
      target/classes/com/smart/reader/controller/HelloWorldController.class
  35. BIN
      target/classes/com/smart/reader/controller/SysUserInfoController.class
  36. BIN
      target/classes/com/smart/reader/dao/SysUserInfoMapper.class
  37. BIN
      target/classes/com/smart/reader/enums/ExceptionResultCode.class
  38. BIN
      target/classes/com/smart/reader/enums/FailResultCode.class
  39. BIN
      target/classes/com/smart/reader/enums/SuccessResultCode.class
  40. BIN
      target/classes/com/smart/reader/exception/CustomException.class
  41. BIN
      target/classes/com/smart/reader/exception/CustomExceptionHandler.class
  42. BIN
      target/classes/com/smart/reader/handler/CustomMetaObjectHandler.class
  43. BIN
      target/classes/com/smart/reader/model/bo/SysUserInfoAddBo.class
  44. BIN
      target/classes/com/smart/reader/model/bo/SysUserInfoUpdateBo.class
  45. BIN
      target/classes/com/smart/reader/model/po/BaseEntity.class
  46. BIN
      target/classes/com/smart/reader/model/po/SysUserInfo.class
  47. BIN
      target/classes/com/smart/reader/model/vo/SysUserInfoVo.class
  48. BIN
      target/classes/com/smart/reader/service/SysUserInfoService.class
  49. BIN
      target/classes/com/smart/reader/service/impl/SysUserInfoServiceImpl.class
  50. 13 0
      target/classes/mapper/SysUserInfoMapper.xml
  51. 43 0
      target/classes/static/application.yml

+ 8 - 0
.idea/.gitignore

@@ -0,0 +1,8 @@
+# 默认忽略的文件
+/shelf/
+/workspace.xml
+# 基于编辑器的 HTTP 客户端请求
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml

+ 23 - 0
.idea/compiler.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="CompilerConfiguration">
+    <annotationProcessing>
+      <profile default="true" name="Default" enabled="true" />
+      <profile name="Maven default annotation processors profile" enabled="true">
+        <sourceOutputDir name="target/generated-sources/annotations" />
+        <sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
+        <outputRelativeToContentRoot value="true" />
+        <module name="smart-reader" />
+      </profile>
+    </annotationProcessing>
+    <bytecodeTargetLevel>
+      <module name="UndergraduateSmartEducationSystem" target="1.8" />
+    </bytecodeTargetLevel>
+  </component>
+  <component name="JavacSettings">
+    <option name="ADDITIONAL_OPTIONS_OVERRIDE">
+      <module name="UndergraduateSmartEducationSystem" options="-parameters" />
+      <module name="smart-reader" options="" />
+    </option>
+  </component>
+</project>

+ 7 - 0
.idea/encodings.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Encoding">
+    <file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
+  </component>
+</project>

+ 20 - 0
.idea/jarRepositories.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="RemoteRepositoriesConfiguration">
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Central Repository" />
+      <option name="url" value="https://repo.huaweicloud.com/repository/maven/" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Maven Central repository" />
+      <option name="url" value="https://repo1.maven.org/maven2" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="jboss.community" />
+      <option name="name" value="JBoss Community repository" />
+      <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
+    </remote-repository>
+  </component>
+</project>

+ 14 - 0
.idea/misc.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ExternalStorageConfigurationManager" enabled="true" />
+  <component name="MavenProjectsManager">
+    <option name="originalFiles">
+      <list>
+        <option value="$PROJECT_DIR$/pom.xml" />
+      </list>
+    </option>
+  </component>
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="zulu-1.8" project-jdk-type="JavaSDK">
+    <output url="file://$PROJECT_DIR$/out" />
+  </component>
+</project>

+ 124 - 0
.idea/uiDesigner.xml

@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Palette2">
+    <group name="Swing">
+      <item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
+      </item>
+      <item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
+      </item>
+      <item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true">
+        <default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
+        <initial-values>
+          <property name="text" value="Button" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="RadioButton" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="CheckBox" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="Label" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
+          <preferred-size width="200" height="200" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
+          <preferred-size width="200" height="200" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
+      </item>
+      <item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
+          <preferred-size width="-1" height="20" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
+      </item>
+      <item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
+      </item>
+    </group>
+  </component>
+</project>

+ 126 - 0
pom.xml

@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.smart.reader</groupId>
+    <artifactId>smart-reader</artifactId>
+    <version>0.0.1-SNAPSHOT</version>
+    <name>smart-reader</name>
+    <description>Demo project for Spring Boot</description>
+    <properties>
+        <java.version>1.8</java.version>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+        <spring-boot.version>2.7.6</spring-boot.version>
+    </properties>
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-validation</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>servlet-api</artifactId>
+            <version>2.5</version>
+        </dependency>
+
+        <!--        jdbc驱动-->
+        <dependency>
+            <groupId>com.mysql</groupId>
+            <artifactId>mysql-connector-j</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+
+        <!--        mybatis-plus-->
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>3.5.3.1</version>
+        </dependency>
+
+        <!--        pagehelper 分页组件-->
+        <dependency>
+            <groupId>com.github.pagehelper</groupId>
+            <artifactId>pagehelper-spring-boot-starter</artifactId>
+            <version>1.4.6</version>
+        </dependency>
+
+        <!--        工具类hutool ,简化开发-->
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-core</artifactId>
+            <version>5.8.26</version>
+        </dependency>
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-json</artifactId>
+            <version>5.8.26</version>
+        </dependency>
+
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.github.xiaoymin</groupId>
+            <artifactId>knife4j-openapi2-spring-boot-starter</artifactId>
+            <version>4.4.0</version>
+        </dependency>
+    </dependencies>
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.8.1</version>
+                <configuration>
+                    <source>1.8</source>
+                    <target>1.8</target>
+                    <encoding>UTF-8</encoding>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <version>${spring-boot.version}</version>
+                <configuration>
+                    <mainClass>com.smart.reader.SmartReaderApplication</mainClass>
+                    <skip>true</skip>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>repackage</id>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

+ 16 - 0
src/main/java/com/smart/reader/SpringAPP.java

@@ -0,0 +1,16 @@
+package com.smart.reader;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration;
+
+import java.util.Collections;
+
+@SpringBootApplication(exclude = {ThymeleafAutoConfiguration.class}) // 修改@SpringBootApplication注解,添加exclude参数
+public class SpringAPP {
+    public static void main(String[] args) {
+        SpringApplication app = new SpringApplication(SpringAPP.class);
+        app.setDefaultProperties(Collections.singletonMap("server.port", "8888"));
+        app.run(args);
+    }
+}

+ 22 - 0
src/main/java/com/smart/reader/common/Page.java

@@ -0,0 +1,22 @@
+package com.smart.reader.common;
+
+import lombok.Getter;
+import lombok.Setter;
+import com.github.pagehelper.PageInfo;
+import java.util.List;
+
+@Setter
+@Getter
+public class Page<T> {
+    private int pageNum;
+    private int pageSize;
+    private Long total;
+    private List<T> list;
+    public Page(int pageNum, int pageSize, List<T> list){
+        PageInfo pageInfo = new PageInfo(list);
+        this.pageNum = pageNum;
+        this.pageSize = pageSize;
+        this.list = list;
+        this.total = pageInfo.getTotal();
+    }
+}

+ 44 - 0
src/main/java/com/smart/reader/common/R.java

@@ -0,0 +1,44 @@
+package com.smart.reader.common;
+
+import lombok.Data;
+
+@Data
+public class R<T> {
+    private Integer code;
+    private String message;
+    private T data;
+
+    /**
+    * @param code
+    * @param message
+    * @return
+    */
+    public static R success(Integer code, String message){
+        R result = new R();
+        result.code = code;
+        result.message = message;
+        return result;
+    }
+
+    public static <T> R<T> success(Integer code, String message, T data){
+        R<T> result = new R<T>();
+        result.code = code;
+        result.message = message;
+        result.data = data;
+        return result;
+    }
+
+    public static R fail(Integer code, String message){
+        R result = new R();
+        result.code = code;
+        result.message = message;
+        return result;
+    }
+    public static <T> R<T> fail(Integer code, String message, T data){
+        R<T> result = new R<T>();
+        result.code = code;
+        result.message = message;
+        result.data = data;
+        return result;
+    }
+}

+ 16 - 0
src/main/java/com/smart/reader/config/MybatisPlusConfig.java

@@ -0,0 +1,16 @@
+package com.smart.reader.config;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+@Configuration
+public class MybatisPlusConfig {
+    @Bean
+    public MybatisPlusInterceptor mybatisPlusInterceptor(){
+        // 实例化拦截器链
+        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+        // 添加乐观锁插件
+        interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
+        return interceptor;
+    }
+}

+ 14 - 0
src/main/java/com/smart/reader/controller/HelloWorldController.java

@@ -0,0 +1,14 @@
+package com.smart.reader.controller;
+import com.smart.reader.common.R;
+import com.smart.reader.enums.SuccessResultCode;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+@RequestMapping("/api/v1/")
+@RestController
+public class HelloWorldController {
+    @GetMapping
+    public R helloWorld() {
+        return R.success(200,"操作成功", "hello world");
+    }
+}

+ 73 - 0
src/main/java/com/smart/reader/controller/SysUserInfoController.java

@@ -0,0 +1,73 @@
+package com.smart.reader.controller;
+import com.smart.reader.common.Page;
+import com.smart.reader.common.R;
+import com.smart.reader.enums.SuccessResultCode;
+import com.smart.reader.exception.CustomException;
+import com.smart.reader.model.bo.SysUserInfoAddBo;
+import com.smart.reader.model.bo.SysUserInfoUpdateBo;
+import com.smart.reader.model.vo.SysUserInfoVo;
+import com.smart.reader.service.SysUserInfoService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import javax.validation.constraints.NotNull;
+@RequestMapping("/api/v1/system/userInfo")
+@RestController
+@Validated
+@Api(tags = "⽤户管理", description = "⽤户管理相关接⼝")
+public class SysUserInfoController {
+    @Resource
+    private SysUserInfoService sysUserInfoService;
+    /**
+     * 新增数据
+     *
+     * @param sysUserInfo 实例对象
+     * @return 实例对象
+     */
+    @ApiOperation("新增数据")
+    @PostMapping("/add")
+    public R add(@RequestBody @Valid SysUserInfoAddBo sysUserInfo) throws
+            CustomException {
+        sysUserInfoService.add(sysUserInfo);
+        return R.success(SuccessResultCode.SUCCESS.getCode(), SuccessResultCode.SUCCESS.getMsg());
+    }
+    @ApiOperation("删除数据")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "⽤户ID", required = true)
+    })
+    @DeleteMapping("/delete/{id}")
+    public R delete(@NotNull(message = "⽤户ID不能为空") @PathVariable("id") Long id) throws CustomException {
+            sysUserInfoService.delete(id);
+            return R.fail(SuccessResultCode.SUCCESS.getCode(), SuccessResultCode.SUCCESS.getMsg());
+}
+    @ApiOperation("修改数据")
+    @PostMapping("/edit")
+    public R edit(@RequestBody @Valid SysUserInfoUpdateBo sysUserInfo) throws CustomException {
+        sysUserInfoService.edit(sysUserInfo);
+        return R.fail(SuccessResultCode.SUCCESS.getCode(), SuccessResultCode.SUCCESS.getMsg());
+        }
+@GetMapping("queryInfo")
+@ApiOperation("获取⽤户列表")
+@ApiImplicitParams({
+        @ApiImplicitParam(name = "pageNum", value = "当前⻚", required = true, dataType = "int", defaultValue = "1"),
+        @ApiImplicitParam(name = "pageSize", value = "⻚⼤⼩", required = true, dataType = "int", defaultValue = "10"),
+})
+public R<Page<SysUserInfoVo>> queryInfo(int pageNum, int pageSize) {
+        Page<SysUserInfoVo> result = sysUserInfoService.queryInfo(pageNum, pageSize);
+        return R.success(SuccessResultCode.SUCCESS.getCode(), SuccessResultCode.SUCCESS.getMsg(), result);
+        }
+@ApiOperation("根据⽤户ID查询⽤户详情")
+@ApiImplicitParams({
+        @ApiImplicitParam(name = "id", value = "⽤户ID", required = true)
+})
+@GetMapping("/detail/{id}")
+public R detail(@NotNull(message = "⽤户ID不能为空") @PathVariable("id") Long id) {
+        SysUserInfoVo sysUserInfoVo = sysUserInfoService.detail(id);
+        return R.success(SuccessResultCode.SUCCESS.getCode(), SuccessResultCode.SUCCESS.getMsg(), sysUserInfoVo);
+ }
+         }

+ 12 - 0
src/main/java/com/smart/reader/dao/SysUserInfoMapper.java

@@ -0,0 +1,12 @@
+package com.smart.reader.dao;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.smart.reader.model.po.SysUserInfo;
+import com.smart.reader.model.vo.SysUserInfoVo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import java.util.List;
+@Mapper
+public interface SysUserInfoMapper extends BaseMapper<SysUserInfo> {
+    List<SysUserInfoVo> queryInfo();
+    SysUserInfoVo detail(@Param("id") Long id);
+}

+ 21 - 0
src/main/java/com/smart/reader/enums/ExceptionResultCode.java

@@ -0,0 +1,21 @@
+package com.smart.reader.enums;
+
+public enum ExceptionResultCode {
+    VALID_EXCEPTION(400, "参数校验异常"),
+    EXCEPTION(400, "系统异常");
+
+    private final int code;
+    private final String message;
+
+    ExceptionResultCode(int code, String message) {
+        this.code = code;
+        this.message = message;
+    }
+
+    public int getCode() { return code; }
+    public String getMessage() { return message; }
+
+    public String getMsg() {
+        return message;
+    }
+}

+ 24 - 0
src/main/java/com/smart/reader/enums/FailResultCode.java

@@ -0,0 +1,24 @@
+package com.smart.reader.enums;
+
+public enum FailResultCode {
+    USER_NOT_EXIST(300, "用户不存在"),
+    USER_PASSWORD_ERROR(301, "用户密码错误"),
+    USER_NOT_LOGIN(302, "用户未登录");
+
+    private final int code;
+    private final String message;
+
+    FailResultCode(int code, String message) {
+        this.code = code;
+        this.message = message;
+    }
+
+    public int getCode() {
+        return code;
+    }
+
+    public String getMessage() {
+        return message;
+    }
+}
+

+ 37 - 0
src/main/java/com/smart/reader/enums/SuccessResultCode.java

@@ -0,0 +1,37 @@
+package com.smart.reader.enums;
+
+public enum SuccessResultCode {
+
+    /**
+     * *操作成功
+     */
+    SUCCESS( 200,"操作成功"),
+
+    /**
+     * *认证成功
+     */
+    AUTHENTICATION_SUCCESS( 200,"认证成功"),
+
+    /**
+     * *刷新Token成功
+     */
+    REFRESH_ACCESS_TOKEN_SUCCESS(200, "Token刷新成功"),
+
+    /**
+     * *退出登录成功
+     */
+    L0GOUT_SUCCESS( 20,"退出登录成功");
+    private Integer code;
+    private String msg;
+    public Integer getCode() {
+        return code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+    SuccessResultCode(Integer code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+}

+ 6 - 0
src/main/java/com/smart/reader/exception/CustomException.java

@@ -0,0 +1,6 @@
+package com.smart.reader.exception;
+
+public class CustomException extends Exception {
+    public CustomException(String message) { super(message);
+    }
+}

+ 76 - 0
src/main/java/com/smart/reader/exception/CustomExceptionHandler.java

@@ -0,0 +1,76 @@
+package com.smart.reader.exception;
+
+import com.smart.reader.common.R;
+import com.smart.reader.enums.ExceptionResultCode;
+import org.springframework.validation.BindException;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.ObjectError;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+
+import javax.validation.ConstraintViolationException;
+import java.util.List;
+import java.util.stream.Collectors;
+import javax.validation.ConstraintViolation;
+
+/**
+ *
+ *
+ * @desc: 异常信息统⼀拦截
+ */
+@RestControllerAdvice
+public class CustomExceptionHandler {
+    /**
+     * 参数校验异常
+     *
+     * @param ex
+     * @return
+     */
+    @ExceptionHandler(value = BindException.class)
+    public R errorHandler(BindException ex) {
+        BindingResult result = ex.getBindingResult();
+        StringBuilder errorMsg = new StringBuilder();
+        for (ObjectError error : result.getAllErrors()) {
+            errorMsg.append(error.getDefaultMessage()).append(", ");
+        }
+        errorMsg.delete(errorMsg.length() - 2, errorMsg.length());
+        return R.fail(ExceptionResultCode.VALID_EXCEPTION.getCode(), errorMsg.toString());
+    }
+    /**
+     * 参数校验异常
+     *
+     * @param ex
+     * @return
+     */
+    @ExceptionHandler(ConstraintViolationException.class)
+    public R validationErrorHandler(ConstraintViolationException ex) {
+        List<String> errorInformation = ex.getConstraintViolations()
+                .stream()
+                .map(ConstraintViolation::getMessage)
+                .collect(Collectors.toList());
+        String message = errorInformation.toString().substring(1, errorInformation.toString().length() - 1);
+        return R.fail(ExceptionResultCode.VALID_EXCEPTION.getCode(), message);
+    }
+    /**
+     * ⾃定义异常
+     *
+     * @param customException
+     * @return
+     */
+    @ExceptionHandler(value = CustomException.class)
+    public R customExceptionHandler(CustomException customException) {
+        String message = customException.getMessage();
+        return R.fail(ExceptionResultCode.EXCEPTION.getCode(), message);
+    }
+    /**
+     * 未知异常
+     *
+     * @param exception
+     * @return
+     */
+    @ExceptionHandler(value = Exception.class)
+    public R exceptionHandler(Exception exception) {
+        exception.printStackTrace();
+        return R.fail(ExceptionResultCode.EXCEPTION.getCode(), ExceptionResultCode.EXCEPTION.getMsg());
+    }
+}

+ 35 - 0
src/main/java/com/smart/reader/handler/CustomMetaObjectHandler.java

@@ -0,0 +1,35 @@
+package com.smart.reader.handler;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
+import org.apache.ibatis.reflection.MetaObject;
+import org.springframework.stereotype.Component;
+import java.time.LocalDateTime;
+
+@Component
+public class CustomMetaObjectHandler implements MetaObjectHandler {
+    public static final Long currentUserInfoId=1L;
+    @Override
+    public void insertFill(MetaObject metaObject) {
+        // 创建时间
+        this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now());
+        // 更新时间
+        this.strictInsertFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
+        // todo 创建⼈为空,则写⼊默认值(后期需要获取系统的登陆⼈ID)
+        // String currentUserInfoId = SecurityContextHolder.getContext();
+        if (ObjectUtil.isEmpty(getFieldValByName("createUser",metaObject))) {
+            this.strictInsertFill(metaObject, "createUser", Long.class, currentUserInfoId);
+        }
+        if (ObjectUtil.isEmpty(getFieldValByName("updateUser",metaObject))) {
+            this.strictInsertFill(metaObject, "updateUser", Long.class, currentUserInfoId);
+        }
+    }
+    @Override
+    public void updateFill(MetaObject metaObject) {
+        // 更新时间
+        this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
+// String currentUserInfoId = SecurityContextHolder.getContext();
+        if (ObjectUtil.isEmpty(getFieldValByName("updateUser",metaObject))) {
+            this.strictInsertFill(metaObject, "updateUser", Long.class, currentUserInfoId);
+        }
+    }
+}

+ 4 - 0
src/main/java/com/smart/reader/model/bo/SysUserInfoAddBo.java

@@ -0,0 +1,4 @@
+package com.smart.reader.model.bo;
+
+public class SysUserInfoAddBo {
+}

+ 4 - 0
src/main/java/com/smart/reader/model/bo/SysUserInfoUpdateBo.java

@@ -0,0 +1,4 @@
+package com.smart.reader.model.bo;
+
+public class SysUserInfoUpdateBo {
+0}

+ 47 - 0
src/main/java/com/smart/reader/model/po/BaseEntity.java

@@ -0,0 +1,47 @@
+package com.smart.reader.model.po;
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+@Getter
+@Setter
+public class BaseEntity implements Serializable {
+    private static final long serialVersionUID = -569425995057788007L;
+    @TableId(value = "id", type = IdType.ASSIGN_ID)
+    private Long id;
+    @TableField("vision")
+    @Version
+    private Integer vision;
+    /**
+     * 创建者
+     */
+    @TableField(value = "create_user",fill = FieldFill.INSERT)
+    private Long createUser;
+    /**
+     * 创建时间
+     */
+    @TableField(value = "create_time",fill = FieldFill.INSERT)
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+    /**
+     * 更新者
+     */
+    @TableField(value = "update_user",fill = FieldFill.INSERT)
+    private Long updateUser;
+    /**
+     * 更新时间
+     */
+    @TableField(value = "update_time",fill = FieldFill.INSERT_UPDATE)
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime updateTime;
+    /**
+     * 备注
+     */
+    @TableField(value = "remark")
+    private String remark;
+}

+ 25 - 0
src/main/java/com/smart/reader/model/po/SysUserInfo.java

@@ -0,0 +1,25 @@
+package com.smart.reader.model.po;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+@ApiModel(value = "⽤户信息表")
+@TableName("sys_user_info")
+@Data
+public class SysUserInfo extends BaseEntity{
+    /** ⽤户名,登录⽤;⽤户名,登录⽤ */
+    @ApiModelProperty(name = "⽤户名,登录⽤",notes = "⽤户名,登录⽤")
+    private String userName ;
+    /** 密码;密码 */
+    @ApiModelProperty(name = "密码",notes = "密码")
+    private String password ;
+    /** 电话号码;电话号码 */
+    @ApiModelProperty(name = "电话号码",notes = "电话号码")
+    private String phoneNumber ;
+    /** 头像地址;头像地址 */
+    @ApiModelProperty(name = "头像地址",notes = "头像地址")
+    private String avatarAddress ;
+    /** 姓名;姓名 */
+    @ApiModelProperty(name = "姓名",notes = "姓名")
+    private String fullName ;
+}

+ 4 - 0
src/main/java/com/smart/reader/model/vo/SysUserInfoVo.java

@@ -0,0 +1,4 @@
+package com.smart.reader.model.vo;
+
+public class SysUserInfoVo {
+}

+ 49 - 0
src/main/java/com/smart/reader/service/SysUserInfoService.java

@@ -0,0 +1,49 @@
+package com.smart.reader.service;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.smart.reader.common.Page;
+import com.smart.reader.exception.CustomException;
+import com.smart.reader.model.bo.SysUserInfoAddBo;
+import com.smart.reader.model.bo.SysUserInfoUpdateBo;
+import com.smart.reader.model.po.SysUserInfo;
+import com.smart.reader.model.vo.SysUserInfoVo;
+public interface SysUserInfoService extends IService<SysUserInfo> {
+    /**
+     * 新增⽤户信息
+     *
+     * @param sysUserInfo
+     * @return
+     * @throws CustomException
+     */
+    Boolean add(SysUserInfoAddBo sysUserInfo) throws CustomException;
+    /**
+     * 查询⽤户信息并分⻚
+     *
+     * @param pageNum
+     * @param pageSize
+     * @return
+     */
+    Page<SysUserInfoVo> queryInfo(int pageNum, int pageSize);
+    /**
+     * 根据ID删除⽤户信息
+     *
+     * @param id
+     * @return
+     * @throws CustomException
+     */
+    Boolean delete(Long id) throws CustomException;
+/**
+ * 修改⽤户数据
+ *
+ * @param sysUserInfo
+ * @return
+ * @throws CustomException
+ */
+Boolean edit(SysUserInfoUpdateBo sysUserInfo) throws CustomException;
+    /**
+     * 根据⽤户ID查询⽤户详情
+     *
+     * @param id
+     * @return
+     */
+    SysUserInfoVo detail(Long id);
+}

+ 62 - 0
src/main/java/com/smart/reader/service/impl/SysUserInfoServiceImpl.java

@@ -0,0 +1,62 @@
+package com.smart.reader.service.impl;
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.pagehelper.PageHelper;
+import com.smart.reader.common.Page;
+import com.smart.reader.dao.SysUserInfoMapper;
+import com.smart.reader.exception.CustomException;
+import com.smart.reader.model.bo.SysUserInfoAddBo;
+import com.smart.reader.model.bo.SysUserInfoUpdateBo;
+import com.smart.reader.model.po.SysUserInfo;
+import com.smart.reader.model.vo.SysUserInfoVo;
+import com.smart.reader.service.SysUserInfoService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import java.util.List;
+@Service
+public class SysUserInfoServiceImpl extends ServiceImpl<SysUserInfoMapper, SysUserInfo> implements SysUserInfoService {
+@Override
+@Transactional(rollbackFor = Exception.class)
+public Boolean add(SysUserInfoAddBo sysUserInfo) throws CustomException {
+        SysUserInfo userInfo = BeanUtil.copyProperties(sysUserInfo, SysUserInfo.class);
+        Boolean save = this.save(userInfo);
+        if (!save){
+        throw new CustomException("⽤户数据添加失败");
+        }
+        return Boolean.TRUE;
+        }
+@Override
+public Page<SysUserInfoVo> queryInfo(int pageNum, int pageSize) {
+        PageHelper.startPage(pageNum, pageSize);
+        List<SysUserInfoVo> tableInfoVos = this.baseMapper.queryInfo();
+        return new Page<>(pageNum, pageSize, tableInfoVos);
+        }
+@Override
+@Transactional(rollbackFor = Exception.class)
+public Boolean delete(Long id) throws CustomException {
+        boolean remove = this.removeById(id);
+        if (!remove){
+        throw new CustomException("⽤户数据删除失败");
+        }
+        return Boolean.TRUE;
+        }
+@Override
+@Transactional(rollbackFor = Exception.class)
+public Boolean edit(SysUserInfoUpdateBo sysUserInfo) throws CustomException {
+        SysUserInfo userInfo = this.getById(sysUserInfo.getId());
+        if (ObjectUtil.isEmpty(userInfo)) {
+        throw new CustomException("⽤户数据不存在");
+        }
+        BeanUtil.copyProperties(sysUserInfo, userInfo);
+        boolean update = this.updateById(userInfo);
+        if (!update){
+        throw new CustomException("⽤户数据修改失败");
+        }
+        return Boolean.TRUE;
+        }
+@Override
+public SysUserInfoVo detail(Long id) {
+        return this.baseMapper.detail(id);
+        }
+}

+ 13 - 0
src/main/resources/mapper/SysUserInfoMapper.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybat
+is.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.smart.reader.dao.SysUserInfoMapper">
+    <select id="queryInfo" resultType="com.smart.reader.model.vo.SysUserIn
+foVo">
+        select ui.* from `sys_user_info` ui
+    </select>
+    <select id="detail" resultType="com.smart.reader.model.vo.SysUserInfoV
+o">
+        select ui.* from `sys_user_info` ui where ui.id=#{id}
+    </select>
+</mapper>

+ 43 - 0
src/main/resources/static/application.yml

@@ -0,0 +1,43 @@
+server:
+        port: 8080
+        # 配置⽇志输出级别
+        logging:
+        level:
+        root: info
+        com.smart.reader: debug
+        spring:
+        main:
+        allow-circular-references: true
+        allow-bean-definition-overriding: true
+        application:
+        name: smart-reader
+        # 配置数据库连接
+        datasource:
+        url: jdbc:mysql://localhost:3306/smart_reader?serverTimezone=GMT%2B8&useSSL=false&allowPublicKeyRetrieval=true&characterEncoding=utf-8&characterEncoding=utf-8
+        username: root
+        password: 123456
+        driver-class-name: com.mysql.cj.jdbc.Driver
+        type: com.zaxxer.hikari.HikariDataSource
+        hikari:
+        minimum-idle: 5
+        maximum-pool-size: 20
+        idle-timeout: 60000
+        max-lifetime: 60000
+        connection-timeout: 30000
+        pool-name: HikariDataSource
+        # mybatis-plus 配置
+        mybatis-plus:
+        # xml路径
+        mapper-locations: classpath:mapper/**/*.xml
+        configuration:
+        map-underscore-to-camel-case: true
+        # 打印sql语句
+        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+        # 分⻚插件配置
+        pagehelper:
+        reasonable: true # 禁⽤合理化时
+        support-methods-arguments: true
+        params: count=countSql
+        row-bounds-with-count: true
+        helper-dialect: mysql
+        knife4j:

BIN
target/classes/com/smart/reader/SpringAPP.class


BIN
target/classes/com/smart/reader/common/Page.class


BIN
target/classes/com/smart/reader/common/R.class


BIN
target/classes/com/smart/reader/config/MybatisPlusConfig.class


BIN
target/classes/com/smart/reader/controller/HelloWorldController.class


BIN
target/classes/com/smart/reader/controller/SysUserInfoController.class


BIN
target/classes/com/smart/reader/dao/SysUserInfoMapper.class


BIN
target/classes/com/smart/reader/enums/ExceptionResultCode.class


BIN
target/classes/com/smart/reader/enums/FailResultCode.class


BIN
target/classes/com/smart/reader/enums/SuccessResultCode.class


BIN
target/classes/com/smart/reader/exception/CustomException.class


BIN
target/classes/com/smart/reader/exception/CustomExceptionHandler.class


BIN
target/classes/com/smart/reader/handler/CustomMetaObjectHandler.class


BIN
target/classes/com/smart/reader/model/bo/SysUserInfoAddBo.class


BIN
target/classes/com/smart/reader/model/bo/SysUserInfoUpdateBo.class


BIN
target/classes/com/smart/reader/model/po/BaseEntity.class


BIN
target/classes/com/smart/reader/model/po/SysUserInfo.class


BIN
target/classes/com/smart/reader/model/vo/SysUserInfoVo.class


BIN
target/classes/com/smart/reader/service/SysUserInfoService.class


BIN
target/classes/com/smart/reader/service/impl/SysUserInfoServiceImpl.class


+ 13 - 0
target/classes/mapper/SysUserInfoMapper.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybat
+is.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.smart.reader.dao.SysUserInfoMapper">
+    <select id="queryInfo" resultType="com.smart.reader.model.vo.SysUserIn
+foVo">
+        select ui.* from `sys_user_info` ui
+    </select>
+    <select id="detail" resultType="com.smart.reader.model.vo.SysUserInfoV
+o">
+        select ui.* from `sys_user_info` ui where ui.id=#{id}
+    </select>
+</mapper>

+ 43 - 0
target/classes/static/application.yml

@@ -0,0 +1,43 @@
+server:
+        port: 8080
+        # 配置⽇志输出级别
+        logging:
+        level:
+        root: info
+        com.smart.reader: debug
+        spring:
+        main:
+        allow-circular-references: true
+        allow-bean-definition-overriding: true
+        application:
+        name: smart-reader
+        # 配置数据库连接
+        datasource:
+        url: jdbc:mysql://localhost:3306/smart_reader?serverTimezone=GMT%2B8&useSSL=false&allowPublicKeyRetrieval=true&characterEncoding=utf-8&characterEncoding=utf-8
+        username: root
+        password: 123456
+        driver-class-name: com.mysql.cj.jdbc.Driver
+        type: com.zaxxer.hikari.HikariDataSource
+        hikari:
+        minimum-idle: 5
+        maximum-pool-size: 20
+        idle-timeout: 60000
+        max-lifetime: 60000
+        connection-timeout: 30000
+        pool-name: HikariDataSource
+        # mybatis-plus 配置
+        mybatis-plus:
+        # xml路径
+        mapper-locations: classpath:mapper/**/*.xml
+        configuration:
+        map-underscore-to-camel-case: true
+        # 打印sql语句
+        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+        # 分⻚插件配置
+        pagehelper:
+        reasonable: true # 禁⽤合理化时
+        support-methods-arguments: true
+        params: count=countSql
+        row-bounds-with-count: true
+        helper-dialect: mysql
+        knife4j: