public class MyBatisTest { @Test public void testInsert() throws IOException { //获取核心配置文件的输入流 InputStream is= Resources.getResourceAsStream("mybatis-config.xml"); //因为mybatis不是JDBC,所以不能把JDBC的工程给写一遍,它封装的JDBC // 所以需要能找到一个执行sql语句的sql对象 SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder(); SqlSessionFactory sqlSessionBuilder= sqlSessionFactoryBuilder.build(is); SqlSession sqlSession=sqlSessionBuilder.openSession(); // sqlSession.getMapper(Class<T> type) T 传进去的是Class对象,返回的是实例对象 /** * 这个方法巧妙的 能够用到接口! 接口不能new ,能帮助我们创建接口的实现类(这个底层用到的是代理模式) * 既然是一个实现类,那么一定帮我们重写了UserMapper接口中的方法 * 原理是通过当前的全类名找到当前的映射文件,在通过当前调用的方法找到映射中的sql语句 并执行,返回结果 */ UserMapper mapper=sqlSession.getMapper(UserMapper.class); //调用mapper接口中的方法实现添加用户信息功能 //update和insert的返回值int是对sql中该sql语句影响的行数,比如你插入一条数据,成功的话sql会提示1行代码收影响,返回的int是1 int result=mapper.insertUser(); System.out.println("结果+"+result); sqlSession.commit(); sqlSession.close(); } }
注意:
你可能遇到没有报错,为什么数据库表没有刷新数据,那么大多是因为你没有执行commit提交事务 sqlSession.commit();
默认是回滚的
当然我们也可以设置自动提交事务;
在这里将autoCommit设置为true即可