文章目录
1 Spring JDBC
1.1 JDBC
一般JDBC连接数据库步骤:
相比之下,Spring的JDBC模块负责数据库资源管理和错误处理,简化了开发人员对数据库的操作,这样使得开发人员将专注点放在业务逻辑的实现上。
1.2 Spring JdbcTemplate的解析
针对数据库的操作,Spring框架提供了JdbcTemplate类,这个类是Spring框架数据抽象层的基础,也是Spring JDBC的核心类。继承了抽象类jdbcAccessor,实现了JdbcOperations接口。
JdbcTemplate类的直接父类是JdbcAccessor ,该类提供了一些访问数据库时使用的公共属性:
- DataSource :其主要功能是获取数据库连接,还可以引入对数据库连接的缓冲池和分布式事务的支持,它可以作为访问数据库资源的标准接口。
- SQLExceptionTranslator :该接口负责对SQLException进行转译工作。通过必要的设置获取SQLExceptionTranslator中的方法,可以使JdbcTemplate在需要处理SQLException时, 委托SQLExceptionTranslator的实现类来完成相关的转译工作。
JdbcOperations接口定义了在JdbcTemplate类中可以使用的操作集合。如:添加、修改、查询和删除等操作。
1.3 Spring JDBC的配置
Spring JDBC模块主要由4个包组成,分别是core (核心包)、dataSource (数据源包)、object (对象包)和support (支持包)。描述如下:
配置文件:
1.3.1 利用property-placeholder提取数据库配置参数
将配置参数提取到jdbc.properties文件中,建议使用这种方法。还可以考虑加密,在配置文件中不以明文形式存储。
2 Spring JdbcTemplate的常用方法
在JdbcTemplate核心类中,提供了大量的更新和查询数据库的方法,使用这些方法可以方便地操作数据库。
- execute():用于执行sql语句。
- update():执行插入、更新和 删除操作。
- query():用于数据查询操作。
2.1 execute
执行sql语句:
//测试创建表
@Test
public void mainTest() {
// 加载配置文件
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
// 获取JdbcTemplate实例
JdbcTemplate jdTemplate = (JdbcTemplate) applicationContext.getBean("jdbcTemplate");
// 使用execute()方法执行SQL语句,创建用户账户管理表account
jdTemplate.execute("create table account(" + "id int primary key auto_increment," + "username varchar(50),"
+ "balance double)");
System.out.println("账户表account创建成功!");
}
2.2 update
update()方法可以完成插入、 更新和删除数据的操作。在JdbcTemplate类中,提供了一系列的update()方法,其常用方法如下所示:
//更新账户
public int updateAccount(Account account) {
//定义SQL语句
String sql="update account set username=?,balance=? where id = ?";
//定义数组来存放SQL语句中的参数
Object[] params =new Object[] {account.getUsername(),account.getBalance(),account.getId()};
//执行SQL语句,返回受影响的记录条数
int num = this.jdbcTemplate.update(sql,params);
return num;
}
2.3 query
常用几个query方法:
//查询所有账户信息
public List<Account> findAllAccount() {
// TODO Auto-generated method stub
//定义SQL语句
String sql="select * from account";
//创建一个新的BeanPropertyRowMapper对象
RowMapper<Account>rowMapper=new BeanPropertyRowMapper<Account>(Account.class);
//执行查询,通过RowMapper返回结果
return this.jdbcTemplate.query(sql,rowMapper);
}
3 JUnit测试
在软件开发过程中,需要有相应的测试工作。依据测试目的不同,可以将软件测试分为单元测试、集成测试、确认测试和系统测试等。其中单元测试在软件开发阶段是最底层的测试,它易于及时发现并解决问题。JUnit就是一个进行单元测试的开源框架。
使用实例:
package cn.edu.ujn.ch4.jdbc;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
//以什么样的方式运行
@RunWith(SpringJUnit4ClassRunner.class)
//指定Spring的配置文件
@ContextConfiguration(locations = "classpath:applicationContext.xml")
public class AccountDaoImplTest {
@Autowired
//注入一个实例
//对于注入实例,还有一种方法就是在每个**Test()方法中都使用加载配置文件的方式,会比较繁琐
//附上代码:
// 加载配置文件
// ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
// 获取AccountDao实例
// AccountDao accountDao =(AccountDao) applicationContext.getBean("accountDao");
private IAccountDao accountTest;
//注意:一定要在测试方法前加上@Test,不然会报错(no runable mathod),而且Test的T要大写
//测试创建表
@Test
public void mainTest() {
// 加载配置文件
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
// 获取JdbcTemplate实例
JdbcTemplate jdTemplate = (JdbcTemplate) applicationContext.getBean("jdbcTemplate");
// 使用execute()方法执行SQL语句,创建用户账户管理表account
jdTemplate.execute("create table account(" + "id int primary key auto_increment," + "username varchar(50),"
+ "balance double)");
System.out.println("账户表account创建成功!");
}
}
注意注解@RunWith和@ContextConfiguration的使用。
声明:
若本人发布的作品涉及版权或存在其他问题,请联系我删除。
谢谢浏览!