Spécification ORM


1. [Obligatoire] Dans les requêtes de table, n'utilisez jamais * comme liste de champs de la requête. Les champs obligatoires doivent être clairement indiqués.

Instructions : 1) Augmentez le coût d'analyse de l'analyseur de requêtes. 2) L'ajout ou la soustraction de champs est susceptible d'être incohérent avec la configuration de resultMap.


2. [Obligatoire] L'attribut booléen de la classe POJO ne peut pas être ajouté avec is, et le champ de la base de données doit être ajouté avec is _ Il est requis pour effectuer un mappage entre les champs et les attributs dans resultMap.

Remarque : Voir la définition de la classe POJO et la définition du champ de base de données. Il est nécessaire d'ajouter un mappage dans sql.xml.


3. [Obligatoire] N'utilisez pas resultClass comme paramètre de retour Même si tous les noms d'attributs de classe correspondent aux champs de la base de données un à un, ils doivent quand même être définis, à l'inverse, chaque table doit en avoir un correspondant ; à cela.

Instructions :

Configurez la relation de mappage pour découpler les champs de la classe DO pour une maintenance facile.


4. [Obligatoire] Veuillez faire attention à l'utilisation des paramètres dans la configuration XML : #{}, # param # N'utilisez pas ${}.


5. [Obligatoire] Le queryForList(String StatementName, int start, int size) fourni avec iBATIS n'est pas recommandé.

Explication : La méthode d'implémentation consiste à obtenir tous les enregistrements de l'instruction SQL correspondant à StatementName dans la base de données, puis à obtenir les sous-ensembles de début et de taille via la sous-Liste

est apparue en ligne pour cette raison.

Exemple positif : Introduire #start#, #size#

Map<String, Object> map = new HashMap<String, Object>();
map.put("start", start);
map.put("size", size);

6 [Obligatoire] Il n'est pas autorisé d'utiliser directement HashMap et Hashtable comme sortie du résultat de la requête défini dans sqlmap.xml.


7. [Obligatoire] Lors de la mise à jour de l'enregistrement de la table de données, vous devez également mettre à jour la valeur du champ gmt_modified correspondant de l'enregistrement à l'heure actuelle.


8. [Recommandation] N'écrivez pas une interface de mise à jour de données volumineuse et complète. Transmettez-la en tant que classe POJO, qu'il s'agisse de votre propre segment de mise à jour cible, mettez à jour l'ensemble de tables c1=value1,c2=value2. ,c3=value3; C'est faux. Lors de l'exécution de SQL


, essayez de ne pas mettre à jour les champs non modifiés. Premièrement, c'est sujet aux erreurs ; deuxièmement, c'est inefficace ; troisièmement, binlog augmente le stockage.

9. [Référence] @ Transactional N'abusez pas des transactions. Les transactions affecteront le QPS de la base de données. De plus, lorsque des transactions sont utilisées, diverses solutions de restauration doivent être envisagées, notamment la restauration du cache, la restauration du moteur de recherche, la compensation des messages, la correction statistique, etc.

10. [Référence] compareValue dans < isEqual > est une constante qui est comparée à la valeur de l'attribut, généralement un nombre, indiquant que cette condition est appliquée lorsque < isNotEmpty > not null ; < isNotNull > signifie qu'il est exécuté lorsque la valeur n'est pas nulle.