O processo básico de implementação do MyBatis

Introdução ao MyBaties

MyBatis é uma excelente estrutura de camada de persistência que oferece suporte a SQL personalizado, procedimentos armazenados e mapeamento avançado.

MyBatis evita quase todo o código JDBC e configuração manual de parâmetros e obtenção de conjuntos de resultados

MyBatis pode usar XML simples ou anotações para configuração e mapeamento original, mapeamento de interfaces e JavaPOJOs (Plain Old Java Objects) em registros no banco de dados

História MyBatis

Originalmente um projeto de código aberto da Apache, iBatis, este projeto foi migrado da Apache Software Foundation para o Google Code em junho de 2010. Quando a equipe de desenvolvimento mudou para o Google Code, o iBatis 3.x foi oficialmente renomeado como MyBatis, e o código foi lançado em novembro 2013

Migre para o endereço de download do Github .

O termo iBatis vem da combinação de "internet" e "abatis", que é uma estrutura de camada de persistência baseada em Java. A estrutura da camada de persistência fornecida pela iBatis inclui Mapas SQL e Objetos de Acesso a Dados (DAO)

Por que usar MyBatis

MyBatis é uma estrutura de camada de persistência semiautomática

• JDBC

JDBC -> Dbutils (QueryRunner) -> JdbcTemplate : 工具

Função simples; a instrução sql é escrita em código java; método de alto acoplamento embutido

 

Hibernate: framework ORM (Object Relation Mapping) de mapeamento completo totalmente automático; visa eliminar sql, HQL

Espero: a instrução sql foi escrita por nossos desenvolvedores e espero que o sql não perca sua flexibilidade;

- SQL está preso em um bloco de código Java, e o alto grau de acoplamento leva a lesões internas codificadas

- Não é fácil de manter e os requisitos reais de desenvolvimento do SQL são alterados. Modificações frequentes são comuns. • Hibernate e JPA

- SQL longo e complexo não é fácil de manusear para o Hibernate

- Não é fácil fazer otimizações especiais para SQL produzidas automaticamente internamente.

- Com base na estrutura totalmente automática de mapeamento completo, é difícil realizar o mapeamento parcial de POJOs com um grande número de campos.

Faz com que o desempenho do banco de dados diminua.

• Para desenvolvedores, o SQL principal ainda precisa ser otimizado por si só

Codificação sql e java separada, limites funcionais claros, um focado em negócios e outro focado em dados

MyBatis-HelloWorld

As principais etapas

HelloWorld Simple Version - Crie uma folha de teste

-Crie o javaBean correspondente

-Crie arquivo de configuração mybatis, arquivo de mapeamento sql

-Teste

Primeiro crie uma tabela de funcionários no banco de dados e insira alguns dados para teste

CREATE TABLE `tbl_employee` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `last_name` varchar(255) DEFAULT NULL,
  `gender` char(1) DEFAULT NULL,
  `email` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

Pacote de guia na ideia

Crie o objeto javaBean correspondente e reescreva o método toString para facilitar a saída subsequente

public class Employee {
    private int id;
    private String last_name;
    private String gender;
    private String email;

    public Employee() {
    }

    public Employee(int id, String laseName, String gender, String email) {
        this.id = id;
        this.last_name = laseName;
        this.gender = gender;
        this.email = email;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getLaseName() {
        return last_name;
    }

    public void setLaseName(String laseName) {
        this.last_name = laseName;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Override
    public String toString() {
        return "Employee{" +
                "id=" + id +
                ", laseName='" + last_name + '\'' +
                ", gender='" + gender + '\'' +
                ", email='" + email + '\'' +
                '}';
    }
}

Interface de criação de mapeador

import school.xauat.mybatis.bean.Employee;

public interface EmployeeMapper {

    public Employee getEmpById(Integer id);
}

Criar arquivo de configuração global MyBatis

- O arquivo de configuração global do MyBatis contém configurações e propriedades que afetam profundamente o comportamento do MyBatis, como informações do pool de conexão do banco de dados. Guie MyBatis para o trabalho. Podemos consultar o exemplo de configuração do documento oficial.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="***"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="EmployeeMapper.xml"/>
    </mappers>
</configuration>

Criar arquivo de mapeamento SQL

- A função do arquivo de mapeamento é equivalente a definir como funciona a classe de implementação da interface Dao. Este também é o documento que mais escrevemos ao usar o MyBatis.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="school.xauat.mybatis.dao.EmployeeMapper">
    <!--
    namespace:名称空间;指定为接口的全类名
    id:唯一标识
    resultType:返回值类型
    #{id}:从传递过来的参数中取出id值
    -->
    <select id="getEmpById" resultType="school.xauat.mybatis.bean.Employee">
        select * from tbl_employee where id = #{id}
    </select>
</mapper>

teste

1. Use SqlSessionFactoryBuilder para criar objetos SqlSessionFactory de acordo com o arquivo de configuração global

/**
     * 获取SqlSessionFactory对象
     * @return
     * @throws IOException
     */
    public static SqlSessionFactory getSqlSessionFactory() throws IOException{
        String resource = "mybatis-config.xml";
        InputStream  inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        return sqlSessionFactory;
    }

2. Use SqlSessionFactory para obter o objeto SqlSession, um objeto SqlSession representa uma sessão com o banco de dados

public static void test01() throws IOException {
        //1、获取SqlSessionFactory对象
        SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
        //2、获取SqlSession对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //3、获取接口的实现类对象
        //会为接口自动创建一个代理对象,代理对象去执行增删改查
        EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);
        Employee employee = mapper.getEmpById(1);
        System.out.println(mapper.getClass());
        System.out.println(employee);
        sqlSession.close();
    }

Chame test01

Nota:

SqlSession

• As instâncias de SqlSession não são thread-safe, portanto, não podem ser compartilhadas.

• SqlSession precisa ser fechado corretamente após cada uso ser concluído, esta operação de fechamento é necessária

• SqlSession pode chamar diretamente o id do método para realizar operações de banco de dados, mas geralmente recomendamos o uso de SqlSession para obter a classe proxy da interface Dao e executar o método de objeto proxy, que pode realizar operações de verificação de tipo com mais segurança

 

Acho que você gosta

Origin blog.csdn.net/qq_45796208/article/details/110506295
Recomendado
Clasificación