MyBatis笔记(四)

1.使用工具类创建SqlSession:
在前面的学习中,每个方法执行时都需要读取配置文件,并根据配置文件的信息构建SqlSessionFactory对象,然后再创建SqlSession对象,这导致了大量的重复代码,为简化开发,可将上述重复代码封装到一个工具类,然后通过工具类来创建SqlSession。

package com.webtest.utils;
import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
/**
 * 工具类
 * */
public class MybatisUtils {
	private static SqlSessionFactory sqlSessionFactory = null; //初始化sqlSessionFactory对象
	static{
		try{
			Reader reader = Resources.getResourceAsReader("mybatis-config.xml");  //使用mybatis提供的resources类加载mybatis的配置文件
			sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);    //构建sqlSessionFactory工厂
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	
	public static SqlSession getSession(){         //获取sqlSession对象的静态方法
		return sqlSessionFactory.openSession();
	}

}

这样,我们在使用时就只创建了一个SqlSession对象,并且可以通过工具类的getSession()方法,来获取SqlSession对象。

2.使用工具类的方法来删除客户

MyBatis的删除操作在映射文件中是通过配置 元素来实现的。在映射文件CustomerMapper.xml中添加删除客户的SQL语句,代码如下:

	       
	    
	        delete from t_customer where id=#{id}
	    

测试删除操作的配置比较简单,只需使用SqlSession对象的delete()方法传入需要删除数据的id值即可。在测试类MyBatisTest中,添加测试方法deleteCustomerTest(),该方法用于将id为4的客户信息删除。

@Test
	public void deleteCustomerTest() throws Exception{
		
		SqlSession sqlSession = MybatisUtils.getSession();//1.通过工具类创建SqlSession
		int rows = sqlSession.delete("com.webtest.mapper.CustomerMapper.deleteCustomer",3); //2.执行SqlSession的删除方法,返回的是SQL语句影响的行数
		if(rows>0){
			System.out.println("您成功删除了"+rows+"条数据!");
		}
		else{
			System.out.println("执行删除操作失败!!!");
		}
		sqlSession.commit();	 //3.提交事务
		sqlSession.close();     //4.关闭SqlSession
	}

使用JUnit4 执行deleteCustomerTest()方法后,控制台输出结果:
MyBatis笔记(四)_第1张图片

此时,再次查看t_customer中的信息时,发现使用MyBatis框架已近成功删除了id为3的客户信息。

MyBatis笔记(四)_第2张图片

你可能感兴趣的:(MyBatis笔记(四))