1、首先在最初的pro.xml加入build块可以让文件读取xml文件的路径而不会出错。
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
2、 随后建立一个resources文件,这里建议将所有的XML文件都放在这里面会节省很多因为路径产生的错误。
创建第一个mybatis-config.xml文件内容如下,这里有一些中文注释的错误可以修改编码方式,其次由于版本问题我的版本是2021的版本,需要将UTF-8改为UTF8,里面的value便是你连接数据库后的名字,不要忘记加上自己的数据库名,名字的由来便是第二张图所示的内容,在正常链接数据库后便会出现。随后便是我们需要的账号密码这些都是自己设置的需要自行修改,下面的mapper内容是下面我们需要自己配置的XML文件,用来连接数据库,接下来将进行配置,否则将会出现一些错误。
<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-config.dtd">
<!--Core documents-->
<configuration>
<!--default environments-->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTime=GMT"/>
<property name="username" value="root"/>
<property name="password" value="990816"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/xie/dao/UserMapper.xml"/>
</mappers>
</configuration>
3、获取SQL工具类,这里我们根据Mybatis文档创建工具类,注意不要命名两次sqlSessionFactory 否则将会出现空指针的错误,最好将路径放在.util包下方便观测
//工具类 sqlSessionFactory --> sqlSession
public class MybatisUtils {
//提升属性的作用域
private static SqlSessionFactory sqlSessionFactory;
static{
//获取sqlSessionFactory工具类
try {
InputStream inputStream = null;
String resource = "mybatis-config.xml";
inputStream = Resources.getResourceAsStream(resource);
//空指针异常的可以去掉这个
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public static SqlSession getSqlSession(){
// SqlSession sqlSession = sqlSessionFactory.openSession();
// return sqlSession;
return sqlSessionFactory.openSession();
}
}
4、创建一个User类用来读取数据库的元素,这里要求里面的元素要和数据库的元素一一对应否则将出现一些错误。这里在创建GET SET方法的时候比较负责 我们可以使用快捷键alt+insert来快速选中创建,其次我们在读取数据库的时候要重写toString方法可以直接利用快捷键进行创建。
package com.xie.pojo;
public class User {
//要和数据库名字相匹配才可以
private int id;
private String name;
private String pwd;
//alt+insert 可以快速插入构造、GET SET 方法
public User(){
}
public User(int id, String name, String pwd) {
this.id = id;
this.name = name;
this.pwd = 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;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public String getPwd() {
return pwd;
}
//重写方法
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", pwd='" + pwd + '\'' +
'}';
}
}
5、随后我们需要创建一个接口对象用来读取数据(interface)
package com.xie.dao;
import com.xie.pojo.User;
import java.util.List;
//等价于mapper 一定创建的是一个接口
public interface UseDao {
List<User> getUserList();
}
6、利用接口读取数据,这里我们需要修改的是namespace 这个就是上面的接口对象,其次把ID设置为方法,然后写一个Select语句 查询数据库的名字,命名方式为数据库加上表名,作为一个查找工具。
<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xie.dao.UseDao">
<select id="getUserList" resultType="com.xie.pojo.User">
select * from mybatis.user1
</select>
</mapper>
7、最后我们测试一下我们的成果
package com.xie.dao;
import com.xie.pojo.User;
import com.xie.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
public class UseDaoTest {
@Test
public void test(){
//第一步获得sqlSession对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
//方式一 执行sql 通过接口的Class对象获得相应的接口
UseDao userDao = sqlSession.getMapper(UseDao.class);
//快速生成对象 ctrl+alt+v
List<User> userList = userDao.getUserList();
for (User user : userList) {
System.out.println(user);
}
//关闭
sqlSession.close();
}
}
8、大功告成 最后附上我们的成功截图和库的位置