Les méthodes de rédaction de fichiers de mappage de MyBatis sont diverses et différentes méthodes d'écriture et usages ont une grande différence dans le temps de développement et le temps de maintenance consommé au cours du processus de développement réel. Aujourd'hui, j'enregistrerai une méthode de rédaction de fichiers de mappage relativement simple pour que tout le monde puisse modifier et recommander, et essayer de trouver la meilleure méthode d'écriture ~~:
Prenez l'objet utilisateur et usermap.xml comme exemple pour expliquer, le code est le suivant:
L'utilisateur est une classe d'entité utilisateur (pour l'explication uniquement, vous ne pouvez vous concentrer que sur les variables de type de référence, et la méthode Get / Set est omise):
import com.google.common.collect.lists; import com.gukeer.common.persistence.dataentity; import com.gukeer.modules.personal.entity.dept; importer com.gukeer.modules.personal.entity.staff; import com.guer.modules.school.entity.school; importation; java.util.date; / *** Entité de l'utilisateur ** Auther: CC * Date: 2016 / 9/2 * / classe publique L'utilisateur étend Dataentity <Serser> {private static final SerialVersionUID = 1l; ID de chaîne privée; société de bureaux privés; // Bureau du bureau privé; // String privé LoginName; // Nom de connexion Mot de passe de chaîne privée; // Mot de passe String privé no; // Numéro de travail Nom de la chaîne privée; // Nommez un e-mail de chaîne privée; // envoyez un e-mail à la chaîne privée téléphone; // Téléphone Private String mobile; // Mobile Private String UserType; // Type d'utilisateur Loginip de chaîne privée; // Dernière connexion Ipprivate Date Logindate; // Dernière date de connexion Loginflag privée de chaîne privée; // s'il faut permettre la connexion à la photo de chaîne privée; // String privé Avatar QRCODE; // QR Code Private String OldLoginName; // Nom de connexion original String privé NewPassword; // Nouveau mot de passe privé String oldloginip; // Dernière connexion ipprivate Date OldLogIndate; // Dernière date de connexion Département privé du département; // Personnel privé du département; // positionner le rôle de rôle privé; // Requête sur les conditions utilisateur basées sur le rôle Liste privée <lage> roleList = listS.NewArrayList (); // Liste des rôles du propriétaire École privée; // Remarques de chaîne privée d'attribution; // Notes User Private CreateBy; // Créateur Private Date CreateDate; // Date de création Mise à jour de l'utilisateur privé; // Date privée de mise à jour Updatedate; // Date mise à jour de la chaîne privée delflag; // Supprimer Mark (0: Normal; 1: Delete; 2: Review)}Pour les variables membre des types de référence, afin d'attribuer directement des valeurs pendant le processus de requête, les résultats de la requête peuvent être attribués au résultat renvoyé défini dans le fichier de mappage:
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Mappep Public "- // Mybatis.org//dtd Mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><Mapper namespace = "com.gk.modules.sys.dao.userdao"> <! - Le point clé est cette section, attribuant directement le champ ID enregistré par la base de données à la variable membre d'un objet, tel que A.Company_id en tant que "Company.id", à l'heure actuelle, les propriétés de la liste ou de l'objet utilisateur sont interrogées dans l'arrière-plan - peut être obtenue. <! - Bien sûr, les variables de type de référence dans l'entreprise peuvent également être attribuées à l'aide de cette méthode. Plusieurs tables peuvent être vérifiées via la jointure de gauche. Il s'agit d'une opération dans la requête de base de données. Ceci n'est pas discuté ici -> <sql id = "userColumns"> a.id, a.company_id as "company.id", a.office_id as "Office.id", a.login_name, a.password, a.no, a.name, a.email, a.phone, a.mobile, a.user_type, a.login_ip, a.login_date, a.remark "Updateby.id", a.update_date, a.del_flag, c.name as "Company.name", c.parent_id as "company.parent.id", c.parent_ids as "company.arentids", ca.id as "company.area.id", ca.name en tant que "company.area.name", ca.parent_id as "Company.Area.aRent" "company.area.parentid", o.name as "Office.name", o.parent_id as "Office.parent.id", oa.id as "Office.area.id", oa.name comme "Office.area.name", oa.parent_id comme "Office.area.parent.id" "company.primaryperson.id", cu.name comme "Company.primaryperson.name", Cu2.id en tant que "Company.deputyperson.id", Cu2.Name comme "Company.deputyperson.name", ou.id en tant que "Office.primaryperson.id", ou2 "Office.deputyperson.name", sc.xxlx as "scolaire.xxlx", sc.xxmc en tant que "scolaire.xxmc" </ql> <sql id = "userjoins"> a.office_idleft rejoindre sys_area oa on oa.id = o.area_idleft join sys_user cu on cu.id = c.primary_personleft join sys_user cu2 on cu2 O.deputy_personleft rejoignez xj_school sc sur sc.id = a.school </ql> <! - Instruction de requête, selon le résultat de la requête de l'ID, le type de retour peut être écrit directement par l'utilisateur, tandis que différents résultats de configuration omettent le temps pour écrire le xml -> <sélectionner id = "getUserby" SYS_USER A <include refid = "userjoins" /> où a.id = # {id} </lect> <! - Instruction de requête, requête basée sur l'objet utilisateur, les paramètres ici sont la variable utilisateur -> <select id = "getByLogInname" ResultType = "User" ParameterType = "User"> SELECT <include refid = "usercolumns" /> frot refid = "userjoins" /> où a.login_name = # {loginname} et a.del_flag = # {del_flag_normal} </lect> <! - Insérer l'instruction, les paramètres doivent être utilisateur -> <insert id = "insert"> insert dans sys_user (id, company_id, office_id, ligin_name, no user_type, create_by, create_date, update_by, update_date, remarques, login_flag, photo, qrcode, del_flag, dept_id, staff_id, scolaire) (# {id}, # {company.id}, # {office.id}, # {#}, nom}, # {mot de passe}, # # {#} {#},}, # # {mot de passe}, # # {#} {#}}, # # {mot de passe}, # # {#} {#}}, # # {mot de passe}, # # {#} {#}}, # # {mot de passe}, # # {#} {# { # {email}, # {phone}, # {mobile}, # {usertype}, # {createby.id}, # {CreateDate}, # {updatedate}, # {Remarks}, # {Loginflag}, # {Photo}, # {qrcode}, # {delflag}, # {dept.id}, # {staff.id}, # {School.id}) </sert> <! - Instruction de mise à jour, les paramètres sont également # {LoginName}, mot de passe = # {mot de passe}, no = # {no}, name = # {name}, email = # {email}, phone = # {phone}, mobile = # {mobile}, user_type = # {usertype}, update_by = # {updateby.id}, update_date = # # {TOUTHADATE}, reflète = Remarks =) # {Remarques}, login_flag = # {loginflag}, photo = # {photo}, qrcode = # {qrcode}, école = # {School.id} où id = # {id} </fatedate> <! - Deletion physique de l'utilisateur -> <update id = "Delete"> Delete de SYS_USER où ID = # {id} Délétion de l'utilisateur -> <update id = "DeleteByLogic"> Update sys_user set del_flag = # {del_flag_delete} où id = # {id} </dated> </ mappent>