1.spring中jdbc模板
a.配置jdbcTemplete
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"/> //dataSource可以使任意性
</bean>
b.配置jdbcTemplete的jdbcTemplete属性
<bean id="jdbcTemplete" class="test.JdbcTemplete">
<property name="jdbcTemplate" ref="jdbcTemplate"/>
</bean>
c.在自定义方法中使用
public class JdbcTemplete extends JdbcDaoSupport implements jdbcTemplete{
public List insert(){
List<User> list = getJdbcTemplate().query("select * from users where username=? and enabled=?" ,
new Object[]{"cai","true"} ,
new RowMapper(){
public Object mapRow(ResultSet rs, int rownum) throws SQLException {
User user = new User();
user.setUsername(rs.getString("username"));
user.setEnabled(rs.getString("enabled"));
user.setPassword(rs.getString("password"));
return user;
}
});
return list;
}
其中此方法目的是将结果集映射为实体对象,其中3个参数
•一个字符串,包含用于从数据库里选择数据的SQL语句
•一个Object数组,包含与查询里索引参数绑定的值
•一个RowMapper对象,它从ResultSet里提取数值并构造一个域对象
2.spring中MappingSqlQuery类
使用MappingSqlQuery的目的是将结果集映射为实体对象
a.实例中一定要继承MappingSqlQuery
private class CustomerMappingQuery extends MappingSqlQuery { public CustomerMappingQuery(DataSource ds) { super(ds, "SELECT id, name FROM customer WHERE id = ?");//调用超类的构造方法,传递数据源,sql语句 super.declareParameter(new SqlParameter("id", Types.INTEGER));//定义参数类型 compile(); } public Object mapRow(ResultSet rs, int rowNumber) throws SQLException {//使结果集转化为实体对象 Customer cust = new Customer(); cust.setId((Integer) rs.getObject("id")); cust.setName(rs.getString("name")); return cust; } }
b.调用该方法时
public Customer getCustomer(Integer id) { CustomerMappingQuery custQry = new CustomerMappingQuery(dataSource); Object[] parms = new Object[1]; parms[0] = id; List customers = custQry.execute(parms);//调用目的类的execute方法,并传递相应的参数值parms ,parms的 值与上面定义的参数类型相对应 if (customers.size() > 0) { return (Customer) customers.get(0); } else { return null; } }