package com.yh;

import com.yh.dao.UserMapper;
import com.yh.model.User;
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 org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

/*      1.加载主配置(resource下)
        2.创建sqlSessionFactory  工厂
        3.获取sqlSession对象
        4.获取接口的代理对象( 看成 实现类)
        5.执行方法
        6.释放资源*/

public class MybatisDemo {
    //查询所有表信息
    @Test
    public void findAllTest() throws IOException {
        //加载主配置
        InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");
        //创建SqlSessionFactorBuilder工厂
        SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
//        获取sqlSession对象
        SqlSession sqlSession = build.openSession();
        //获取接口的代理对象
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//        执行方法
        List<User> all = mapper.findAll();
        System.out.println(all);
//        释放资源
        sqlSession.close();
    }
    @Test
    public void findByIdTest() throws IOException {
        //根据Id查询表信息
//        1.加载主配置(resource下)
        InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");
//        2.创建sqlSessionFactory  工厂
        SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
//        3.获取sqlSession对象
        SqlSession sqlSession = build.openSession();
//        4.获取接口的代理对象( 看成 实现类)
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//        5.执行方法
        User findById=mapper.findById(45);
        System.out.println(findById);
//        6.释放资源
        sqlSession.close();
    }
    @Test
    public void deleteById() throws IOException {

//        1.加载主配置(resource下)
        InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");
//        2.创建sqlSessionFactory  工厂
        SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
//        3.获取sqlSession对象
        SqlSession sqlSession = build.openSession();
//        4.获取接口的代理对象( 看成 实现类)
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//        5.执行方法
        int i = mapper.deleteById(48);
        sqlSession.commit(); //手动提交事务
        System.out.println("删除条数"+i);
//        6.释放资源
        sqlSession.close();
    }
}