一、mybatis开发中所需对象
1、SqlSessionFactory
通过SqlSessionFactoryBuilder创建会话工厂SqlSessionFactory,创建SqlSession,使用单例模式管理sqlSessionFactory(工厂一旦创建,使用一个实例)
2、SqlSession
SqlSession是线程不安全的,SqlSession最佳应用场合在方法体内,定义成局部变量使用
二、原始dao开发方法(程序员需要写dao接口和dao实现类)
dao需要操作数据库,那么就需要SqlSession对象,其对象是由SqlSessionFactory创建所以需要向dao实现类中注入SqlSessionFactory对象
1、定义接口
public interface UserDao { public User findUserById(int id); }
2、接口实现类
public class UserDaoImpl implements UserDao { //SqlSessionFactory private SqlSessionFactory sessionFactory; //使用构造方法注入 public UserDaoImpl(SqlSessionFactory sessionFactory) { this.sessionFactory=sessionFactory; } public User findUserById(int id) { SqlSession sqlSession=sessionFactory.openSession(); User user=sqlSession.selectOne("findUserById",id); return user; } }
3、配置映射文件
<select id="findUserById" parameterType="int" resultType="com.xxx.mybatis.po.User"> select * from t_user where id = #{id} </select>
4、核心配置文件
<mapper resource="User.xml"/>
5、测试
public class UserDaoImplTest { SqlSessionFactory sqlSessionFactory; @BeforeEach public void setUp() throws Exception { // mybatis核心配置文件 String resource = "SqlMapConfig.xml"; // 核心配置文件流 InputStream inputStream = Resources.getResourceAsStream(resource); // 根据核心配置文件,创建SqlSessionFactory对象 sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } /** * Test method for {@link com.xxx.mybatis.dao.UserDaoImpl#findUserById(int)}. */ @Test public void testFindUserById() { UserDao dao = new UserDaoImpl(sqlSessionFactory); User user = dao.findUserById(2); System.out.println(user); } }
在Junit4下使用@Before和@After,在Junit5下使用@BeforeEach和@AfterEach