SpringJDBC的理解以及使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_41548307/article/details/83514897

Spring JDBC抽象框架提供了对JDBC操作的完整封装,

包括:

指定数据库连接参数

打开数据库连接

预编译并执行SQL语句

遍历查询结果

处理抛出的任何异常

处理事务

关闭数据库连接 

使用方式:

1,导数据库包,配置数据库源(数据库帐密码等,获取连接池中连接对象)

2,测试数据源

3,JdbcTemplate类

JdbcTemplate是core包的核心类。它替我们完成了资源的创建以及释放工作,从而简化了我们对JDBC的使用。 我们可以在DAO实现类中通过传递一个DataSource引用来完成JdbcTemplate的实例化,也可以在Spring的IoC容器中配置一个JdbcTemplate的bean并赋予DAO实现类作为一个实例。 

获取一个表中的所有行数
int count = this.jdbcTemplate.queryForInt("select count(empno) from emp");
查询一个String
String ename = (String) this.jdbcTemplate.queryForObject( "select ename from emp where empno = ?", new Object[]{7788},String.class);

查询返回实体类 

//查询返回实体类
//RowMapper(接口)用于将结果集中当前行映射到一个Java对象

String sql="select * from dept where deptno=60";
Dept dept = (Dept)this.jdbcTemplate.queryForObject(sql, new RowMapper() {
public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
Dept dept = new Dept();
dept.setDeptno(rs.getInt("deptno"));
dept.setDname(rs.getString("dname"));
dept.setLoc(rs.getString("loc"));
return dept;
}
});

查询返回集合 

String sql="select * from dept";
List<Dept> list = (List)this.jdbcTemplate.query(sql, new RowMapper() {
public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
Dept dept = new Dept();
dept.setDeptno(rs.getInt("deptno"));
dept.setDname(rs.getString("dname"));
dept.setLoc(rs.getString("loc"));
return dept;
}
});

 

 批量更新

批量操作需要实现特定的接口BatchPreparedStatementSetter来进行的,  这个接口有两个方法需要实现。一个叫做getBatchSize来提供当前需要批量操作的数量。另外一个方法是setValues 允许你为prepared statement设置参数

public void batchUpdate(final List<Dept> list){
this.jdbcTemplate.batchUpdate("insert into dept values(?,?,?)", 
new BatchPreparedStatementSetter() {
public void setValues(PreparedStatement ps, int i) throws SQLException {
ps.setInt(1, list.get(i).getDeptno());
ps.setString(2, list.get(i).getDname());
ps.setString(3, list.get(i).getLoc());
}
public int getBatchSize() {
        return list.size();
}
});
}

 使用JdbcTemplate执行DDL

this.jdbcTemplate.execute("create table mytable(id number,name varchar2(20))");

Spring提供了一套抽象DAO类

JdbcDaoSupport - JDBC数据访问对象的基类。 需要一个DataSource,同时为子类提供 JdbcTemplate。 HibernateDaoSupport - Hibernate数据访问对象的基类。 需要一个SessionFactory,同时为子类提供 HibernateTemplate。也可以选择直接通过 提供一个HibernateTemplate来初始化。 JdoDaoSupport - JDO数据访问对象的基类。 需要设置一个PersistenceManagerFactory, 同时为子类提供JdoTemplate。 JpaDaoSupport - JPA数据访问对象的基类。 需要一个EntityManagerFactory,同时 为子类提供JpaTemplate

猜你喜欢

转载自blog.csdn.net/qq_41548307/article/details/83514897
今日推荐