Mybatis é uma estrutura de camada de persistência que suporta consultas SQL comuns, procedimentos armazenados e mapeamento avançado.
O MYBATIS elimina as configurações manuais de quase todo o código e parâmetros JDBC e o encapsulamento de pesquisa do conjunto de resultados.
Mybatis pode usar XML simples ou anotações para configuração e mapeamento original, interfaces de mapeamento e Pojo de Java (objetos Java antigos simples) para registros no banco de dados.
Cada aplicativo mybatis leva uma instância do objeto SQLSessionFactory como o núcleo.
Uma instância do objeto SQLSessionFactory pode ser obtida através do objeto SQLSessionFactoryBuilder. O objeto SQLSessionFactoryBuilder pode ser construído através do arquivo de configuração XML ou da instância da classe de configuração preparada no gerenciamento de uso anterior.
DataSource DataSource = BlogDataSourceFactory.GetBlogDataSource (); transação de transaçãoFactory = novo JDBCTransactionFactory (); // Ambiente Ambiente = New Environment ("Desenvolvimento", TransactionFactory, DataSource); Configuração de Configuração = Configuração (Ambiente); Configuration.addmapper (blogmapper.class); sqlSessionFactory sqlSessionFactory = new SQLSessionFactoryBuilder (). Build (Configuration);Observe que, neste caso, a configuração é adicionar a classe Mapper. As classes de mapeador são classes Java, que contêm anotações de instruções de mapeamento SQL para evitar dependências nos arquivos XML, mas o mapeamento XML ainda é necessário na maioria dos mapeamentos avançados (como o mapeamento de junção aninhado).
Por esse motivo, se houver um arquivo de configuração XML, o Mybatis encontrará e carregará automaticamente um arquivo xml por par (neste caso, com base no nome da classe da classe blogmapper.class sob o caminho da classe, então o blogmapper.xml será carregado, mas a classe e o XML está no mesmo diretório de arquivos.
<? xml versão = "1.0" Encoding = "utf-8"?> <! Pode resolver o problema de que o nome da propriedade do modelo é inconsistente com o nome da coluna da coluna na tabela de dados jdbctype deve ser capitalizada-> <resultMap type = "user" id = "userMap"> <id de propriedade = "id" column = "id" javatype = "int" jdbcumn = "idleer" james "names =" Javatype = "JDBCUMNE =" ID "/" ID ""/"Javatype =" int " jdbctype = "varchar"/> <Result Property = "Age" Column = "Age" javatype = "int" jdbctype = "integer"/> </resultmap> <!- observe o resultado aqui. Se coluna == Propriedade, você pode retornar diretamente o objeto Java. Se o nome do atributo for inconsistente com o nome da coluna, a solução será a seguinte: 1. Use ResultMap; 2. Retorno HashMap; 3. Use alias para a declaração de consulta-> <select id = "getUser" parameterType = "int" resultmap = "userMap"> selecione * de t_user WHERE ID =#{id} </select> <delete id = "DELETEUSER" ParameterType = "int"> delete de t_User Where ID =##### parameterType="User" > update t_user set username=#{name},age=#{age} where id=#{id} </update> <insert id="insertUser" parameterType="User" > insert into t_user(username,age) values(#{name},#{age}) </insert> <!-- model's attr(name) different from coluna (nome de usuário), então o resultado use userMap -> <select id = "getUsers" resultmap = "userMap"> selecione * de t_user </leclect> </papper> Registre -se em mybatis.xml [Quando combinado com a mola, este arquivo de configuração não será necessário]
Arquivo de configuração mybatis
<? xml versão = "1.0" coding = "utf-8"?> <! Resource = "JDBC.Properties"/> <!-Configurar Alias da classe da entidade-> <TyceAliAses> <!-<typeAlias type = "com.web.model.user" Alias = "User"/>-> <Nome do pacote = "com.web.model"/> </typenias> <! id = "Desenvolvimento"> <transactionManager tipo = "jdbc" /> <dataSource type = "pooled"> <propriedade name = "driver" value = "$ {driver}" /> <names name = "url" value = "$ {url}" /> <name "username" = "$ {username}" " /{url}" /> <names name "=" = "$ {US $ {} {url}" /> <nome do nome "" = "=" $ {US $ {Url} " /> <> </DataSource> </ambiental> </ambientes> <Mappers> <mapper Resource = "com/web/mapper/userMapper.xml"/> <mapper Resource = "com/web/mapper/ordermapper.xml"/> <papper/> </mappers> </sabiguration>Aqui usamos o arquivo XML para obter o SQLSessionFactory e o SQLSession.
public static sqlSessionFactory getFactory () {/*flua o src dir*/string Resource = "mybatis.xml";/*mybatisutils.class.getResourceasStream (recurso) ---- está errado !!! * Distinguir os dois para cima e para baixo * */inputStream inputStream = mybatisutils.class.getclassloader (). getResourceasStream (Resource); sqlSessionFactory Factory = new SQLSessionFactoryBuilder (). enviar;/* duas soluções: 1.Factory.Ensession (true); 2.Session.Commit (); */ /*Use sql xml não anotação*/@teste public void testadd () {sqlSession Session = mybatisutils.getFactory (). OpenSession (); String declaration = "com.web.mapper.UserMApper.InsertUser";/*Retornar as linhas do efeito*/Insert = Sesst.Insert (*; commit*/session.Commit (true); session.close (); system.out.println ("linhas de efeito. "com.web.mapper.userMapper.getUser";/*Retorne o efeito linhas*/usuário user = session.selectone (declaration, 3); system.out.println ("linhas de efeito .."+usuário);}@teste public void testUpDate () {sqlSession Session = mybatisutils.getFactory (). "com.web.mapper.userMapper.UpDateUser";/*Retorne o efeito linhas*/int update = session.Update (instrução, novo usuário (3, "tom4", 13)); System.out.println ("Effect linhas .."+update);}@testd void testDelete () (sqlSess. "com.web.mapper.userMapper.deleteUser";/*Retorne o efeito linhas*/int DELETE = session.Delete (Declaração, 6);/*Comprometa -se por si mesmo*/session.Commit (); System.esion.Println ("efeito linhas .."+DeLete) ;close ();}@testl Void VoL Mybatisutils.getFactory (). OpenSession (); String declaration = "com.web.mapper.userMapper.getUsers";/*Retorne a lista <suser>*/list <suser> users = session.selectList (Declaração); session.Commit (); System.out.println ("Effect ROWs .."+usuários);ParameterType e ResultType são hashmap:
<select id = "getUserFormap" parametertype = "hashmap" resulttype = "hashmap"> selecione * de c_user onde id =#{id}; </leclect> @Test public void getUserFormap () {SqlSession Session = mybatisutils.getFactory (). OpenSession (); String declaration = "com.web.mapper.userMapper.getUserFormFensp"; hashmap <string, object> map = new hashmap <string, object> (); map.put. " session.SelectOne (Declaração, mapa);/*O padrão não é automático commit*/session.Commit (true); session.close (); System.out.println ("Effect linhas .."+selectOne+", classe:"+selectOne.getClass ());} linhas de efeito .. {id = 1, idade = 12, nome = luli}, classe: classe java.util.hashmapPara resumir, pode -se observar que o mybatis analisará automaticamente e encapsulará de acordo com o tipo de parâmetro e o tipo de resultado.
<select id = "getListpage" parametertype = "hashmap" resultmap = "siteextendDaomap"> selecione ID, site_id, site_name, site_number, província, cidade, área, e endereço, prefix <number, longitude, latitude de tb_site -use -use dinâmico sql <trim prefix = "prefix" whren wheren whretning de tb_site -use -usenic sql <trim prefix <number "wheren wheren wheren whreting de tb_site -use -usenic sql <trim prefix =" null e checkState! = '' "> e check_state = #{checkState, jdbctype = Integer} </if> <if test =" siteId! = null e siteID! = '' '> e site_id como concat ('%', #{siteId},' e '') </se> <se> <fiD Test ('%', #{}}, '' ') </se> <se concat ('%', #{sitename}, '%') </f> <se test = "sitenumber! = nulo e sitenumber! = ''"> e site_number como concat ('%', #{sitenumber}, '%') </if> <se test = "Province! #{sitenumber}, '%') </if> <se test = "Província! --Add Sort <se test = "SortName! = NULL e SORTNAME! = '' E Sortorder! = NULL e STELORDERTER! = NULL e STELORDER! = ''"> Encomende por $ {SortName} $ {Sortorder} </se> --Add Paging Limit $ {(Page-1)*Pagesize}, $ {Pagesize}Se o parâmetro for pojo, o mybatis obterá automaticamente o ID do objeto;
<delete id = "delete" parametertype = "user"> exclua do tb_user onde id = #{id} </lete> <delete id = "deletebyId" parameterType = "long"> exclua do tb_user onde id = #{id} </delete> <Delete id = "DeletebyIds"> Excluir do tb_user onde id em -use foreach <foreach collection = "list" item = "id" open = "(" separator = "," close = ")"> #{id} </foueach> </lete>Geralmente usado em conjunto com o getListpage.
<select id = "getRows" parametertype = "hashmap" resulttype = "long"> selecione count (*) de tb_sys_role <if test = "keysysrole! = null"> <trim prefix = "onde" prefixoverrides = "e | ou"> <se test = "keysRole.id! </if> <se test = "keysysrole.name! = null e keysysRole.name! = ''"> e name = #{keysysRole.name} </if> <se test = "keysysRole.Available! </se> </leclect>O exposto acima é todo o conteúdo deste artigo sobre Mybatis usando XML para análise de código. Espero que seja útil para todos. Amigos interessados podem continuar se referindo a outros tópicos relacionados neste site. Se houver alguma falha, deixe uma mensagem para apontá -la. Obrigado amigos pelo seu apoio para este site!