一、基础搭建
使用IDEA创建一个maven项目,在pom.xml文件下导入以下架包
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.21</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.3</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
<scope>provided</scope>
</dependency>
</dependencies>
lombok的使用:在项目运行时自动生成实体类的get/set方法,以下是相关配置:
1、下载lombok插件
回到项目,在resources文件下创建SqlSessionFactory.xml,为了配置数据库连接驱动以及映射文件
<?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="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://127.0.0.1/mybatis?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!--加载mapper文件-->
<mappers>
<mapper resource="com/xiaohui/mapper/StudentMapper.xml"/>
</mappers>
</configuration>
在src/main/java/文件夹下创建对应数据表的映射实体类:
package com.xiaohui.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @ClassName Student
**/
//自动生成set/get
@Data
//自动生成全类型方法
@AllArgsConstructor
//自动生成空方法
@NoArgsConstructor
public class Student implements Serializable {
private int student_id;
private String student_name;
private int classes_id;
}
创建一个mapper文件StudentMapper.xml,在resources文件夹下逐步创建一个mapper文件的存放地址并把mapper文件放置进去,这里有一个坑,如果直接用new中的创建文件夹时使用xxx.xxx.xxx的形式来创建时,maven项目下是存在问题的,生成的文件夹参考以下图片:
这样生成的文件不在com文件夹中,而是放在xxx.xxx.xxx这个名称的文件夹中,会导致mapper文件读取不到,正确的做法就是逐步往里生成文件夹并放置mapper文件。以下是mapper文件的配置
<?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="aaa">
<select id="stuAll" resultType="com.xiaohui.entity.Student">
select * from students
</select>
</mapper>
二、测试
在Test文件夹中创建一个相同路径的测试文件
package com.xiaohui.test;
import com.xiaohui.entity.Student;
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.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
/**
* @ClassName TestDemo01
* @Author 何辉
* @Date 2021/4/26 14:28
**/
public class TestDemo01 {
private SqlSession sqlSession;
//执行test方法前先执行init方法
@Before
public void init(){
SqlSessionFactoryBuilder sessionFactoryBuilder = new SqlSessionFactoryBuilder();
InputStream inputStream=null;
try {
inputStream = Resources.getResourceAsStream("SqlSessionFactory.xml");
} catch (IOException e) {
e.printStackTrace();
}
SqlSessionFactory sessionFactory = sessionFactoryBuilder.build(inputStream);
sqlSession = sessionFactory.openSession();
}
@Test
public void test01(){
//调用sql语句
List<Student> stuAll = sqlSession.selectList("stuAll");
for (Student stu :stuAll){
System.out.println(stu.toString());
}
}
//执行test方法完毕后释放资源
@After
public void release(){
//关闭sqlSession
sqlSession.close();
}
}
最终结果:
附上文件框架: