O antecessor de Mybatis era o ibatis, que era originalmente um projeto de código aberto do Apache. Em 2010, este projeto foi transferido da Apache Software Foundation para o Google Code e foi renomeado Mybatis. Mybatis é uma excelente estrutura de camada de persistência que suporta consultas SQL simples, procedimentos armazenados e mapeamento avançado. Mybatis elimina a configuração manual de quase todo o código e parâmetros JDBC e a recuperação dos conjuntos de resultados. O Mybatis usa XML simples ou anotações para configuração e mapeamento original, interfaces de mapeamento e POJOS de Java (Planeje objetos Java Old, objetos Java comuns) nos registros no banco de dados.
A arquitetura funcional de Mybatis é dividida em três camadas (a imagem é emprestada da Encyclopedia Baidu):
1) Camada de interface da API: fornece APIs de interface para uso externo, através do qual os desenvolvedores manipulam bancos de dados. Depois que a camada de interface receber a solicitação de chamada, ela chamará a camada de processamento de dados para concluir o processamento específico de dados.
2) Camada de processamento de dados: responsável por pesquisa específica de SQL, análise SQL, execução do SQL e processamento de mapeamento de resultados de execução, etc. Seu principal objetivo é concluir uma operação de banco de dados com base na solicitação da chamada.
3) Camada de suporte básico: responsável pelo suporte funcional mais básico, incluindo gerenciamento de conexões, gerenciamento de transações, carregamento de configuração e processamento de cache. Todas essas são coisas comuns, extraindo -as como os componentes mais básicos. Fornece o suporte mais básico para a camada superior da camada de processamento de dados.
Aqui está um mybatis simples usando demonstração.
Estrutura geral
Dependência do POM
Dois pacotes JAR precisam ser referenciados, um é Mybatis e o outro é o MySQL Connector-Java. Se for um projeto maven, adicione dependências no POM da seguinte forma.
<Depencency> <PuerpId> org.mybatis </groupiD> <ArtifactId> mybatis </artifactId> <versão> 3.2.3 </versão> </dependency> <pendesency> <puperid> mysql </groupid> <stifactId> mysql-conector-java </artifactId> </susshiEd> <susshiSshs> </siENCE> </siENCIM> </groupid> <sussion> <stersiSshs> </siEMENT> </siENCIDEM> </groupid> <suserfactid> mysql-conector.
Preparação de dados
Crie dados de pontos no MySQL para testes:
Criar banco de dados mybatis_test; crie usuário de tabela (número inteiro de idade não nula, nome varchar (64) não nulo padrão ''); insira valores do usuário (18, 'zhanjindong'); insira valores do usuário (20, 'zhangsan');
Arquivo de configuração
São necessários dois tipos de arquivos de configuração. Um é o arquivo de configuração mybatis mybatis-config.xml. No exemplo, é uma configuração muito simples. Existem muitas instruções para a configuração detalhada na Internet.
<? xml versão = "1.0" Encoding = "utf-8"?> <! Doctype Configuration public "-// mybatis.org//dtd config 3.0 // pt" "http://mybatis.org/dtd/mybatis-3-config.ddddddddddddddddtishpigs-figsing-sing-sing) <setting name="cacheEnabled" value="false" /> <setting name="useGeneratedKeys" value="true" /> <setting name="defaultExecutorType" value="REUSE" /> </settings> <typeAliases> <typeAlias alias="User" type="test.mybatis.User"/> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager tipo = "jdbc"/> <dataSource type = "pooled"> <propriedade name = "driver" value = "com.mysql.jdbc.driver"/> <nome do nome = "url" = "jdbc: mysql: //192.168.71.38: 3306/mybat/mybat/mybat:/mybat:/mybat: //192.168.71.38: 3306/mybat:/mybat:/mybat: //192.168.71.38: 3306: value = "root"/> <propriedade name = "senha" value = "123456"/> </datasource> </ambiental
Outro tipo é o arquivo de mapeamento da interface de acesso a dados: no exemplo, é UserMApper.xml. Este arquivo pode ser encontrado por src/main/recursos ou subdiretório mybatis. É especificado pelo recurso do nó Mappers/Mapper em mybatis-config.xml.
<? xml versão = "1.0" Encoding = "utf-8"?> <! O namespace deve ser o caminho da interface UserMApper "-> <insert id =" insertUser "parametertype =" user "> inserir nos valores do usuário (nome, idade) (#{name},#{Age}) <!-aqui, não há semicolons, assim como o final do sql, caso contrário, um erro"! ORA-00911 ": Nome do método da interface na interface UserMApper-> <select id = "getUser" resulttype = "user" parametertype = "java.lang.string"> selecione * do usuário onde name =#{name} </leclect> <//Mapper> O arquivo de mapeamento correspondente é a interface UserMerpApper no nome de namespace.
pacote test.mybatis; interface pública UserMApper {public void insertUser (usuário do usuário); Usuário público getUser (nome da string);} Precisa de um pojo: user.java
pacote test.mybatis; public class usuário {private string name; idade inteira privada; public String getName () {Return Name; } public void setName (nome da string) {this.name = name; } public integer getage () {retorna idade; } public void setage (idade inteira) {this.age = Age; } usuário público (nome da string, idade inteira) {super (); this.name = nome; this.age = idade; } public user () {super (); }} teste
A operação do banco de dados Mybatis usa uma classe chamada SQLSession. Esta classe é gerada através do SQLSessionFactory. Geralmente é recomendável manter um SQLSessionFactory globalmente.
Testmybatis.java
pacote test.mybatis; importar java.io.ioException; importar java.io.reader; importar org.apache.ibatis.io.resources; importar org.apache.ibatis.session.sqlSessionFactory; publicsring.apache.ibats.Session.SqlSessFactoryBuilder; SQLSessionFactory; static {String Resource = "mybatis-config.xml"; Leitor leitor = null; tente {reader = Resources.GetResourCeasReader (recurso); } catch (ioexception e) {System.out.println (e.getMessage ()); } sqlSessionFactory = new SQLSessionFactoryBuilder (). Build (leitor); } public static sqlSessionFactory getSqlSessionFactory () {return sqlSessionFactory; }}O código de teste é o seguinte:
Testmybatis.java
pacote test.mybatis; importar org.apache.ibatis.session.sqlSession; importar org.apache.ibatis.session.sqlSessionFactory; classe pública testMybatis {static sqlSessionFactory sqlSessionFactory = null; static {sqlSessionFactory = mybatisutil.getSqlSessionFactory (); } public static void main (string [] args) {testadd (); getUser (); } public static void testadd () {sqlSession sqlSession = sqlSessionFactory.opensssion (); tente {userMApper userMApper = sqlSession.getmapper (userMapper.class); Usuário do usuário = novo usuário ("lisi", novo inteiro (25)); UsermApper.insertUser (usuário); sqlSession.Commit (); // Você deve enviar aqui, caso contrário, os dados não entrarão no banco de dados} finalmente {sqlSession.close (); }} public static void getUser () {sqlSession sqlSession = sqlSessionFactory.opensssion (); tente {userMApper userMApper = sqlSession.getmapper (userMapper.class); Usuário do usuário = UsermApper.getUser ("Zhangsan"); System.out.println ("Nome:" + user.getName () + "Age:" + user.getage ()); } finalmente {sqlsession.close (); }}} Coisas a serem observadas
1. Mybatis usará o LOG4J para gravar logs, mas o modo de depuração parece ter um impacto muito forte no desempenho.
2. O cache de consulta de Mybatis tem um grande impacto no desempenho, e a diferença entre ativar e não ativar é muito grande.
Nota: A linha de cache deve ser adicionada ao arquivo de mapeador, caso contrário, não terá efeito.
Download de código de exemplo: download de código
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.