Spring整合Jdbc
第一步:
--新建工程,引入jar包
(spring开发包,ojdbc.jar)
第二步:
--在src下添加applicationContext.xml
第三步:
--针对COST表编写实体类
第四步:
--编写CostDAO接口,定义要实现的方法
第五步:
--编写JdbcCostDAO实现类
(继承JdbcDaoSupport,在方法体中使用JdbcTemplate类完成增删改查操作)
update:用于增、删、改操作
queryForObject:用于查询一条记录
query:用于查询多条记录
queryForInt:用于查询一个数值的
第六步:
--将JdbcCostDAO在Spring容器中定义
第七步:
--追加一个连接池,
在Spring容器中定义一个dataSource组件对象Bean,
并将该Bean组件对象给JdbcCostDAO注入。
(JdbcDaoSupport里有一个setDataSource方法,
接收容器注入的DataSource对象,
利用DataSource对象实例化JdbcTemplate)
备注:
1.配置文件
<!--dataSource-->
<bean id="myDataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="username" value="tarena">
</property>
<property name="password" value="hoosq">
</property>
<property name="driverClassName" value="oracle.jdbc.OracleDriver">
</property>
<property name="url" value="jdbc:oracle:thin:@192.168.0.23:1521:tarena10g">
</property>
</bean>
<!--JdbcDAO-->
<bean id="costDao" scope="singleton"
class="org.tarena.dao.impl.JdbcCostDAO">
<property name="dataSource" ref="myDataSource">
</property>
</bean>
2.jdbcDAO例子:
//删除
public void delete(Cost cost) {
String sql = "delete from COST where ID=?";
Object[] params = {cost.getId()};
this.getJdbcTemplate().update(sql,params);
}
//查询所有
public List<Cost> findAll() {
String sql = "select * from COST";
CostRowMapper mapper = new CostRowMapper();
List<Cost> list =
this.getJdbcTemplate().query(sql, mapper);
return list;
}
//通过id查询一条记录
public Cost findById(int id) {
String sql = "select * from COST where ID=?";
Object[] params = {id};
CostRowMapper mapper = new CostRowMapper();
Cost cost = (Cost)this.getJdbcTemplate()
.queryForObject(sql, params,mapper);
return cost;
}
//增加记录
public void save(Cost cost) {
String sql = "insert into COST (ID, NAME, "
+ "BASE_DURATION, BASE_COST, " + "UNIT_COST, CREATIME, "
+ "STATUS, DESCR) values(FEE_SEQ.nextval,?,?,?,?,?,?,?) ";
Object[] params = {
cost.getFeeName(),
cost.getBaseDuration(),
cost.getBaseCost(),
cost.getUnitCost(),
cost.getCreateTime(),
cost.getStatus(),
cost.getDescr()
};
this.getJdbcTemplate().update(sql,params);
}
//更新
public void update(Cost cost) {
String sql = "update COST set...";
Object[] params = {};
this.getJdbcTemplate().update(sql,params);
}
//查询记录数
public int count() {
String sql = "select count(*) from COST";
int c = this.getJdbcTemplate().queryForInt(sql);
return c;
}
3.自动调用,将当前记录封装成一个实体对象
public class CostRowMapper implements RowMapper{
//自动调用,将当前记录封装成一个实体对象
public Object mapRow(ResultSet rs, int arg1)
throws SQLException {
Cost cost = new Cost();
cost.setId(rs.getInt("ID"));
cost.setFeeName(rs.getString("NAME"));
cost.setBaseDuration(rs.getInt("BASE_DURATION"));
cost.setBaseCost(rs.getFloat("BASE_COST"));
cost.setUnitCost(rs.getFloat("UNIT_COST"));
cost.setCreateTime(rs.getDate("CREATIME"));
cost.setStartTime(rs.getDate("STARTIME"));
cost.setStatus(rs.getString("STATUS"));
cost.setDescr(rs.getString("DESCR"));
return cost;
}
}