Como usar o Mybatis para realizar a operação CURD do banco de dados?

Autor | A Wen, Editor-Chefe | Guo Rui

Cabeça Figura | baixar CSDN do Leste IC

Exposição | CSDN (ID: CSDNnews)

MyBatis é uma excelente estrutura de camada de persistência que suporta SQL personalizado, procedimentos armazenados e mapeamento avançado. O MyBatis elimina quase todo o código JDBC e o trabalho de definir parâmetros e obter conjuntos de resultados. O MyBatis pode configurar e mapear tipos primitivos, interfaces e POJOs Java (Plain Old Java Objects) por meio de XML simples ou anotações como registros no banco de dados.

Na implementação tradicional do JDBC, precisamos escrever o processo de consulta na classe java, o que é muito inconveniente para manutenção posterior, e o Mybatis pode configurar a instrução de consulta no arquivo de configuração, basta manter o relacionamento de mapeamento, abaixo de nós Vamos ver como Snow usa Mybatis juntos.

Preparação

Primeiro, você precisa preparar o seguinte software:

  • idéia

  • maven

  • mysql

Crie um banco de dados e insira dados

Primeiro, criamos um banco de dados mybatis_db e, em seguida, criamos uma tabela t_user. Nesta tabela, inserimos alguns dados, da seguinte forma:

mysql> create database mybatis_db;
Query OK, 1 row affected (0.01 sec)

mysql> use mybatis_db;
Database changed
mysql> create table t_user(
    -> id int(32) primary key auto_increment,
    -> username varchar(50),
    -> jobs varchar(50),
    -> phone varchar(16));
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> insert into t_user values(1,"zhangsan","teacher","13142767333");
Query OK, 1 row affected (0.01 sec)

mysql> insert into t_user values(2,"lisi","engineer","13142767334");
Query OK, 1 row affected (0.01 sec)

mysql> insert into t_user values(3,"wangwu","pilot","12342767334");
Query OK, 1 row affected (0.00 sec)

mysql>

Configure o pom.xml para baixar o pacote jar

Criamos um projeto maven e configuramos o pom.xml para baixar os pacotes jar do mybatis e mysql-connect-java.A versão atual do mybatis é 3.5.4.

 <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.4</version>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.19</version>
    </dependency>

O diretório de todo o projeto é o seguinte:

Configurar mybatis-config

Em seguida, criamos um arquivo de configuração mybatis-config.xml no recurso da ideia (se você não precisar clicar com o botão direito do mouse no src\maindiretório para criar um diretório, selecione o recurso ao criar), o conteúdo é o seguinte, o específico não precisa de muita explicação O arquivo de configuração é usado principalmente para definir parâmetros relacionados ao JDBC, incluindo o driver usado, endereço de acesso mysql, nome de usuário e senha e um arquivo de mapa que define um mibatis através de mapeadores.

<?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="mysql">
        <environment id="mysql">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://192.168.10.128:3306/mybatis_db" />
                <property name="username" value="root" />
                <property name="password" value="123456" />
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="UserMapper.xml" />
    </mappers>
</configuration>

Criar classe de usuário

Em seguida, criamos a classe User e geramos os métodos get e set e toString.Na ideia, clicamos com o botão direito do mouse no IDE e selecionamos Generate e, em seguida, Getter and Setter e toString () Select all para gerar rapidamente o get e set correspondente Método

O resultado final é o seguinte:

package com.mybatis;

public class User {
    private Integer id;
    private String username;
    private String jobs;
    private String phone;

    public Integer getId() {
        return id;
    }

    public String getUsername() {
        return username;
    }

    public String getJobs() {
        return jobs;
    }

    public String getPhone() {
        return phone;
    }

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

    public void setUsername(String username) {
        this.username = username;
    }

    public void setJobs(String jobs) {
        this.jobs = jobs;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", jobs='" + jobs + '\'' +
                ", phone='" + phone + '\'' +
                '}';
    }
}

Criar classe de teste

Configurar UserMapper.xml

Em seguida, criamos um arquivo de mapeamento UserMapper.xml e, em seguida, precisamos desenvolver um espaço para nome é UserMapper e, em seguida, escrevemos uma instrução select, definimos os tipos de ID e parâmetro e resultType, resultMap refere-se à descrição de como carregar objetos do conjunto de resultados do banco de dados, é o mais complexo e Elementos poderosos.

<?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="UserMapper">
    <!--根据用户编号获取用户信息 -->
    <select id="findUserById" parameterType="Integer" resultType="com.mybatis.User">
        select * from t_user where id=#{id}
    </select>
</mapper>

Em seguida, criamos uma classe de teste para consultar usuários com base no id:

package com.mybatis;

import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.jupiter.api.Test;

/**
 * @Auth: xxxx
 * @E-mail: xxx
 * @title: MybatisTest
 * @projectName: mybatis
 * @description: TODO 描述信息
 * @Date 2020/4/7 9:15 下午
 **/
public class MybatisTest {

    @Test
    public void findUserByIdTest() throws Exception {
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        User user = sqlSession.selectOne("findUserById", 1);
        System.out.println(user.toString());
        sqlSession.close();
    }

}

Se quisermos fazer consultas difusas, defina em UserMapper.xml:

<select id="findUserByName" parameterType="String" resultType="com.mybatisdemo.User">
        select * from t_user where username like concat('%','${value}','%')

</select>

O uso de concat como ('%', '$ {value}', '%') é para evitar os riscos à segurança causados ​​pela injeção de SQL.

Em seguida, crie um novo método na classe de teste para testar:

  @Test
    public void findUserByNameTest() throws  Exception {
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        List<User> users = sqlSession.selectList("findUserByName","g");
        for (User user:users){
            System.out.println(user.toString());
        }
        sqlSession.close();
        }

Como mostrado:

Em seguida, adicionamos novos usuários em teste.Primeiro, definimos um elemento de inserção no UserMapper.xml:

<insert id="addUser" parameterType="com.mybatisdemo.User" >
       insert into t_user(username,jobs,phone) value (#{username},#{jobs},#{phone})
</insert>

Em seguida, escreva a interface de teste:

    @Test
    public void addUser() throws Exception {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            SqlSession sqlSession = sqlSessionFactory.openSession();
            User user = new User();
            user.setUsername("beiluo");
            user.setJobs("DevOps");
            user.setPhone("1314566666");
            int rows = sqlSession.insert("addUser",user);
            if (rows >0){
                System.out.println("Success add "+ rows +"data!");
            }else{
                System.out.println("add data fail!");
            }
            sqlSession.commit();
            sqlSession.close();

        }

Como mostrado abaixo:

Em seguida, teste a atualização:

 <update id="updateUserInfo" parameterType="com.mybatisdemo.User">
        update t_user set username=#{username},jobs=#{jobs},phone=#{phone} where id =#{id}
</update>

Em seguida, escreva uma classe de teste:

 @Test

    public void updateUserinfo() throws  Exception {

        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        User user = new User();
        user.setId(1);
        user.setUsername("jike");
        user.setJobs("qa");
        user.setPhone("13142764432");
        int rows = sqlSession.update("updateUserInfo",user);
        if (rows >0){
            System.out.println("Success update "+ rows +" data!");
        }else{
            System.out.println("update data fail!");
        }
        sqlSession.commit();
        sqlSession.close();

    }

Após a execução, da seguinte maneira:

Finalmente, testamos a função de exclusão:

 <delete id="deleteUser" parameterType="com.mybatisdemo.User" >
        delete from t_user where id=#{id}
</delete>

As classes de teste são as seguintes:

@Test
    public void deleteUser() throws Exception {

        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();
        int rows = sqlSession.delete("deleteUser",1);
        if (rows >0){
            System.out.println("Success delete "+ rows +" data!");
        }else{
            System.out.println("delete data fail!");
        }
        sqlSession.commit();
        sqlSession.close();


    }

Os resultados são os seguintes:

【FIM】

Recomendações mais interessantes

Em primeiro lugar nos contêineres do Gartner, o Alibaba Cloud vence a principal batalha dos nativos da nuvem!

O entrevistador da Tencent me perguntou essa árvore binária, por acaso eu sou | The Force Program

☞Vencendo o GitHub 2000+ Star, como a plataforma de aprendizado de máquina de código aberto Alink da Alibaba Cloud supera o duplo "jogo" de 11 dados? Ecologia da tecnologia da IA

Ic A Microsoft adquiriu uma empresa para uma pessoa? Crack programas da Sony, escreva romances de hackers e assista a sua dura vida no programa!

Modelo de projeto de aprendizado de máquina: 6 etapas básicas do projeto de ML

IBM, Microsoft, Apple, Google, Samsung ... Esses gigantes da tecnologia no blockchain já fizeram tantas coisas!

Resumo dos programadores seniores: vou lhe contar todas as 6 maneiras de analisar o processo Linux

Bem-estar de hoje: se você deixar um comentário na área de comentários, poderá obter um ingresso para a transmissão ao vivo da "Conferência dos Dez Mil Desenvolvedores da IA ​​2020" no valor de 299 yuan . Venha e mova seu dedo e escreva o que você quer dizer.

Clique para ler o texto original, maravilhoso para continuar!

Todo "assistindo" você pede, eu levo isso a sério

1945 artigos originais publicados · 40 mil curtidas + · 18,18 milhões de visualizações

Acho que você gosta

Origin blog.csdn.net/csdnnews/article/details/105445743
Recomendado
Clasificación