Mybatis é uma estrutura de persistência Java que associa objetos a procedimentos armazenados ou instruções SQL por meio de descritores ou anotações XML.
O Mybatis é um software livre distribuído no Apache License 2.0 e é uma versão ramificada do ibatis 3.0. Sua equipe de manutenção também inclui membros da Ibatis Startup.
Ao contrário de outras estruturas de mapeamento de objetos-relatórios, o MYBATIS não associa objetos Java às tabelas de banco de dados, mas os métodos Java às instruções SQL. O MYBATIS permite que os usuários aproveitem ao máximo várias funções de banco de dados, como procedimentos armazenados, visualizações, várias consultas complexas e os recursos proprietários de um banco de dados. Se você deseja operar em bancos de dados legados, bancos de dados irregulares ou ter controle completo sobre a execução do SQL, o Mybatis é uma boa escolha.
Comparado com o JDBC, o Mybatis simplifica o código relevante: as instruções SQL podem ser executadas em uma linha de código. O Mybatis fornece um mecanismo de mapeamento que mapeia declarativamente os resultados da execução das instruções SQL com a árvore de objetos. As instruções SQL podem ser geradas dinamicamente usando uma linguagem de expressão do tipo XML embutida ou usando plug-ins integrados a velocidade do Apache.
O Mybatis se integra à Spring Framework e ao Google Guice, que salva os desenvolvedores de problemas de dependência.
Mybatis suporta cache declarativo de dados. Quando uma instrução SQL é marcada como "Cacheable", todos os dados obtidos no banco de dados quando forem executados serão armazenados em um cache. Quando esta declaração for executada no futuro, o resultado será lido no cache, em vez de atingir o banco de dados novamente. O Mybatis fornece uma implementação de cache baseada em hashmap java por padrão, bem como um conector padrão para conexões com oscache, ehcache, avelcocast e memcached. O Mybatis também fornece API para outras implementações de cache.
Pontos importantes
Depois de aprender durante esse período, o processo principal para Mybatis não pode ser as seguintes etapas
1. Obtenha o SessionFactory no arquivo de configuração XML e, em seguida, gera a sessão correspondente a partir do SessionFactory.
2. Use o objeto de sessão para concluir as operações CRUD correspondentes (adição, exclusão, modificação e consulta) e controle de transação correspondente nos dados comerciais.
3. Feche a sessão correspondente após o uso para evitar consumo excessivo de recursos
4. Use o arquivo Mapper XML correspondente para configurar a operação de mapa correspondente entre o Javabean da entidade comercial e a tabela de banco de dados.
Preparativos antes da guerra:
1. Ambiente de desenvolvimento Eclipse Javaee IDE, JDK 1.6, banco de dados MySQL 5.5
2. Faça o download do pacote JAR correspondente para uso posterior
Mybatis-3.2.3.zip Após a descompressão, retire o mybatis-3.2.3.jar, => Endereço do download: http://code.google.com/p/mybatis/ (pacote mybatis core)
mybatis-generator-core-1.3.1.jar => Download Endereço: http://code.google.com/p/mybatis/wiki/generator (mybatis gera automaticamente o pacote de arquivos de configuração)
MySQL-Connector-Java-5.1.26-bin.jar => Download Endereço: http://dev.mysql.com/downloads/connector/j/ (pacote de driver JDBC do MySQL)
Etapas de construção
Em seguida, você pode criar um projeto Java chamado MyBatisDemo sob o Eclipse e criar a estrutura do pacote e a estrutura de pastas correspondentes, conforme mostrado na figura abaixo, onde o Config e o Mapper são pastas, respectivamente.
O programa Demo Runner correspondente e os objetos Javabean são armazenados no pacote David.mybatis.demo e o pacote David.mybatis.model, e os pacotes JAR de terceiros acabados de baixados são armazenados na pasta Lib.
Depois de criar o seguinte diretório, podemos adicionar o pacote JAR correspondente, conforme mostrado na figura abaixo
Após a conclusão, execute o seguinte SQL para estabelecer a estrutura da tabela necessária para a demonstração, incluindo 3 tabelas, visitante (tabela de visitantes), site (tabela do site) e canal (tabela de canal)
/*Crie visitante*/Crie visitante da tabela (id int (11) não nulo auto_increment, nome varchar (1000) não nulo, email varchar (1000) não nulo, status não nulo padrão 1, weattime null datEtime, chaves primária (id))/*crie tabela de sites*/crie tabela (idaro (não é o null -chaves, a tecla primária, a tecla primária (ID))/*Crie tabela de sites*/crie a tabela de tabela (ID não é a chave principal, o varo_Irnt. Visitante (id), status int não nulo padrão 1, createTime DateTime)/*Crie tabela de canal*/Crie canal de tabela (id não
Depois de tudo isso está pronto, começaremos a fazê -lo ~
Conforme mencionado no início, todas as configurações MyBatis se originam de um arquivo de configuração XML. Precisamos criar um novo arquivo de configuração chamado mybatis_demo_config.xml na pasta Config. Essa coisa é uma das operações principais que precisamos operar mais tarde.
Ao configurar esse arquivo, você deve prestar atenção aos elementos no nó <Configuração> que possuem requisitos de ordem hierárquica e não podem ser alterados à vontade. Caso contrário, ocorrerá uma exceção ao carregar o arquivo de configuração XML, resultando em operações subsequentes sem sucesso.
Para descrições específicas do nó, você pode verificar http://mybatis.github.io/mybatis-3/zh/configuration.html#. Aqui, falamos apenas sobre os nós mais usados, típicos, ambientes, mapeadores.
1. TypeAliases => Nó de alias. Você pode definir as propriedades deste nó para que esse alias seja usado em vez de um nome totalmente qualificado no arquivo de configuração.
Por exemplo <typeAlias type = "David.mybatis.model.visitor" alias = "visitante" />
2. Ambientes => Nó do ambiente, configurando informações relacionadas à conexão de dados
3. Mappers => Configurar declarações de mapeamento SQL.
A configuração mais simples é a seguinte:
<? xml versão = "1.0" coding = "utf-8"?> <! Type = "David.mybatis.model.visitor" Alias = "Visitor" /> </tyTealiases> <ambientes default = "Development"> <ambiente id = "Development"> <transactionManager type = "jdbc"> < /transactionManager> <dataSource type = "pooled"> <ween Name = "Driver". ? useunicode = true & caracterizencoding = utf8 para suportar a inserção chinesa-> <propriedade name = "url" value = "jdbc: mysql: //127.0.0.1: 3306/mybatis_db? useunicode = trueCoding = utf8"/> <nome da nomes "usernam" "username" useunicode = trueCoding = utf8 "/> <nomes =" usernk value = "123456"/> </DataSource> </ambiental
Crie uma nova classe chamada Mybatisutils sob o pacote David.mybatis.demo, que armazena os métodos para obter o SQLSession e o fechamento de sqlSession, que são extraídos para facilitar a reutilização múltipla.
pacote David.mybatis.demo; importar java.io.inputStream; importar org.apache.ibatis.io.resources; importar org.apache.ibatis.session.sqlSession; importanyrg.apache.ibatis.session.session.Sessption; David.mybatis.model.crud_enum; classe pública mybatisutils {private static final string config_path = "config/mybatis_demo_config.xml"; /** Obtenha link de acesso ao banco de dados*/ public static sqlSession getSqlSession () {SqlSession Session = null; tente {inputStream stream = Resources.getResourceasStream (config_path); // O ambiente de banco de dados correspondente pode ser lido de acordo com o ambiente correspondente configurado // sqlSessionFactory Factory = new SQLSessionFactoryBuilder (). Build (// Stream, "Development"); SQLSessionFactory Factory = new SQLSessionFactoryBuilder () .Build (Stream); sessão = fábrica.opensssion (); } catch (Exceção e) {// TODO: lidar com a exceção e.printStackTrace (); } sessão de retorno; } / * * Obtenha link de acesso ao banco de dados * / public static void Closesession (sessão SQLSession) {session.close (); } /** Retorne a mensagem de registro de operação* / public static void showMessages (tipo crud_enum, int count) {switch (type) {case add: system.out.println ("adicionado" + count + "registro"); quebrar; Excluir casos: System.out.println ("Excluído" + contagem + "registros."); quebrar; Atualização do caso: system.out.println ("atualizado" + contagem + "registros."); quebrar; Consulta de casos: System.out.println ("Matched" + count + "Records."); quebrar; Lista de casos: System.out.println ("Total" + count + "registros."); quebrar; Padrão: quebra; }}}Crie uma nova classe chamada visitante sob o pacote David.mybatis.model para usá -la como o correspondente ou o mapeamento.
pacote David.mybatis.model; importar java.text.simpledateFormat; importar java.util.date; public classe visitante {private int id; nome de string privado; e -mail privado de string; status privado int; data privada createTime; public Visitor () {// TODO Construtor Auto-Gerado Stub CreateTime = new Date (); } visitante público (nome da string, string email) {this.name = name; this.Email = email; this.status = 1; this.createTime = new Date (); } public int getId () {return id; } public void setName (nome da string) {this.name = name; } public string getName () {return name; } public void setEmail (string email) {this.email = email; } public String getEmail () {retornar email; } public data getCreateTime () {return createTime; } @Override public String tostring () {// TODO Método Gerado Auto-Generado Stub Return String.Format ("{Id: %D, Nome: %S, CreateTime: %S}", ID, nome, novo simplificado ("yyyyy-mm-dd hh: mm: ss"). }}Crie um novo VisitorMapper.xml sob o pacote David.mybatis.demo para mapear a instrução SQL correspondente.
Aqui você deve observar que o namespace => David.mybatis.demo.ivisitorOperation deve estar associado ao nome real do arquivo abaixo do pacote correspondente. Caso contrário, o arquivo de mapeamento correspondente não pode ser carregado com sucesso.
<Mapper namespace = "David.mybatis.demo.ivisitorOperation"> <select id = "BasicQuery" ParameterType = "int" resultType = "Visitor"> Selecione * do visitante onde id =#{id} e status> 0 Ordem por id </select> </pper> Em seguida, execute o seguinte programa
public static void testBasicQuery (int id) {SqlSession Session = mybatisutils.getSqlSession (); tente {visitante visitante = (visitante) session.selectone ("David.mybatis.demo.ivisitorOperation.basicQuery", id); Mybatisutils.closesession (sessão); System.out.println (visitante); } Catch (Exceção e) {// TODO: HODE EXCEÇÃO}} O resultado de execução mais simples está fora
Esta é a série Helloword of the Mybatis ~