public class MyBaitsUtil {
//工厂
private static SqlSessionFactory factory;
//线程
private static final ThreadLocal<SqlSession> local= new ThreadLocal<SqlSession>();
static {
try {
//读取配置文件
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
factory = new SqlSessionFactoryBuilder().build(is);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSessionFactory getSqlSessionFactory() {
return factory;
}
//不传参数 或者参数为false 手动提交 传参为true 自动提交
//有参构造
public static SqlSession getSqlSession(boolean isAutoCommit){
//线程里面获取sqlSession
SqlSession sqlSession = local.get();
//如果为空
if (sqlSession==null){
sqlSession = factory.openSession(isAutoCommit);
//只创建一个
local.set(sqlSession);
}
return sqlSession;
}
//无参构造
public static SqlSession getSqlSession(){
return getSqlSession(false);
}
//参数为dao时候---类 通过Mapper获取
public static <T extends Object>T getMapper(Class<T> c){
SqlSession sqlSession = getSqlSession(false);
return sqlSession.getMapper(c);
}
}
2.增加操作(添加用户+用户详情)
@Test
public void testInsertUser(){
SqlSession sqlSession = MyBaitsUtil.getSqlSession();
try {
userDao userDao = sqlSession.getMapper(userDao.class);
DetailDao detailDao = sqlSession.getMapper(DetailDao.class);
User user = new User();
user.setUserId(0);
user.setUserName("zzh");
user.setUserPwd("123456");
user.setUserRealname("张子寒");
user.setUserImg("02.jpg");
//插入数据库
int i = userDao.insertUser(user);
Detail detail = new Detail();
detail.setDetailId(0);
detail.setUserAddr("江西省新余市渝水区");
detail.setUserTel("1237987429");
detail.setUserDesc("晒得很黑");
//将用户表的id添加到用户详情表的id进行关联
detail.setUserId(user.getUserId());
//插入数据库
int insertDetail = detailDao.insertDetail(detail);
System.out.println(user);
System.out.println(detail);
//提交事务
sqlSession.commit();
//期望值
// Assert.assertSame("添加user返回的值",1,i);
// if (i==1){
// System.out.println("添加用户成功");
// }else if (i!=1){
// System.out.println("添加用户失败");
// }
}catch (Exception e){
e.printStackTrace();
//有一个操作失败进行回滚 添加失败
sqlSession.rollback();
}
}