简单介绍:
在我们之前编写代码的时候,每次创建新的测试类都需要手动的编写获取SqlSession类的代码语句,这些重复的代码可以抽取成为一个工具类中的方法,可以方便快捷的进行代码的开发,提高我们的效率
使用方法:
使用方法非常简单,就是将重复的获取对象的方法抽取出来封装进一个类的方法中,可以直接获取连接对象。
代码实现:
在我们的com.mybatis.POJO包下面创建一个Tools工具包,在这个包里面创建一个createSqlSession类,我们创建对象的语句就写在这个类的方法中:
package com.mybatis.POJO.Tools;
import Mappers.select;
import org.apache.ibatis.annotations.Mapper;
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;
public class createSqlSession {
// 获取SqlSession对象
public SqlSession create(){
try {
InputStream stream = Resources.getResourceAsStream("mybatis.xml");
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(stream);
// 在获取SqlSession对象的时候,传递一个true
return build.openSession(true);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
// 在接口化开发中获取接口对应的mapper代理对象,使用方法直接操作数据库
public select createMapper(){
SqlSession session = new createSqlSession().create();
return session.getMapper(select.class);
}
}
需要注意的是在我们使用openSession创建SqlSession对象的时候可以传入一个true的参数,表示将自动提交事务,在使用的时候就不需要我们手动提交事务了。
开始测试:
我们使用insert语句和delete语句进行测试,测试插入和删除一条记录时候的效果:
package Mappers;
import com.mybatis.POJO.Tools.createSqlSession;
import com.mybatis.POJO.student;
import org.apache.ibatis.session.SqlSession;
import java.util.List;
public class Test {
// 将需要用到的两个对象提取出来,方式重复创建对象
SqlSession session = null;
select mapper = null;
@org.junit.Test
public void insertOne(){
// 使用刚才封装的工具类获取session对象
session = new createSqlSession().create();
// 插入一条数据
student s = new student(4,"赵六","123456");
int insert = session.insert("Mappers.select.insertInto",s);
if(insert > 0){
System.out.println("插入成功!");
System.out.println("展示数据:");
List<student> list = session.selectList("Mappers.select.selectAll");
for(student stu : list){
System.out.println(stu.toString());
}
}else {
System.out.println("插入失败");
}
}
@org.junit.Test
// 测试删除语句的时候使用接口化开发的方式
public void deleteOne(){
// 获取映射文件对应的接口文件,通过调用接口中的方法可以直接操作SQL映射文件中的唯一标识与接口中的方法同名的SQL语句
mapper = new createSqlSession().createMapper();
int i = mapper.deleteOne(4);
if(i > 0){
System.out.println("删除成功!");
System.out.println("展示数据:");
for (student student : mapper.selectAll()) {
System.out.println(student.toString());
}
}else {
System.out.println("删除失败!");
}
}
}
运行结果:
封装工具类的意义就是帮助我们完成一些重复的代码,将一些复杂的代码封装起来,让我们无需关心其中的具体实现,而是只需要知道输入何种参数达到何种效果即可