Crea el primer programa MyBatis

Directorio

Construir mesa

Nuevo proyecto de padre e hijo

El proyecto padre importa el paquete jar

Cree un nuevo archivo de configuración para conectarse a la base de datos

Cree una nueva clase de herramienta Mybatis para obtener sqlsession

Nueva clase de entidad

Nueva interfaz en la capa Dao 

Nuevo archivo mapper.xml

Nueva clase de prueba

Resolución de error: java.lang.ExceptionInInitializerError

Informe y resolución de errores: ibatis.binding.MapperRegistry.getMapper


 

Construir mesa

 

Primero construimos una base de datos y una tabla de usuario, insertamos datos

 

 

Nuevo proyecto de padre e hijo

 

La estructura es la siguiente

 

 

El proyecto padre importa el paquete jar

 

No hay nada que decir sobre la importación de paquetes jar. Tenga en cuenta que las dos últimas etiquetas <filter> deben ser falsas, lo que en realidad es muy fácil de entender. No dejo que Maven filtre la ruta del archivo que configuré, así que establezca false

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.lt</groupId>
    <artifactId>Mybatis-Study</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>Mybatis-01</module>
    </modules>

    <!--导入依赖-->
    <dependencies>
        <!--mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
        <!--mybatis-->
        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.2</version>
        </dependency>
        <!--junit-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>

    <!--在build中配置resources,防止配置文件编译时失败-->
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>
</project>

 

Cree un nuevo archivo de configuración para conectarse a la base de datos

 

Este es el archivo de configuración mybatis-config.xml del proyecto. No escriba el nombre de usuario y contraseña incorrectos de la base de datos.

<?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核心配置文件-->
<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?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="com/lt/dao/UserMapper.xml"/>
    </mappers>
</configuration>

Presta atención a nuestra etiqueta <mapper>, donde registré el archivo UserMapper.xml en mybatis. Pero si hay varios archivos xml, puede usar comodines

<mapper resource="com/lt/dao/*Mapper.xml"/>

 

 

Cree una nueva clase de herramienta Mybatis para obtener sqlsession

 

El uso de mybatis necesita pasar SqlSessionFactoryBuilder ===》 SqlSessionFactory ==》 SqlSession.

De hecho, es SqlSession lo que nos ayuda a agregar, eliminar y modificar datos. El propósito de la clase de herramienta es crear un nuevo objeto SqlSession.

package com.lt.utils;

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 java.io.IOException;
import java.io.InputStream;

//sqlSessionFactory --> sqlSession
public class MybatisUtils {

    private static SqlSessionFactory sqlSessionFactory;

    static{
        try {
            //使用Mybatis第一步:获取sqlSessionFactory对象
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    //既然有了 SqlSessionFactory,顾名思义,我们就可以从中获得 SqlSession 的实例了。
    // SqlSession 完全包含了面向数据库执行 SQL 命令所需的所有方法。
    public static SqlSession getSqlSession(){
        return sqlSessionFactory.openSession();
    }

}

 

 

Nueva clase de entidad

 

package com.lt.pojo;

public class User {
    private int id;
    private String name;
    private String pwd;

    public User() {
    }

    public User(int id, String name, String pwd) {
        this.id = id;
        this.name = name;
        this.pwd = pwd;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public String getPwd() {
        return pwd;
    }

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

    public void setName(String name) {
        this.name = name;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", pwd='" + pwd + '\'' +
                '}';
    }
}

 

 

Nueva interfaz en la capa Dao 

 

public interface UserDao {
    List<User> getUserList();
}

 

 

Nuevo archivo mapper.xml

 

Para escribir sentencias SQL 

<?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">
<!--namespace=绑定一个对应的Dao/Mapper接口-->
<mapper namespace="com.lt.dao.UserDao">

    <!--select查询语句-->
    <select id="getUserList" resultType="com.lt.pojo.User">
       select * from mybatis.user
   </select>

</mapper>

 

Nueva clase de prueba

 

package com.lt.dao;

import com.lt.pojo.User;
import com.lt.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

public class UserDaoTest {
    @Test
    public void test(){
        //第一步:获得SqlSession对象
        SqlSession sqlSession = MybatisUtils.getSqlSession();


        //方式一:getMapper
        UserDao userDao = sqlSession.getMapper(UserDao.class);
        List<User> userList = userDao.getUserList();

        for (User user : userList) {
            System.out.println(user);
        }



        //关闭SqlSession
        sqlSession.close();
    }
}

 

 

Resolución de error: java.lang.ExceptionInInitializerError

 

Si solo importa dependencias en el archivo pom, recibirá un error si no agrega una etiqueta de compilación al final. La razón es que maven no compilará archivos xml personalizados de forma predeterminada cuando se compila el programa. Por lo tanto, debe configurarlo en la etiqueta <build> para compilar esta parte del archivo xml

 

 

Informe y resolución de errores: ibatis.binding.MapperRegistry.getMapper

 

¿Qué significa esto? 

Este error significa que, siempre que use el archivo mabtis configurado, debe registrar el archivo mybatis en el archivo de configuración de todo el proyecto.

 

568 artículos originales publicados · Me gusta 180 · Visitas 180,000+

Supongo que te gusta

Origin blog.csdn.net/Delicious_Life/article/details/105627664
Recomendado
Clasificación