报错是因为没有加@Test
selectUser 方法没有使用 @Test 注解,因此如果它是作为单元测试方法的话,它不会被测试框架(如JUnit)识别和执行。
成功。
这个里面的代码:
package com.zhang.mybatis.sy3;
import java.io.IOException;
import java.io.Reader;
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 com.zhang.mybatis.sy1.User;
import com.zhang.mybatis.util.mybatisUtil;
public class testUser {
/*public static void main(String[] args) throws IOException {
String resource = "conf.xml";
//加载 mybatis 的配置文件(它也加载关联的映射文件)
Reader reader = Resources.getResourceAsReader(resource); //resource = conf.xml 上一行
//构建 sqlSession 的工厂
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
//创建能执行映射文件中 sql 的 sqlSession
SqlSession session = sessionFactory.openSession();
//映射 sql 的标识字符串
User u = session.selectOne("com.zhang.mybatis.sy3.userMapper"+".selectUser", 3);
System.out.println(u);
}
*/
@Test
public void selectUser() throws IOException{
/* String resource = "conf.xml";
//加载 mybatis 的配置文件(它也加载关联的映射文件)
Reader reader = Resources.getResourceAsReader(resource); //resource = conf.xml 上一行
//构建 sqlSession 的工厂
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
//创建能执行映射文件中 sql 的 sqlSession
SqlSession session = sessionFactory.openSession();
//映射 sql 的标识字符串
*/
SqlSession session = mybatisUtil.getSqlSession();
User u = session.selectOne("com.zhang.mybatis.sy3.userMapper"+".selectUser", 3);
System.out.println(u);
}
//使用单元测试方法
@Test
public void testInsertUser() throws IOException{
SqlSession session = mybatisUtil.getSqlSession();
String s = "com.zhang.mybatis.sy3.userMapper"+".insertUser";
//这里体现封装性
User u = new User();
u.setName("zhangsan");
u.setAge(20);
//或者在User.calss中,写一个有参构造方法
//如果我写了这个有参构造方法,
/*public User(String name,int age){
this.name = name;
this.age = age;
}*/
//此时删除 u.setName("zhangsan");
// u.setAge(20);
//这两行代码也可以,就是说这是两个方法
int insert = session.insert(s,u);//返回值0失败1成功
//这里,运行发现数据库没有添加进去数据,原因是默认是手动添加的,因此需要修改代码,添加下面的一行,
//或者SqlSession session = sessionFactory.openSession(ture); 添加ture
session.commit();
System.out.println(insert);
}
//更新
@Test
public void updateUser() throws IOException{
SqlSession session = mybatisUtil.getSqlSession();
session.commit();
String s = "com.zhang.mybatis.sy3.userMapper"+".updateUser";
int u = session.update(s, new User(1,"xiaoxiao",18));//不知道为什么接收值是int!!!!!!,可能是因为这个方法提醒的就是返回值是int
System.out.println(u);
}
}