Spirng + JDBC

1.在Spring中使用JDBC

         就像JDBC介绍的那样,直接使用JDBC来访问数据库,还需要建立连接,清理资源,处理异常。SSpring的JDBC框架承担了资源管理和异常处理的工作,简化了JDBC代码。 Spring将数据访问的样板代码(资源管理和异常处理)抽象到模板类中来简化JDBC开发,Spring提供了2个模板类。 JdbcTemplate和NamedParameterJdbcTemplate。其中JdbcTemplate基于索引参数的查询,NamedParameterJdbcTemplate将查询的值以命名参数的形式绑定到SQL,而不是用索引参数。      

2.在Spring中配置JdbcTemplate

        JdbcTemplate是对JdbcOperations接口的实现类

public class JdbcTemplate extends JdbcAccessor implements JdbcOperations 

        在Spring中配置JdbcTemplate,就是把JdbcTemplate配置成Spring的bean,并为其设置DataSource。

        这种配置方式是javaconfig 参考Spring装配Bean ---通过Java代码装配Bean 2.通过JavaConfig实现注入

import javax.sql.DataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.jdbc.core.JdbcTemplate;

public class ConfigClass {

    //配置Spring的JdbcTemplate
	@Bean
	public JdbcTemplate jdbcTemplate(DataSource dataSource) {
		return new JdbcTemplate(dataSource);
	}
}

3.使用JdbcTemplate查询

     配置完JdbcTemplate,就可以使用JdbcTemplate操作数据库进行增删改查。在需要使用JdbcTemplate的类中注入JdbcOperations,借助JdbcOperations的update方法就只要关注sql和参数就行了。不同于传统的JDBC,这里没有资源管理或者异常处理代码。使用JdbcTemplate的方法只需关注于如何从数据库中获取Spitter对象即可。

  3.1使用JdbcTemplate 执行add

@Autowired
private JdbcOperations jdbcOperations;

public void add(Spitter spitter){		
  String addSql = "insert  into t_spitter  values(?,?)";		 
  jdbcOperations.update(addSql,spitter.getUsername(),spitter.getPassword());
}

   3.2使用JdbcTemplate 执行update

@Autowired
private JdbcOperations jdbcOperations;

public void update(Spitter spitter){
	String updateSql = "update t_spitter set username = ? where id = ?";
	jdbcOperations.update(updateSql, spitter.getUsername(),spitter.getId());
}

 3.3使用JdbcTemplate 执行delete

@Autowired
private JdbcOperations jdbcOperations;

public void delete(Spitter spitter){		
	String deleteSql = "delete from t_spitter where id = ?";
	jdbcOperations.update(deleteSql, spitter.getId());
}

      3.4使用JdbcTemplate 执行select

         JdbcTemplate的queryForObject()方法接收3个参数,Sting对象(查询sql)RowMapper对象(把查询结果ResultSet提取数据并映射成Java对象) ;可变参数列表(查询sql中的索引参数值)。 

@Autowired
private JdbcOperations jdbcOperations;

public Spitter load(Long id) {
	Spitter spitter = new Spitter();
	String sql = "select * from t_spitter t where t.id = ? "; //查询语句
	spitter = jdbcOperations.queryForObject(sql, new SpitterRowMapper(), id); //执行查询并把结果映射成Java对象
	return spitter;
}

            这儿要自定义RowMapper接口的实现类如下,从查询结果中提取参数并映射成Java对象

import java.sql.ResultSet;
import java.sql.SQLException;
import org.springframework.jdbc.core.RowMapper;

public class SpitterRowMapper implements RowMapper<Spitter> {

	public Spitter mapRow(ResultSet rs, int rowNum) throws SQLException {
		Spitter spitter = new Spitter();
		spitter.setUsername(rs.getString("username"));
		spitter.setPassword(rs.getString("password"));
		
		return spitter;
	}

}

JdbcTemplate还有很多其它的方法来实现增删改查,待学习补充…… 

4.在Spring中配置NamedParameterJdbcTemplate

     就是简单得把配置成Spring的bean

import javax.sql.DataSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;

@Bean
public NamedParameterJdbcTemplate namedParameterJdbcTemplate(DataSource dataSource) {
	return new NamedParameterJdbcTemplate(dataSource);
}

   通过 NamedParameterJdbcTemplate 增删改查用命名参数,不用索引参数

@Autowired
private JdbcOperations jdbcOperations;

public Spitter laod(String username) {
	Spitter spitter = new Spitter();
	Map<String, Object> params = new HashMap<String, Object>();
	params.put("username", username);
	String sql = "select * from t_spitter t where t.username = :username ";
	spitter = jdbcOperations.queryForObject(sql, new SpitterRowMapper(), params);
	return spitter;
}
 

 

posted on 2019-04-26 18:00  dreamstar  阅读(48)  评论(0编辑  收藏  举报