发表于: 2016-11-09 00:42:37

2 2195


一遇到的问题

 搞了3个小时没有解决。一点啦回去睡觉啦 呜呜 失败啦

 

 

public class testStudent {

/***

  * 获得MyBatis SqlSessionFactory

  * SqlSessionFactory 负责创建SqlSession ,一旦创建成功,就可以用SqlSession实例来执行映射语句

  * @return

  */

public static SqlSessionFactory getSqlSessionFactory(){

SqlSessionFactory sessionFactory=null;

   String resource="com/wangsx/ITtask1/Configuration.xml";

    try {

     sessionFactory=new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader(resource));

   } catch (IOException e) {

     e.printStackTrace();

   }

    return sessionFactory;

}

@Test

public void getStudentById() {

SqlSession session = getSqlSessionFactory().openSession();

try{

StudentOperation studentOperation = session.getMapper(StudentOperation.class);

Student student = studentOperation.selectStudentById(1);

System.out.println(student.getId());

}

catch (Exception e) {

     e.printStackTrace();

} finally{

     session.close();

}

}

    

     @Test

public void addStudent() {

Student student = new Student();

student.setAge(11);

student.setCreateAt(new Date());

student.setName("wangjing1");

student.setProfession("z");

student.setUpdateAt(new Date());

SqlSession session = getSqlSessionFactory().openSession();

try{

//参数:映射文件的命名空间+sql语句id

StudentOperation studentOperation = session.getMapper(StudentOperation.class);

studentOperation.addStudent(student);

session.commit();

System.out.println(student.getName());

}

catch (Exception e) {

     e.printStackTrace();

} finally{

     session.close();

}

}

}

报错:上述addStudent能添加记录,而getStudentById报下面的错误:

java.lang.NullPointerException

at com.wangsx.ITtask1.testStudent.getStudentById(testStudent.java:34)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)

at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)

at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)

at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)

at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)

at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)

at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)

at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)

at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)

at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)

at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)

at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)

at org.junit.runners.ParentRunner.run(ParentRunner.java:363)

at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)

at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)


求解......

此问题已解决。花了将近六个小时的时间。哎 丢人啊。

原因:我的Student类定义的属性与数据库字段名字不同  而我的StudentMapper中返回类型为resultType而不是用的resultMap

收获:感谢修真院的小兄弟帮我看代码,第一次真正搞MyBatis。

  小兄弟提醒我一下:

  1.了解原始开发 代理开发 注解开发

  2.任务二用注解开发

  3.今天没有时间啦,马会有其它的事情。

今天把任务一整理完,争取放到Git上面,明天全面开发任务二


返回列表 返回列表
评论

    分享到