Maison > Java > javaDidacticiel > Comment implémenter une opération de table unique en intégrant Mapper dans Springboot

Comment implémenter une opération de table unique en intégrant Mapper dans Springboot

王林
Libérer: 2023-05-11 15:31:14
avant
765 Les gens l'ont consulté

1. Déploiement et installation du Framework Maven

Après avoir téléchargé le code source du framework, exécutez mvn clean install dans le chemin racine du projet pour l'installer dans la bibliothèque maven locale. Si vous devez partager et utiliser le serveur privé Nexus, ajoutez la configuration de distributionManagement dans le chemin racine pom. Il existe des configurations de compte correspondantes dans tous les paramètres des fichiers de configuration. Introduisez cn.jboost.springboot:tkmapper-spring-boot-starter (pas de pool de connexions).

Introduire directement cn.jboost.springboot:druid-spring-boot-starter (prise en charge du pool de connexions Druid)

Héritage du projet cn.jboost.springboot:spring-boot-parent (en utilisant le pool de connexions Druid)

  1. La configuration pom.xml des trois méthodes est la suivante

    <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>
    Copier après la connexion
    Introduire la dépendance du pilote de mysql ou postgresql selon la situation (pas encore fait pour les autres bases de données) Prise en charge de la conversion de type, non testé)
  2. 3. source de données

  3. Si vous utilisez le pool de connexion Druid, ajoutez la configuration de source de données suivante dans le fichier de configuration application.yml (recommandé)

    <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>
    Copier après la connexion
  4. Si vous n'utilisez pas le pool de connexion, la configuration est relativement simple, comme suit

#第一种方式
<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>
Copier après la connexion

4. Définissez les objets de couche de domaine, de mappeur, de service et de contrôleur correspondants

Prenez la démo comme exemple (voir resources/schema.sql pour le script de base de données de démonstration qui définit une classe d'utilisateur,

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的监控数据
Copier après la connexion
). doit ajouter l'annotation @Table pour spécifier le nom de la table de base de données. Vous pouvez hériter de AutoIncrementKeyBaseDomain pour implémenter la clé primaire à incrémentation automatique, ou de UUIDKeyBaseDomain pour implémenter la clé primaire UUID. Si vous personnalisez d'autres types de clés primaires, héritez de BaseDomain.

La mise en œuvre de la méthode générale de la couche Service du framework BaseService ne prend en charge que les clés primaires à colonne unique et ne prend pas en charge les clés primaires composites (il n'est pas recommandé d'utiliser des clés primaires composites)


Par défaut, le framework mappera les attributs de type complexe tels que List et Mapper au type json de mysql ou au jsonb de postgresql Type, si un certain attribut ne nécessite pas de mappage, vous pouvez ajouter l'annotation @Transient pour les types d'énumération, vous devez ajouter @ColumnType pour spécifier jdbcType ; La couche

dao définit 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
Copier après la connexion
BaseMapper implémente les fonctions d'ajout, de suppression, de modification, de requête et d'insertion par lots de table unique par défaut. Si vous devez définir des requêtes complexes, vous pouvez les définir dans cette interface, puis les écrire via. le fichier XML du mappeur.

La couche service définit UserService, qui hérite des fonctions communes de BaseService (voir le code source pour plus de détails). Vous pouvez également personnaliser les méthodes dans cette classe

@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
}
}
Copier après la connexion

La couche contrôleur définit UserController, qui hérite de l'interface générale de BaseController (). voir le code source pour plus de détails)

@Repository
public interface UserMapper extends BaseMapper<User> {
}
Copier après la connexion

Comme ci-dessus, il vous suffit de définir l'interface ou la classe correspondant à chaque couche et d'hériter de l'interface ou de la classe de base pour compléter les fonctions de base d'ajout, de suppression, de modification et de requête de l'utilisateur sans écrire une ligne de code de mise en œuvre spécifique.

5. Testez et exécutez

L'exemple fournit des tests unitaires pour deux nouveaux utilisateurs. Reportez-vous à la classe SpringbootTkmapperApplicationTests


pour l'exécuter, exécutez-la directement sur la classe principale, puis ouvrez http://localhost:8080. dans le navigateur /user peut lister les utilisateurs créés dans le test unitaire (pour les autres interfaces, veuillez vous référer à l'implémentation de BaseController)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal