ARTICLEMYBATIS ARTICLEMBATIS TUTORIAL DE APRENDIZAGEM DE APRENDIZAGEM (I) - No início rápido do Mybatis, conversamos sobre como usar o Mybatis para consultar os dados na tabela de usuários, que é uma introdução preliminar ao mybatis. Hoje, explicaremos como usar o Mybatis para executar operações CRUD na tabela de usuários. Antes de ir ao tópico, adicionarei algum conhecimento básico sobre Mybatis e Crud.
O que é Mybatis?
Mybatis é uma excelente estrutura de camada de persistência que suporta consultas SQL simples, procedimentos armazenados e mapeamento avançado. Mybatis elimina as configurações manuais de quase todo o código e parâmetros JDBC e pesquisam conjuntos de resultados. Mybatis pode usar XML simples ou anotações para configuração e mapeamento original para mapear interfaces e Pojos de Java (objetos Java antigos simples) em registros no banco de dados.
Mybatis Download: https://github.com/mybatis/mybatis-3/releases
Crud significa
Crud refere -se à abreviação das primeiras letras de várias palavras ao executar o processamento do cálculo. É usado principalmente para descrever as funções operacionais básicas do banco de dados ou camada de persistência em sistemas de software.
Indo direto ao ponto, o ambiente de teste usado neste artigo é o ambiente de teste no artigo anterior.
1. Use Mybatis para executar operações CRUD em tabelas - implementação baseada em XML
1. Defina o arquivo XML de mapeamento SQL
O conteúdo do arquivo UserMApper.xml são os seguintes:
<? xml versão = "." Encoding = "utf-"?> <! O valor do espaço para nome está convencionalmente definido como o nome do pacote + o nome do arquivo do mapa SQL, para que o valor do espaço para nome possa ser garantido para ser exclusivo. Por exemplo, namespace = "me.gacl.mapping.userMapper" é me.gacl.mapping (nome do pacote) + userMApper (sufixo de remoção do arquivo userMApper.xml)-> <mapper namespace = "me.gacl.mapping.userMapper"> <!-escreva uma tag sql na tag, defina o set, defina o set de selet, se selendo, se selecione, a tag de selet em tags. O atributo ParameterType não pode ser reutilizado para indicar o tipo de parâmetro usado na consulta. O atributo resultType indica o tipo de conjunto de resultados retornado pela consulta resulttype = "me.gacl.domain.user" significa encapsular o resultado da consulta em um objeto da classe de usuário retornar à classe de usuário, que é a classe de entidade, correspondente à tabela de usuários-> <! resultType = "me.gacl.domain.user"> selecione * dos usuários onde id =#{id} </select> <!-Crie User (Create)-> <inserir id = "adduser" parameterType = "me.gacl.domain.user"> insert em usuários (nome) (#{}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {Rem.gacl.domain.user "> insert em usuários (nome) (#! --><delete id="deleteUser" parameterType="int">delete from users where id=#{id}</delete><!-- Modify user (Update) --><update id="updateUser" parameterType="me.gacl.domain.User">update users set name=#{name},age=#{age} where id=#{id}</update><!-- Consulta todos os usuários-> <select id = "getAllUsers" resultype = "me.gacl.domain.user"> selecione * dos usuários </leclect> </mapper> O código da classe de teste de unidade é o seguinte:
pacote me.gacl.test; importar java.util.list; importar me.gacl.domain.user; importar me.gacl.util.mybatisutil; importar org.apache.ibatis.session.sqlSession; import org.junit.test; public class; sqlSession = mybatisutil.getSqlSession (false); sqlSession sqlSession = mybatisutil.getSqlSession (true);/*** mapa sql identificação string,* me.gacl.mapping.UsermApper é o valor do atributo namespace da tagspper tag no usapper. Através do valor do atributo de ID da tag Inserir, você pode encontrar o SQL a ser executado*/String declaration = "me.gacl.mapping.usermapper.adduser"; // mapear o usuário de identificação sql string user = new user (); user.setName ("user slonely e canglang"); sqlsession.insert (declaração, usuário); // enviar manualmente transações // sqlsession.Commit (); // Após a execução do SQL com sqlSession, você precisa fechar o sqlSessionsqlSession.close (); System.out.println (Recresult);}@testPublic void testUpDate () {sqlSession sqlSession = mybatisutil.getSqlSession (true);/*** mapa sql identificação string,* me.gacl.mapping.UsermApper é o valor do namespact Atttract. valor da tag de atualização. O SQL a ser executado pode ser encontrado através do valor do atributo de ID da tag de atualização. */String declaration = "me.gacl.mapping.userMapper.updateUser"; // mapeando o usuário do usuário string sql string = new user (); user.setId (); user.setName ("slonely canLAng"); user.setage (); // Exacute the Modification Operação intresult = sqsess.d.date (); // execute a operação de usertificação intresult = sqs); Precisa fechar o sqlsession.close (); system.out.println (Recresult);}@testpublic void testDelete () {sqlSession sqlSession = mybatisutil.getsqlSession (true);/*** Map Sql String do signal,* me.gacl.mapping.Umerming.UmmApper. UsermApper.xml File, * DeleteUser é o valor do atributo de identificação da tag Excluir. O SQL a ser executado pode ser encontrado através do valor do atributo de ID da tag excluir*/String declaration = "me.gacl.mapping.usermapper.deleteuser"; // mapear sql identificação string // executar a operação de exclusão int recresult = sqlSession.Delete (declaração); SqlsessionsqlSession.Close (); System.out.println (Recresult);}@testPublic void testGetLetall () {sqlSession sqlSession = mybatisutil.getSqlSession ();/*** MAPATIFICATIVA O SIMATIMAPAPPERSPAPPER.MAPDAPPERS.MERMAPPERS.MERMAPPERS.MAPDAPPAPPAPPERS.MAPDAPTER DO SOMAPTER. UsermApper.xml Arquivo, * getAllers é o valor do atributo de identificação da tag Selecionar. Através do valor do atributo de ID da tag Selecionar, você pode encontrar o SQL a ser executado*/String Declaration a ser executado = "me.gacl.mapping.usermApper.getAllUsers"; // mapeando o SQL Identity string // Execute operações de consulta, e encapsula automaticamente os resultados da list <Verty> List <VERSET>> lST> lST> lST> LST> LST> LST> LST> LST> LST>>> SQLSession Execute SQL, você precisa fechar o sqlSessionsqlSession.Close (); System.out.println (lstusers);}} 2. Use Mybatis para realizar operações CRUD em tabelas - implementação baseada em anotação
1. Defina a interface para mapeamento SQL
O código da interface UserMApperi é o seguinte:
pacote me.gacl.mapping; importar java.util.list; importe me.gacl.domain.user; importar org.apache.ibatis.annotações.delete; importar org.apache.ibatis.annoTations.insert; importar org.apache.ibatis.angações.dorTuth; GACL* Defina a interface para o mapeamento SQL, especifique o SQL a ser executado usando anotações*/interface pública UserMApperi {// Use as anotações @Insert para indicar os valores SQL a ser executado pelo método add @insert ("insert em usuários (nome)) valores ( #{name}, #{idade {idade)"), os valores dos usuários (nomes) (nomes) (names) (names) (names) (names) a ser executado). Para especificar o SQL a ser executado pelo método DeletebyId@Delete ("Excluir dos usuários onde id =#{id}") public int DeletebyId (int id); // use o @update anotação para especificar o SQL a ser executado pelo Método da atualização@atualização ("Atualizar" o nome do Set =#{{}, Age =#{Age#{Atualmente {Nome {Nome {}, {{{{} {} {{{} {{} {{} {}############{)###{{{} {{} {{{} {{} {{{} {{'{{} {{'); Usuário); // Use a anotação @Select para especificar o SQL a ser executado pelo método getByid @select * de usuários onde id =#{id} ") public user getById (int id); // use a anotação @Select para especificar o SQL a ser executado pelo getAll @select (" select * do usuário ") Deve -se notar que não precisamos escrever um código de classe de implementação específico para a interface UserMApperi. Esta classe de implementação específica é construída dinamicamente pelo Mybatis e precisamos apenas usá -la diretamente.
2. Registre esta interface de mapeamento no arquivo conf.xml
<? xml versão = "." coding = "utf-"?> <! Doctype Configuration public "-// mybatis.org//dtd Config .//en" "http://mybatis.org/dtd/mybatis--config.dtd"> <figuration><envirafulments/" type = "jdbc" /> <!-Configurar informações de conexão do banco de dados-> <dataSource type = "pooled"> <propriedade name = "driver" value = "com.mysql.jdbc.driver" /> <propriedades name = "url" = "jdbc: mysql: // localhost: /mybatis" " name = "senha" value = "xdp"/> </dataSource> </ambiente> </ambientes> <palppers> <!- Registre o arquivo userMApper.xml. O UserMApper.xml está localizado no pacote me.gacl.mapping, portanto, o recurso é escrito como eu/gacl/mapping/userMapper.xml-> <mapper Resource = "me/gacl/maping/usermpper.xml"/> <!
O código da classe de teste de unidade é o seguinte:
pacote me.gacl.test; importar java.util.list; importar me.gacl.domain.user; importar me.gacl.mapping.usermApperi; importar me.gacl.util.mybatisutil; importestrat.apache.ibatis.Session.Session.SannSession; import.Jit.Tig.Tig.TiST.TIrg.Apache.ibatis.Session.Sess.Session; void testadd () {sqlSession sqlSession = mybatisutil.getSqlSession (true); // Obtenha o objeto da classe de implementação da interface UserMApperi. O objeto de classe de implementação da interface UserMApperi é construído dinamicamente pelo sqlsession.getmapper (userMapperi.class). UsermApperi Mapper = sqlSession.GetMapper (UserMApperi.class); usuário do usuário = new User (); user.setName ("userxdp"); user.setage (); int add = mapper.add (user); // após o uso do sqlSession para executar sql, você precisa fechar sqlsionssões System.out.println (add);}@testpublic void testUpDate () {sqlSession sqlSession = mybatisutil.getSqlSession (true); // Obtenha o objeto de classe de implementação da interface UsermApperi. O objeto da classe de implementação da interface UserMApperi é construído dinamicamente por sqlsession.getmapper (userMapperi.class) userMApperi mapper = sqlsession.getmapper (userMapperi.class); Usuário do usuário = novo user (); user.setId (); user.setName ("LONG LANG_XDP"); user.setage (); // Execute a operação de modificação Int Recresult = mapper.update (user); // Após o uso de sqlSession, você precisa fechar o sqlSesionsqlSessspt; testDelete () {sqlSession sqlSession = mybatisutil.getSqlSession (true); // Obtenha o objeto de classe de implementação da interface UserMApperi. O objeto de classe de implementação da interface UserMApperi é construído dinamicamente por sqlsession.getmapper (userMapperi.class) userMApperi mapper = sqlsession.getmapper (usermApperi.class); // Executar a operação de delete int recresult = SqlSessionsSqlSession.Close (); System.out.println (Recresult);}@testPublic void testGetUser () {sqlSession sqlSession = mybatisutil.getSqlSession (); // Obtenha o objeto de classe de implementação da interface UsermApperi. O objeto de classe de implementação da interface UserMApperi é construído dinamicamente por sqlsession.getmapper (userMApperi.class) userMApperi mapper = sqlsession.getmapper (userMApperi.class); // Executar operações de consulta e encapsular automaticamente os resultados do uso do usuário do usuário = STPER.GEDIDIDIDIDIDIDE (); fechar sqlSessionsqlSession.Close (); System.out.println (user);}@testpublic void testGetAll () {sqlSession sqlSession = mybatisutil.getSqlSession (); // Obtenha o objeto de classe de implementação da interface UserMApperi. O objeto de classe de implementação da interface UserMApperi é construído dinamicamente por sqlsession.getmapper (userMApperi.class) userMApperi mapper = sqlsession.getmapper (userMApperi.class); // Executar a operação de consulta e encapsular automaticamente o resultado da listagem <usuário> e retorno <usuário <usuário <usuário); SqlSession, você precisa fechar o sqlSessionsqlSession.Close (); System.out.println (lstusers);}} O código de classe da ferramenta Mybatisutil usado é o seguinte:
pacote me.gacl.util; importar java.io.inputStream; importar org.apache.ibatis.session.sqlSession; importar org.apache.ibatis.session.sqlSessionFactory; importArgActy.Apache.ibatis.session.Session.Session; Mybatisutil {/*** obtenha sqlSessionFactory*@return sqlSessionFactory*/public static sqlSessionFactory getSqlSessionFactory () {String Resource = "conf.xml"; inputSourCeas é = mybatisil.cllass.getclassotRoLoRer (). SqlSessionFactoryBuilder (). Build (IS); Return Factory;}/*** Get SQLSession* @return sqlSession*/public static sqlSession getSqlSession () {return getSqlSessionFactory (). A transação após o SQL é executada* false indica que o objeto SQLSession criado não comprometerá automaticamente a transação após a execução do SQL. No momento, precisamos ligar para o sqlSession.Commit () para enviar manualmente a transação* @return sqlSession*/public static sqlSession getSqlSession (boolean isautocommit) {return getsqlsessfactory (). OpenSession (isautocommit);}}Todos os códigos relacionados acima foram testados e todos podem usá -los com confiança!
O acima é o tutorial de aprendizado Mybatis apresentado a você pelo editor (II) - como usar o Mybatis para executar operações CRUD na tabela de usuários. Espero que seja útil para todos. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a todos a tempo. Muito obrigado pelo seu apoio ao site wulin.com!