Os métodos de escrita de arquivos de mapeamento da Mybatis são diversos, e diferentes métodos e usos de escrita têm uma grande diferença no tempo de desenvolvimento e tempo de manutenção consumidos durante o processo de desenvolvimento real. Hoje vou gravar um método de escrita de arquivos de mapeamento relativamente simples para todos modificarem e recomendarem e tentar encontrar o melhor método de escrita ~~:
Pegue o objeto do usuário e UserMap.xml como exemplo a ser explicado, o código é o seguinte:
O usuário é uma classe de entidade do usuário (apenas para explicação, você só pode se concentrar nas variáveis do tipo de referência, e o método Get/Set é omitido):
importar com.google.common.collect.lists; importar com.gukeer.common.persistence.dataentity; importar com.gukeer.modules.personal.entity.dept; import com.gukeer.modules.personal.staff; java.util.date;/*** entidade do usuário ** Auther: cc*Data: 2016/9/2*/public classe User estende a dataentidade <suser> {private estático final serialversionUid = 1L; ID de sequência privada; empresa de escritório privada; // escritório de escritório privado; // private string loginname; // nome de login private string senha; // senha string privada string no; // Número do número de trabalho Nome da sequência privada; // Nomeie o email de string privada; // e -mail para string private String telefone; // Telefone Private String Mobile; // móvel private string userType; // tipo de usuário private string loginip; // Último login ipprivate date logindate; // última data de login private string loginflag; // se deve permitir o login na foto de string privada; // Avatar Private String qrcode; // Código QR String Private String OldLoginName; // Nome de login original Private String NewPassword; // nova senha privada string oldLoginip; // Último login ipprivate date OldLogindate; // Última data de login Departamento de Departamento Privado; // equipe de equipe privada do departamento; // Posicionar papel privado função; // Consulta as condições do usuário com base na lista de função prateada <PPROUGE> rolelist = lists.newArrayList (); // Lista de função do proprietário Escola Privada Escola; // Atribuições Comentários de string privada; // Notas do usuário privado Createby; // Data privada criadora criada; // Data de criação Atualização do usuário privado; // Updater Private Data Atualizada; // Data atualizada String privada Delflag; // Excluir Mark (0: Normal; 1: Excluir; 2: revisão)}Para variáveis de membros dos tipos de referência, a fim de atribuir valores diretamente durante o processo de consulta, os resultados da consulta podem ser atribuídos ao conjunto de resultados retornados no arquivo de mapeamento:
<? xml versão = "1.0" coding = "utf-8"?> <! namespace = "com.gk.modules.sys.dao.userdao"> <!-O ponto-chave é esta seção, atribuindo diretamente o campo de identificação salvo pelo banco de dados à variável de membro de um objeto, como o usuário (a.Company). <!- Obviamente, as variáveis do tipo de referência na empresa também podem ser atribuídas usando esse método. Várias tabelas podem ser verificadas através da junção esquerda. Esta é uma operação na consulta do banco de dados. Isso não é discutido aqui-> <sql id = "userColumns"> a.id, a.company_id como "Company.id", A.Office_Id como "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.Cremarks, CreateBys, " updateby.id ", A.Update_date, A.Del_Flag, c.name como" Company.name ", C.Parent_id como" Company.Parent.id ", C.Parent_ids como" Company.parentids ", ca.id como" Company.areea.id ", como" Company.areaea.name "ca.a.a. 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.ea.Parent.id.Ia.a.aMa.Parent", Oa.Parent_id como "Office.area.Parent.Id.Ia.Ia.a.a.ident" Oa.ident ", Oa.id.Id.Id.Id.Id.IrtEnt", Oa.Id. "company.primaryPerson.id",cu.name AS "company.primaryPerson.name",cu2.id AS "company.deputyPerson.id",cu2.name AS "company.deputyPerson.name",ou.id AS "office.primaryPerson.id",ou.name AS "office.primaryPerson.name",ou2.id AS "office.deputyPerson.id",ou2.name Como "office.deputypeson.name", sc.xxlx como "school.xxlx", sc.xxmc como "school.xxxmc" </sql> <sql id = "userjoins"> junção esquerda sys_office c on c.id = a.company_idleft junção sys_area ca.id ca.ide. A.Office_Idleft Junt -se sys_area oa no oa.id = O.area_idleft Junte -se sys_user Cu em cu.id = c.Primary_PersonLeft Junção sys_user Cu2 em cu2.id = c.Desonleft_personLeft Junção sys_user oueer OU.id = O.Primary_Personf O.deputy_personLeft Junte-se xj_school sc em sc.id = a.school </sql> <!-declaração de consulta, de acordo com o resultado da consulta de ID, o tipo de retorno pode ser escrito diretamente pelo usuário, enquanto o resultado da configuração "resulte" e "> se selecione" se selecione "getUserBerC" resulte "e" sys_user a <incluir refid = "userJoins"/> where a.id = #{id} </select> <!-declaração de consulta, consulta com base no objeto do usuário, os parâmetros aqui são a variável do usuário-> <select id = "getByLoginName" resultype = "user" parametertype = "user"> " refid="userJoins"/>WHERE a.login_name = #{loginName} AND a.del_flag = #{DEL_FLAG_NORMAL}</select><!-- Insert statement, the parameters must be User object--><insert id="insert">INSERT INTO sys_user(id, company_id, office_id, login_name, password, no, name, email, phone, mobile, user_type, create_by, create_date, update_by, update_date, remarks, login_flag, photo, qrcode,del_flag,dept_id,staff_id,school) VALUES (#{id}, #{company.id}, #{office.id}, #{loginName}, #{password}, #{no}, #{name}, #{email}, #{telefone}, #{celular}, #{userType}, #{cremeby.id}, #{CreateDate}, #{atualizada}, #{observações}, #{loginflag}, #{foto}, #{qrcode},#{delflag},#{Dept.id},#{Staff.id},#{School.id}) </insert> <!-Atualizar instrução, os parâmetros também são objetos de usuário-> <update = "update"> atualizar #{loginName}, senha = #{senha}, não = #{não}, name = #{name}, email = #{email}, telefone = #{telefone}, móvel = #{móvel}, user_type = #{userType}, atualização # #{updateby.id},, update_type = #{usertype}, atualização # #{updateby.id},, update_type = #{usertype}, update_by = {updateby.id}, #{comentários}, login_flag = #{loginflag}, foto = #{photo}, qrcode = #{qrcode}, escola = #{school.id} onde id = #{id}} </update> <!-deleção física do usuário-> <update id = "delate"> deline do usuário-> <update id = "DeletebyLogic"> Atualizar sys_user Set del_flag = #{del_flag_delete} onde id = #{id} </atualize> </mapper>