老师使用注解方式配置jdbcTemplate是不是哪里配置错了

老师使用注解方式配置jdbcTemplate是不是哪里配置错了

我直接使用提供的源码测试查询功能,报空指针异常

打印测试一下,发现jdbcTemplate是null,没有找出错误在哪?

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

老师在课程讲解的方式和同学使用的测试方式类似,但是不全部相同;

老师在测试Test类中通过下面代码:

private JdbcTemplate jdbcTemplate;
{
   ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
   jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate");
}

对JdbcTemplate 进行了初始化;

同学使用的方式没有获取JdbcTemplate 对象;

修改建议:在StudentDaoImpl类中的select方法中获取到JdbcTemplate 对象,然后再对其进行操作

public Student select(int id) {
   ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
   jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate");
   System.out.println(jdbcTemplate);
   String sql = "select * from student where id=?";
   return jdbcTemplate.queryForObject(sql, new StudentRowMapper(), id);
}

测试类中可以接收一下查询结果并打印观察一下:

@org.junit.Test
public void demo1() {
   StudentDao studentDao = new StudentDaoImpl();
   Student student=studentDao.select(1005);
   System.out.println(student);
}

另外:建议同学下次提问时,能够将代码粘贴出来并进行格式化,最好不要截图,不要粘贴在回复中,方便调试你的代码帮助你解答问题。

祝学习愉快!

  • HBwow 提问者 #1
    非常感谢!
    2018-05-23 19:43:39
提问者 HBwow 2018-05-23 12:52:05

http://img1.sycdn.imooc.com//climg/5b04f33f000138dd07950509.jpg

http://img1.sycdn.imooc.com//climg/5b04f33f0001df5505230187.jpg

我在测试类中测试这studentDao中的select方法,打印了jdbcTemplate

但是是null,空指针异常

  • 建议同学将你涉及到的所有代码,粘贴到回答里,不要截图,方便运行你的代码,帮助你解答~
    2018-05-23 13:46:58
  • 提问者 HBwow 回复 一叶知秋519 #2
    @Repository public class StudentDaoImpl implements StudentDao { @Autowired private JdbcTemplate jdbcTemplate; public void insert(Student stu) { String sql = "insert into student(name,sex,born) values(?,?,?)"; jdbcTemplate.update(sql,stu.getName(),stu.getSex(),stu.getBorn()); } public void update(Student stu) { String sql = "update student set name=?,sex=?,born=? where id=?"; jdbcTemplate.update(sql,stu.getName(),stu.getSex(),stu.getBorn(),stu.getId()); } public void delete(int id) { String sql = "delete from student where id=?"; jdbcTemplate.update(sql,id); } public Student select(int id) { System.out.println(jdbcTemplate); String sql = "select * from student where id=?"; return jdbcTemplate.queryForObject(sql,new StudentRowMapper(),id); } public List<Student> selectAll() { String sql = "select * from student"; return jdbcTemplate.query(sql,new StudentRowMapper()); } private class StudentRowMapper implements RowMapper<Student> { public Student mapRow(ResultSet resultSet, int i) throws SQLException { Student stu = new Student(); stu.setId(resultSet.getInt("id")); stu.setName(resultSet.getString("name")); stu.setSex(resultSet.getString("sex")); stu.setBorn(resultSet.getDate("born")); return stu; } } }
    2018-05-23 15:08:17
  • 提问者 HBwow 回复 一叶知秋519 #3
    public class Test2 { @org.junit.Test public void demo1(){ StudentDao studentDao = new StudentDaoImpl(); studentDao.select(1005); } }
    2018-05-23 15:08:45
好帮手慕珊 2018-05-23 10:27:03

你好!老师的代码我们运行了一下,是可以正常运行的。你可以把你的相关代码贴出来,我们运行一下试试。

祝学习愉快!

  • 提问者 HBwow #1
    麻烦看下我上面贴的代码
    2018-05-23 12:52:24
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
SSM主流框架入门与综合项目实战2018版
  • 参与学习           人
  • 提交作业       205    份
  • 解答问题       4317    个

Java中非常实用的SSM整合开发内容,从Spring开始,到MyBaits的进阶内容,再到SpringMVC的应用,最后是SSM整合开发案例,逐步深入,助你成长为一名Java工程师!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师