第四章 Spring的数据库开发

 

4.2 Spring JdbcTemplate的常用方法

在JdbcTemplate类中,提供了:大量的更新和查询数据库的方法,我们就是使用这些方法来操作数据库的。

 

4.2.1 execute()

execute(Sring sql)方法能够完成执行SQL语句的功能。下面以创建数据表的SQL语句为例,来演示此方法的使用,具体步骤如下。

  1. 在MySQL中,创建一个名为sping的数据库,创建方式如图所示:

在该图中,首先使用SQL语句创建了数据库spring,然后选择使用spring。为了便于后续验证数据表是通过execute ( String sql )方法执行创建的,这里使用了show tables语句查看数据库中的表,其结果显示为空。

 

  1. 在Eclipse中,创建一个名为chapter04的Web项目,将运行Spring框架所需的5个基础JAR包、MySQL 数据库的驱动JAR包、Spring JDBC的JAR包以及Spring事务处理的JAR包复制到项目的lib目录,并发布到类路径中。项目中所添加的JAR包如图所示。

 

  1. 在src目录下,创建配置文件applicationContext.xml,在该文件中配置id为dataSource的数据源Bean和id为jdbcTemplate的JDBC模板Bean,并将数据源注入到JDBC模板中。

 

  1. 在src目录下,创建一个com.itheima.jdbc包,在该包中创建测试类JdbcTemplateTest。在该类的main()方法中通过Spring容器获取在配置文件中定义的JdbcTemplate实例,然后使用该实例的execute(String sql)方法执行创建数据表的SQL语句,如图所示:

 

成功运行程序后,再次查询spring数据库,其结果如图所示:

从图中可以看出,程序使用execute (String sql )方法执行的SQL语句已成功创建了数据表account.。

 

 

 

使用JUnit测试

在软件开发过程中,需要有相应的测试工作。依据测试目的不同,可以将软件测试分为单元测试、集成测试、确认测试和系统测试等,其中单元测试在软件开发阶段是最底层的测试,它易于及时发现并解决问题。

将JdbcTemplateTest文件中的main()方法,修改成名称为mainTest()的普通方法,并在方法上添加单元测试的注解@Test,其代码如下所示:

@Test就是Junit4用于测试的注解,要测试哪个方法,只需要在相应测试的方法上添加此注解即可。

单击Junit Test选项后,Eclipse中会多出一个名为JUnit 的视图窗口,其显示结果如图所示:

 

在该图中,JUnit 的视图窗口的进度条为绿色表明运行结果正确,如果进度条为红色表示有错误,并且会在窗口中显示所报的错误信息。

 

需要注意的是,在运行此方法的时,需要先将数据库中已创建好的account表删除,否则执行的时候会报出account表以及存在的错误。

测试通过后,Console控制台的输出结果:

从图中可以看出,mainTest()方法已经执行成功。

 

 

 

4.2.2 update()

update()方法可以完成插入、更新和删除数据的操作。

  1. 在chapter04项目的com.itheima.jdbc包中,创建Account类,在该类中定义id、username和balance属性,以及其对应的getter/setter方法。

 

  1. 在com.itheima.jdbc包中,创建接口AccountDao,并在接口中定义添加、更新和删除账户的方法,如图所示:

 

  1. 在com.itheima.jdbc包中,创建AccountDao接口的实现类AccountDaoImpl(),并在类中实现添加、更新和删除账户的方法。

三种方法的实现步骤类似,只是定义的SQL语句有所不同。

 

  1. 在applicationContext.xml文件中,定义一个Id为accountDao的Bean,该Bean用于将jdbcTemplate注入到accountDao中,代码如图所示:

 

  1. 在测试类JdbcTemplateTest中,添加一个测试方法addAccountTest(),该方法主要用于添加用户账户信息,代码如图所示:

 

 

在上述代码中,获取了AccontDao的实例后,又创建了Account对象,并向Account对象中添加了属性值。然后调用了AccountDao对象的addAccount()方法向数据表中添加一条数据。最后,通过返回的受影响的行数来判断数据是否插入成功。使用Junit4测试运行后,控制台的输出结果如图所示:

 

此时再次查询数据库中的account表,其结果如图所示:

从图中可以看出,使用JdbcTemplate的update()方法已成功地向数据表中插入了一条数据。

 

  1. 执行完插入操作后,接下来使用JdbcTemplate类的update()方法执行更新操作。在测试类JdbcTemplateTest中,添加一个测试方法updateAccountTest(),代码如图所示:

 

与addAccountTest()方法相比,更新操作的代码增加了id属性值的设置,并将余额修改2000后,调用了AccountDao对象中的updateAccount()方法执行对数据表的更新操作。

使用Junit4运行方法后,再次查询数据库中的account表,其结果如图所示:

从图中可以看出,使用update()方法已成功更新了account表中id为1的账户余额信息。

 

  1. 在测试类JdbcTemplateTest中,添加一个测试方法deleteAccountTest (),来执行删除操作,代码如图所示:

 

在上述代码中,获取了AccountDao()的实例后,执行了示例中的deleteAccountTest()方法来删除id为1的数据。

使用Junit4测试运行方法后,查询account表中的数据,其结果如图所示:

从图中可以看出,已成功通过update()方法删除了id为1的数据。由于account表中只有一条数据,所以删除后表中的数据为空。

 

 

4.2.3 query()

JdbcTemplate中还提供了大量的query()方法来处理各种对数据库表的查询操作。

 

  1. 向数据表account中插入几条数据,插入后account表中的数据如图:

 

 

  1. 在AccountDao中,分别创建一个通过id查询单个账户和查询所有账户的方法,代码如图所示:

 

 

  1. 在AccountDao接口的实现类AccountDaoImpl()中,实现接口的方法,并使用query()方法分别进行查询,代码如图所示:

 

 

  1. 在测试类JdbcTemplateTest中,添加一个测试方法findAccountByIdTest()来测试条件查询,其代码如下所示:

上述代码通过执行findAccountByIdTest ()方法获取了id为1的对象信息,并通过输出语句输出。使用JUnit4测试运行后,控制台的输出结果如图所示:

 

  1. 测试完条件查询单个数据的方法后,接下来测试查询所有用户账户信息的方法。在测试类JdbcTemplateTest中,添加一个测试方法findAllAccountTest(),其代码如下所示:

在上述代码中,调用了AccountDao对象的findAllAccount()方法查询所有用户账户信息集合,并通过for循环输出查询结果。

使用JUnit4成功运行findAllUserTest()方法后,控制台的显示信息如图所示:

 

从该图可以看出,数据表account中的4条记录都已经被查询出来。

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值