MyBatis核心API测试
来源:互联网 发布:arduino 网络模块 编辑:程序博客网 时间:2024/06/14 06:58
@Test
public void testMybatis() throws Exception {
// 读取mybatis-config配置文件
InputStream stream = Resources.getResourceAsStream("mybatis-config.xml");
// 创建SqlSessionFactory对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(stream);
// 创建SqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
// 创建DAO的实现类
UserDAO userDAO = sqlSession.getMapper(UserDAO.class);
// 调用DAO中相关方法
User user = userDAO.selectByID(1);
System.out.println(user);
}
MyBatisUtil工具类的封装
对于MyBatis三种类对象的分析Resources类
特点:读取MyBatis-config配置文件 IO
建议:一次性通过IO读取所有的数据
SqlSessionFactory类
特点:创建SqlSession 重量级的资源 内存占用多 功能多
建议:每一个应用只创建一个 线程安全
SqlSession类
特点:清零及资源 不能被多线程共享
1.创建DAO接口的实现类(动态代理设计思想 动态字节码技术)
2.SqlSession内部封装Connnection 一个SqlSession对应一个Connection
3.事务控制
SqlSession.commit
SqlSession.rollback
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 class mybatisutils {
public static SqlSessionFactory sqlSessionFactory;
public static ThreadLocal<SqlSession> tl = new ThreadLocal<SqlSession>();
/* 静态代码块加载基础信息 */
static {
InputStream stream = null;
try {
// 读取mybatis-config配置文件
stream = Resources.getResourceAsStream("mybatis-config.xml");
// 创建SqlSessionFactory对象
sqlSessionFactory = new SqlSessionFactoryBuilder().build(stream);
} catch (IOException e) {
// TODO: handle exception
e.printStackTrace();
throw new RuntimeException("读取配置文件失败");
} finally { // 关闭流
try {
stream.close();
} catch (Exception e2) {
// TODO: handle exception
e2.printStackTrace();
}
}
}
/* 获取SqlSession对象 */
public static SqlSession opSqlSession() {
SqlSession sqlSession = tl.get();
// 非空判断
if (null == sqlSession) {
sqlSession = sqlSessionFactory.openSession();
tl.set(sqlSession);
}
return sqlSession;
}
/* 关闭SqlSession对象 */
public static void closeSqlSession() {
// 获取SqlSession
SqlSession sqlSession = opSqlSession();
sqlSession.close();
tl.remove();
}
/* 事务提交 */
public static void commit() {
SqlSession sqlSession = opSqlSession();
sqlSession.commit();
closeSqlSession();
}
/* 事务回滚 */
public static void rollback() {
SqlSession sqlSession = opSqlSession();
sqlSession.rollback();
closeSqlSession();
}
/* 获取DAO实现 */
public static Object getMapper(Class clazz) {
SqlSession sqlSession = opSqlSession();
return sqlSession.getMapper(clazz);
}
}
阅读全文
0 0
- MyBatis核心API测试
- Mybatis学习笔记-核心API简介
- 2.mybatis核心API以及创建dao的方式
- 核心API
- mybatis核心配置文件详解
- Mybatis核心杂谈
- mybatis核心配置文件
- Mybatis核心杂谈
- mybatis核心组件
- MyBatis核心配置文件
- mybatis核心讲解
- mybatis核心配置文件
- MyBatis的核心组件
- mybatis核心配置文件示例
- Hibernate3 核心API
- ext核心API详解
- java核心API掌握
- Hibernate核心API(理解)
- Ceph安装指南 Luminous版本
- 在 CentOS 7.2 下安装 Hadoop 2.7.5 并搭建伪分布式环境的方法
- LeetCode刷题 | 735. Asteroid Collision12_16
- javascript返回字符串的所有排列
- 图文详解LinearLayoutManager填充、测量、布局过程
- MyBatis核心API测试
- 并行复制的从库执行FTWRL死锁
- SQL Server 2008 连接字符串
- 词频统计(30 分)(map vector sort)
- LeetCode | 461. Hamming Distance 12_16
- Uninformed search
- 数据结构实验之排序五:归并求逆序数
- 前辈分享的经典语句
- modem-rf代码调用分析,及调试