Spring JDBC
-
spring jdbc是spring对jdbc的封装,使用springjdbc访问数据库,比如不用考虑获取连接和关闭连接,同时springjdbc对DAO类中数据库出现的异常进行了封装成DataAccessException(继承自RuntimeException),可以交由表示层或者拦截器处理。
-
编程步骤
#1 导包
Spring-webmvc spring-jdbc dbcp mysql驱动 junit
#2 添加spring配置文件
#3 实体类(表的数据)
#4 添加properties文件,在spring配置文件中写util读取properties 属性值,配置BasicDataSource类,注入参数,配置 jdbcTemplate
JdbcTemplate对象提供了很多方法,不用考虑获取关闭连接,不用考虑异常的处理,它会把异常统一转换成RuntimeException异常抛出。
<!-- 从db.properties中读取属性值 -->
<util:properties id="properties" location="classpath:db.properties"/>
<!--注入BadicDataSource类 -->
<bean id="bds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="#{properties.driver}"/>
<property name="url" value="#{properties.url}"/>
<property name="username" value="#{properties.user}"/>
<property name="password" value="#{properties.pwd}"/>
</bean>
<!-- 配置jdbcTemplate,注入bds -->
<bean id="jt" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="bds"/>
</bean>
#5 DAO类(数据库交互并封装成实体类),启动spring容器,在dao实现类中依赖注入jdbcTemplete
JdbcTemplate的使用方法:
所有
public List<Emp> findAll(){
String sql = "select * from emp";
return jTemplate.query(sql,new RowMapper<Emp>(){
public Emp mapRow(ResultSet arg0, int arg1) throws SQLException {
// TODO Auto-generated method stub
Emp emp = new Emp();
emp.setEname(arg0.getString("ename"));
emp.setId(arg0.getInt("id"));
emp.setAge(arg0.getInt("age"));
return emp;
}
});
}
//内部类,RowMapper,负责把记录转换成实体对象,比如这里把员工的一条记录转换成emp对象
//第一个参数是结果集,第二个参数是被遍历的记录的下表,从0开始
execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;
update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;
query方法及queryForXXX方法:用于执行查询相关语句;