¿Cómo usar Mybatis para realizar la operación CURD de la base de datos?

Autor | A Wen, Editor en Jefe | Guo Rui

图 | CSDN Descargar de Oriental IC

Exposición | CSDN (ID: CSDNnews)

MyBatis es un excelente marco de capa de persistencia que admite SQL personalizado, procedimientos almacenados y mapeo avanzado. MyBatis elimina casi todo el código JDBC y el trabajo de establecer parámetros y obtener conjuntos de resultados. MyBatis puede configurar y asignar tipos primitivos, interfaces y POJO de Java (Objetos Java sencillos y sencillos) a través de XML simples o anotaciones como registros en la base de datos.

En la implementación tradicional de JDBC, necesitamos escribir el proceso de consulta en la clase java, lo cual es muy inconveniente para un mantenimiento posterior, y Mybatis puede configurar la declaración de consulta en el archivo de configuración, solo necesitamos mantener la relación de mapeo, debajo Veamos cómo Snow usa Mybatis juntos.

Preparación

Primero, debe preparar el siguiente software:

  • idea

  • maven

  • mysql

Crear una base de datos e insertar datos

Primero, creamos una base de datos de mybatis_db, luego creamos una tabla t_user, en esta tabla insertamos algunos datos, de la siguiente manera:

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 pom.xml para descargar el paquete jar

Creamos un proyecto maven y configuramos pom.xml para descargar los paquetes jar de mybatis y mysql-connect-java. La versión actual de mybatis es 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>

El directorio de todo el proyecto es el siguiente:

Configurar mybatis-config

A continuación, creamos un archivo de configuración de mybatis-config.xml en el recurso de idea (si no necesita hacer clic derecho en el src\maindirectorio para crear un directorio, seleccione el recurso al crear), el contenido es el siguiente, el específico no necesita demasiada explicación El archivo de configuración se utiliza principalmente para definir parámetros relacionados con JDBC, incluido el controlador utilizado, la dirección de acceso mysql, el nombre de usuario y la contraseña, y un archivo de mapa que define un mybatis a través de los 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>

Crear clase de usuario

A continuación, creamos la clase Usuario y generamos métodos get y set y toString. En la idea, hacemos clic derecho en el IDE y seleccionamos Generar y luego seleccionamos Getter y Setter y toString () Seleccionar todo para generar rápidamente el get y set correspondiente Método

El resultado final es el siguiente:

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 + '\'' +
                '}';
    }
}

Crear clase de prueba

Configure UserMapper.xml

A continuación, creamos un archivo de mapeo UserMapper.xml y luego necesitamos desarrollar un espacio de nombres que sea UserMapper, y luego escribir una declaración de selección, definir el id y los tipos de parámetros y resultType, resultMap se refiere a describir cómo cargar objetos desde el conjunto de resultados de la base de datos, es el más complejo y el más 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>

Luego creamos una clase de prueba para consultar a los usuarios en función de la identificación:

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();
    }

}

Si queremos hacer consultas difusas, defina en UserMapper.xml:

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

</select>

El uso de like concat ('%', '$ {value}', '%') es para evitar los riesgos de seguridad causados ​​por la inyección de SQL.

Luego cree un nuevo método en la clase de prueba para probar:

  @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 se muestra:

A continuación, agregamos nuevos usuarios bajo prueba. Primero, definimos un elemento de inserción en UserMapper.xml:

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

Luego escriba la interfaz de prueba:

    @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 se muestra a continuación:

A continuación, pruebe la actualización:

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

Luego escribe una clase de prueba:

 @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();

    }

Después de la ejecución de la siguiente manera:

Finalmente, probamos la función de eliminación:

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

Las clases de prueba son las siguientes:

@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();


    }

Los resultados son los siguientes:

【FINAL】

Más recomendaciones interesantes

Tomando el primer lugar en los productos de contenedores de Gartner, ¡Alibaba Cloud gana la batalla clave de cloud native!

El entrevistador de Tencent me preguntó este árbol binario, simplemente soy | El Programa de la Fuerza

☞ Ganando GitHub 2000+ Star, ¿cómo supera la plataforma de aprendizaje automático Alink de código abierto de Alibaba Cloud el doble "juego" de 11 datos? | AI Tecnología Ecología

¿Microsoft adquirió una compañía para una persona? ¡Descifra programas de Sony, escribe novelas de hackers y mira su dura vida de programa!

Plantilla de proyecto de aprendizaje automático: 6 pasos básicos del proyecto ML

☞IBM, Microsoft, Apple, Google, Samsung ... ¡Estos gigantes de la tecnología en la cadena de bloques ya han hecho tantas cosas!

Resumen de programadores senior: te contaré las 6 formas de analizar el proceso de Linux

El bienestar de hoy: si deja un comentario en el área de comentarios, puede obtener un boleto para la transmisión en vivo de la "Conferencia de diez mil desarrolladores de inteligencia artificial de 2020" por un valor de 299 yuanes . Ven y mueve tu dedo y escribe lo que quieres decir.

Haga clic para leer el texto original, ¡maravilloso para continuar!

Cada "observación" que pides, me lo tomo en serio

1945 artículos originales publicados · 40 mil likes + · 18.18 millones de visitas

Supongo que te gusta

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