Los métodos de redacción de archivos de mapeo de MyBatis son diversos, y los diferentes métodos y usos de escritura tienen una gran diferencia en el tiempo de desarrollo y el tiempo de mantenimiento consumido durante el proceso de desarrollo real. Hoy grabaré un método de escritura de archivos de mapeo relativamente simple para que todos modifiquen y lo recomiendan, e intentaré encontrar el mejor método de escritura ~~:
Tome el objeto de usuario y usermap.xml como ejemplo para explicar, el código es el siguiente:
El usuario es una clase de entidad de usuario (solo para explicación, solo puede centrarse en las variables de tipo de referencia, y se omite el método get/set):
import com.google.common.collect.lists; import com.gukeer.common.persistence.dataEntity; import com.gukeer.modules.personal.entity.dept; import com.gukeer.modules.personal.entity.staff; import.gukeer.modules.school.entity.school; import java.date;/date; Entity ** Autor: CC* Fecha: 2016/9/2*/El usuario de la clase pública extiende DataSeTity <Ser User> {private static final Long SerialVersionUid = 1L; ID de cadena privada; empresa de oficina privada; // oficina de oficina privada; // cadena privada loginName; // nombre de inicio de sesión privado cadena contraseña; // contraseña cadena privada no; // Número de trabajo Nombre de cadena privada; // Nombre del correo electrónico de cadena privada; // Envíe un correo electrónico al teléfono de cadena privada; // teléfono con cadena privada móvil; // cadena privada móvil userType; // Tipo de usuario String private String loginip; // Último inicio de sesión IPPRIVATE Date logindate; // Última fecha de inicio de sesión de cadena privada loginflag; // si permitir que el inicio de sesión en la foto de la cadena privada; // Avatar String private Qrcode; // Código QR Cadena privada OldloginName; // Nombre de inicio de sesión original Cadena privada NewPassword; // nueva contraseña cadena privada OldlogInip; // Último inicio de sesión IPPRIVATE Fecha OldLogindate; // Última fecha de inicio de sesión Departamento de departamento privado; // personal de personal privado del departamento; // posicionar rol de rol privado; // consulta condiciones del usuario basadas en la lista privada de rol <sol> rolelist = lists.newarrayList (); // Lista de roles del propietario Escuela de la Escuela Privada; // Observaciones de cadena privada del atributor; // NOTAS USUARIO PRIVADO CREATEBY; // Creador de fecha privada creó; // Fecha de creación Update de usuario privado; // Actualización de la fecha privada actualizada; // Fecha actualizada Cadena privada Delflag; // Eliminar marca (0: normal; 1: eliminar; 2: revisión)}Para las variables miembros de los tipos de referencia, para asignar valores directamente durante el proceso de consulta, los resultados de la consulta se pueden asignar al resultado devuelto establecido en el archivo de asignación:
<? xml versión = "1.0" encoding = "utf-8"?> <! Doctype mapper public "-// mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace = "com.gk.modules.sys.dao.userdao"> <!-La clave clave es esta sección, asignando directamente el campo de identificación guardado por la base de datos a la variable miembro de un objeto, como a.company_id como "empresa.id", en este momento, las propiedades en la lista o el objeto de usuario consultado en el fondo se pueden obtener directamente a través del usuario. Por supuesto, las variables de tipo de referencia en la Compañía también se pueden asignar utilizando este método. Se pueden verificar varias tablas a través de la unión a la izquierda. Esta es una operación en la consulta de la base de datos. Esto no se discute aquí-> <sql id = "UserColumns"> A.ID, A.Company_id como "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.Remarks, a.login_flag, a.photo, a.qrcode, a.create_by como "create "updateBy.id", a.update_date, a.del_flag, c.name como "compañía.name", c.parent_id como "compañía.parent.id", c.parent_ids como "empresa.parentids", ca.id como "compañía.area.id", ca.name como "compañía.area.name", ca.id_id como "Company.arent.area.ar.arts. Como "Company.area.Parentids", O.name como "Office.name", O.Parent_id como "Office.Parent.id", OA.id como "Office.area.id", OA.Name como "Office.area.name", OA.Parent_id como "Office.area.parent.id", OA.Parent_ids como "Office.area.area.area.ar. "Company.PrimaryPerson.id", CU.Name como "Company.Primaryperson.name", cu2.id como "Company.DeputyPerson.id", Cu2.name como "Company.deputyperson.name", ou.id como "Office.Primaryperson.id", ou.name como "Office.Primarson.name", o22.id As As As "Office.deputyperson.id", ou2.name como "office.deputyperson.name", sc.xxlx como "School.xxlx", sc.xxmc como "School.xxmc" </sql> <sql id = "userjoins"> Left Sys_office c en c.id = a.company_idleft echa Únete a sys_office o en o.id = a.office_idleft Únete sys_area oa en oa.id = o.area_idleft unión sys_user cu en cu.id = c.primary_personleft un unión sys_user cu2 en cu2.id = c.deputy_personttt unión sys_user ou en ou.id = o.primaryleft ou2 ON ou2.id = o.deputy_personLEFT JOIN xj_school sc ON sc.id = a.school</sql><!-- Query statement, according to the Id query result, the return type can be written directly by User, while different configuration resultMap omits the time to write the xml --><select id="getUserById" resultType="User">SELECT<include refid = "Usercolumns"/> de Sys_user a <incluido refid = "userjoins"/> donde a.id = #{id} </select> <!-Declaración de consulta, consulta basada en el objeto de usuario, los parámetros aquí son la variable de usuario-> <select ID = "getByLoginName" resultType = "user" parametertype = "user" Select <incluye REEL REFELED "" UserMUnmUns "UserMUnmUns" UserMUnmUnmUnmUnmUnmUnmUns. sys_user a <incluido refid = "userJoins"/> donde a.login_name = #{loginName} y a.del_flag = #{del_flag_normal} </select> <!-Insertar la declaración, los parámetros deben ser objeto de usuario-> <insertar id = "insertar"> insertar en sys_user (id, compañía, Office, Office_id, Login, no, no es un objeto de usuario, no. Teléfono, móvil, user_type, create_by, create_date, update_by, update_date, observaciones, login_flag, foto, qrcode, del_flag, deTpt_id, staff_id, escolar) valores ( #{ID}, #{compañía.id}, #{Office.id}, #{loginName}, #{Password}, # #}, #{n. #{correo electrónico}, #{phone}, #{mobile}, #{usertype}, #{createBy.id}, #{creatate}, #{actualizateate}, #{observaciones}, #{Loginflag}, #{Photo}, #{qrcode},#{delflag},#{deTpt.id},#{staft.id},#{School.id}) </sert> <!-Declaración de actualización, los parámetros también son objetos de usuario-> <update id = "update"> update_User set empresario_id =#{compañía.id}, Office_id =#{Office.id}, login_name, login_name, login_name, login_iD. #{loginName}, contraseña = #{contraseña}, no = #{no}, name = #{name}, correo electrónico = #{correo electrónico}, phone = #{phone}, mobile = #{mobile}, user_type = # {usertype}, update_by = #{updateBy.id}, uply_date = #{actualización}, observación, observación, Observe, Observe, observación = Observación = Comentario = #{observaciones}, login_flag = #{loginflag}, photo = #{photo}, qrcode = #{qrcode}, School = #{School.id} Where id = #{id} </update> <!-Physical deleción del usuario-> <Update id = "Delete"> Delete de Sys_user Where Id = # #}/° ° I deleción del usuario-> <update id = "deletyByLogic"> update sys_user set del_flag = #{del_flag_delete} donde id = #{id} </update> </mapper>