Heim > Java > javaLernprogramm > So implementieren Sie den Einzeltabellenbetrieb durch die Integration von Mapper in Springboot

So implementieren Sie den Einzeltabellenbetrieb durch die Integration von Mapper in Springboot

王林
Freigeben: 2023-05-11 15:31:14
nach vorne
735 Leute haben es durchsucht

1. Bereitstellung und Installation des Frameworks Maven

Nachdem Sie den Framework-Quellcode heruntergeladen haben, führen Sie mvn clean install im Projektstammpfad aus, um ihn in der lokalen Maven-Bibliothek zu installieren. Wenn Sie den privaten Nexus-Server freigeben und verwenden müssen, fügen Sie im Stammpfad pom entsprechende Kontokonfigurationen hinzu. Führen Sie cn.jboost.springboot:tkmapper-spring-boot-starter ein (kein Verbindungspool).

Führen Sie cn.jboost.springboot:druid-spring-boot-starter (Unterstützung des Druiden-Verbindungspools) direkt ein

Projektvererbung cn.jboost.springboot:spring-boot-parent (unter Verwendung des Druiden-Verbindungspools)

  1. Die pom.xml-Konfiguration der drei Methoden lautet wie folgt:

    <distributionManagement>
    <repository>
    <id>nexus-releases</id>
    <url>
    http://ip:port/repository/maven-releases/
    </url>
    </repository>
    <snapshotRepository>
    <id>nexus-snapshots</id>
    <url>
    http://ip:port/repository/maven-snapshots/
    </url>
    </snapshotRepository>
    </distributionManagement>
    Nach dem Login kopieren
    Führen Sie je nach Situation die Treiberabhängigkeit von MySQL oder Postgresql ein (für andere Datenbanken noch nicht erfolgt). Typkonvertierungsunterstützung, nicht getestet.)
  2. 3 Datenquelle

  3. Wenn Sie den Druid-Verbindungspool verwenden, fügen Sie die folgende Datenquellenkonfiguration in der Konfigurationsdatei application.yml hinzu (empfohlen)

    <servers>
    <server>
    <id>nexus-snapshots</id>
    <username>admin</username>
    <password>xxx</password>
    </server>
    <server>
    <id>nexus-releases</id>
    <username>admin</username>
    <password>xxx</password>
    </server>
    </servers>
    Nach dem Login kopieren
  4. Wenn Sie keinen Verbindungspool verwenden, ist die Konfiguration relativ einfach, wie folgt

#第一种方式
<dependency>
<groupId>cn.jboost.springboot</groupId>
<artifactId>tkmapper-spring-boot-starter</artifactId>
<version>1.2-SNAPSHOT</version>
</dependency>

#第二种方式
<dependency>
<groupId>cn.jboost.springboot</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2-SNAPSHOT</version>
</dependency>

#第三种方式
<parent>
<groupId>cn.jboost.springboot</groupId>
<artifactId>spring-boot-parent</artifactId>
<version>1.2-SNAPSHOT</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
Nach dem Login kopieren

4. Definieren Sie die entsprechenden Domänen-, Mapper-, Service- und Controller-Layer-Objekte

Nehmen Sie Demo als Beispiel (siehe resources/schema.sql für das Demo-Datenbankskript,

spring:
datasource:
druid:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=utf-8
username: root
password:
# 自定义配置
initialSize: 2 # 初始化大小
minIdle: 1 # 最小连接
maxActive: 5 # 最大连接
druidServletSettings:
allow: 127.0.0.1
deny:
loginUsername: admin
loginPassword: Passw0rd
resetEnable: true
druidFilterSettings:
exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'
maxWait: 60000 # 配置获取连接等待超时的时间
timeBetweenEvictionRunsMillis: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
minEvictableIdleTimeMillis: 300000 # 配置一个连接在池中最小生存的时间,单位是毫秒
validationQuery: SELECT 'x'
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true # 打开PSCache,并且指定每个连接上PSCache的大小
maxPoolPreparedStatementPerConnectionSize: 20
filters: stat #,wall(添加wall代码里不能直接拼接sql,druid有sql注入校验) # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
useGlobalDataSourceStat: true # 合并多个DruidDataSource的监控数据
Nach dem Login kopieren
). Sie müssen die Annotation @Table hinzufügen, um den Namen der Datenbanktabelle anzugeben. Sie können AutoIncrementKeyBaseDomain erben, um den automatischen Inkrementierungs-Primärschlüssel zu implementieren, oder UUIDKeyBaseDomain, um den UUID-Primärschlüssel zu implementieren.

Die allgemeine Methodenimplementierung der Service-Schicht BaseService unterstützt nur einspaltige Primärschlüssel und keine zusammengesetzten Primärschlüssel (die Verwendung zusammengesetzter Primärschlüssel wird nicht empfohlen).


Standardmäßig ordnet das Framework komplexe Typattribute wie List zu und Ordnen Sie es dem JSON-Typ von MySQL oder dem JSONB von Postgresql zu. Wenn für ein bestimmtes Attribut keine Zuordnung erforderlich ist, können Sie die Annotation @Transient für Aufzählungstypen hinzufügen. Sie müssen @ColumnType hinzufügen, um jdbcType anzugeben.

dao-Ebene definiert UserMapper,

spring:
datasource:
url: jdbc:mysql://localhost:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=utf-8
username: root
password:
driver-class-name: com.mysql.jdbc.Driver
Nach dem Login kopieren
BaseMapper implementiert standardmäßig die Funktionen des Hinzufügens, Löschens, Änderns, Abfragens und Stapeleinfügens einer einzelnen Tabelle. Wenn Sie komplexe Abfragen definieren müssen, können Sie diese in dieser Schnittstelle definieren und dann durchschreiben die Mapper-XML-Datei.

Die Serviceschicht definiert UserService, der die allgemeinen Funktionen von BaseService erbt (Einzelheiten finden Sie im Quellcode. Sie können auch Methoden in dieser Klasse anpassen.

@Table(name = "user")
@Getter
@Setter
@ToString
public class User extends AutoIncrementKeyBaseDomain<Integer> {
private String name;
@ColumnType(jdbcType = JdbcType.CHAR)
private Gender gender;
private List<String> favor;
private Map<String, String> address;
public enum Gender{
M,
F
}
}
Nach dem Login kopieren

Die Controllerschicht definiert UserController, der die gemeinsame Schnittstelle von erbt BaseController (Einzelheiten finden Sie im Quellcode)

@Repository
public interface UserMapper extends BaseMapper<User> {
}
Nach dem Login kopieren

Wie oben müssen Sie nur die jeder Ebene entsprechende Schnittstelle oder Klasse definieren und die grundlegende Schnittstelle oder Klasse erben, um die grundlegenden Hinzufügungs-, Lösch-, Änderungs- und Abfragefunktionen des Benutzers abzuschließen ohne eine Zeile spezifischen Implementierungscodes zu schreiben.

5. Testen und ausführen

Das Beispiel bietet Unit-Tests für zwei neue Benutzer, um sie auszuführen, führen Sie sie direkt in der Hauptklasse aus und öffnen Sie dann http://localhost:8080 Im Browser kann /user die im Unit-Test erstellten Benutzer auflisten (weitere Schnittstellen finden Sie in der BaseController-Implementierung)

Das obige ist der detaillierte Inhalt vonSo implementieren Sie den Einzeltabellenbetrieb durch die Integration von Mapper in Springboot. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage