Directorio
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
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&useUnicode=true&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.