1、配置spring JDBC
spring提供了进行jdbc操作的替代方法;实现了JDBC相关操作封装,使用起来更加灵活、方便。
spring提供了spring jdbc 进行jdbc操作,maven配置为:
org.springframework
spring-jdbc
5.0.2.RELEASE
2、使用spring jdbctemplate DML数据
在Spring JDBC开发中,可以使用 JdbcTemplate 和 JdbcDaoSupport 类来简化整个数据库的操作过程。使用jdbctemplate可以避免频繁的创建、关闭连接,处理异常,数据更新示例代码如下:
private DataSource dataSource;
private JdbcTemplate jdbcTemplate;
//================datasource通过spring进行配置传入=================
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
public void insert(Customer customer){
String sql = "INSERT INTO CUSTOMER " +
"(CUST_ID, NAME, AGE) VALUES (?, ?, ?)";
jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.update(sql, new Object[] { customer.getCustId(),
customer.getName(),customer.getAge()
});
}
还可以继承
JdbcDaoSupport类,实现Dao(数据库对象操作类)接口,可无需传入datasource属性,
public class JdbcCustomerDAO extends JdbcDaoSupport implements CustomerDAO
{
//no need to set datasource here
public void insert(Customer customer){
String sql = "INSERT INTO CUSTOMER " +
"(CUST_ID, NAME, AGE) VALUES (?, ?, ?)";
getJdbcTemplate().update(sql, new Object[] { customer.getCustId(),
customer.getName(),customer.getAge()
});
}
在Spring JDBC开发,它总是建议使用,总是建议使用 JdbcTemplate和JdbcDaoSupport,而不使用自己的JDBC编程代码。3、使用JDBCtemplate查询数据
JDBCtemplate查询数据可分为查询多行数据和单行数据,不管是查询返回多行数据还是单行数据,均需实现RowMapper接口,以填充行数据内容;当然也可以使用spring提供的BeanPropertyRowMapper对象,该对象返回类似列名ID'或下划线“列名_ID”作为字段名称的行对象;使用BeanPropertyRowMapper对象可替代实现RowMapper接口;使用BeanPropertyRowMapper查询单行示例代码如下示意:
public Customer findByCustomerId2(int custId){
String sql = "SELECT * FROM CUSTOMER WHERE CUST_ID = ?";
Customer customer = (Customer)getJdbcTemplate().queryForObject(
sql, new Object[] { custId },
new BeanPropertyRowMapper(Customer.class));
return customer;
}
查询多行:
public List findAll(){
String sql = "SELECT * FROM CUSTOMER";
List customers = new ArrayList();
List
查询单值
public String findCustomerNameById(int custId){
String sql = "SELECT NAME FROM CUSTOMER WHERE CUST_ID = ?";
String name = (String)getJdbcTemplate().queryForObject(
sql, new Object[] { custId }, String.class);
return name;
}
4、使用JDBCtemplate进行数据的批量更新
使用batchUpdate方法进行批量更新,注意使用该方法需要实例化batchPreparedStatementSetter类,并重写该对象的setValues与getBatchSize方法
public void insertBatch(final Listcustomers){ String sql = "INSERT INTO CUSTOMER " + "(CUST_ID, NAME, AGE) VALUES (?, ?, ?)"; getJdbcTemplate().batchUpdate(sql, new BatchPreparedStatementSetter() { @Override public void setValues(PreparedStatement ps, int i) throws SQLException { Customer customer = customers.get(i); ps.setLong(1, customer.getCustId()); ps.setString(2, customer.getName()); ps.setInt(3, customer.getAge() ); } @Override public int getBatchSize() { return customers.size(); } }); } 当然也可以使用batchUpdate方法直接执行sql语句
getJdbcTemplate().batchUpdate(new String[]{sql});
5、查询和数据更新时还可以使用SimpleJdbcTemplate对象,该对象不是替代jdbcTemplate,而是使jdbctemplate对数据库的访问和操作更加人性化和简单。具体使用方法参见:
http://www.yiibai.com/spring/spring-simplejdbctemplate-querying-examples.html#article-start