-
封装MybatisUtil实体类
因为每次在书写实体类的时候,都要进行加载核心配置文件,获取Session工厂,获取session等重复性操作,不妨将其封装通过调用静态方法来达到相同目的。
1. 书写MybatisUtil.java
package com.shxt.util;
import java.io.IOException;
import java.io.InputStream;
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 final class MybatisUtil {
private MybatisUtil() {}
private static final String PATH="mybatis-config.xml";
private static InputStream is = null;
private static SqlSessionFactory sqlSessionFactory = null;
static {
try {
//加载核心配置文件
is = Resources.getResourceAsStream(PATH);
//创建sqlsession工厂 -->相当于connection
sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("加载映射文件失败可能是你映射文件写错了,原因:"+e.getMessage());
}
}
//获取session -->相当于执行sql语句对象
public static SqlSession getSqlSession() {
return sqlSessionFactory.openSession();
}
public static void closeSqlSession(SqlSession sqlSession) {
if(sqlSession!=null) {
sqlSession.close();
}
}
}
2.书写测试类
package com.shxt.test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Map;
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 com.shxt.util.MybatisUtil;
public class MybatisTest {
public static void main(String[] args) {
SqlSession sqlSession = null;
try {
sqlSession = MybatisUtil.getSqlSession();
//执行sql
User user = sqlSession.selectOne("com.shxt.model.User.load",1);
System.out.println(user);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
sqlSession.close();
}
}
}
注:创建sqlsession工厂是利用了接口回调。接口声明,实现类实例化的对象叫做接口回调。