日期:2014-05-16  浏览次数:20529 次

spring与jdbc注解形式
Spring与JDBC 

2011-05-16 21:54:18|  分类: spring |  标签:spring  jdbc  总结  大全   |字号 订阅
JDBC是java部分连接数据库的基础,来我的博客对他进行复习吧,下面是对jdbc的一些知识点总结。
1.配置文件
我们需要在配置文件中配置数据源,数据源的配置格式大致如下:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/student"/>
    <property name="username" value="root"/>
    <property name="password" value="root"/>
  </bean>
当然我们还可以配置其他的比方说连接池信息:
<!-- 连接池启动时的初始值 -->
<property name="initialSize" value="100"/>
<!-- 连接池的最大值 -->
<property name="maxActive" value="100"/>
<!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 -->
<property name="maxIdle" value="100"/>
<!--  最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 -->
<property name="minIdle" value="100"/>
我们在实际应用中经常需要将相应的信息写到一个文件中,如果需要修改直接修改这个文件即可,下面我列出方法
1)创建jdbc.properties文件
driverClassName=com.mysql.jdbc.Driver
url=jdbc\:mysql\://localhost\:3306/test
username=root
password=root
2)在配置文件中引用
<context:property-placeholder location="classpath:jdbc.properties"/>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="${driverClassName}"/>
    <property name="url" value="${url}"/>
    <property name="username" value="${username}"/>
    <property name="password" value="${password}"/>
  </bean>
注意在location中加入classpath,代表使用的是web应用的伪路径。在value中我们像EL
表达式一样去获取即可。
2.JDBC的使用
public class PersonServiceBean implements PersonService {
private JdbcTemplate jdbcTemplate;
@Resource
public void setDataSource(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
}
解释一下上面的代码,@Resource是注入dataSource,如果不带参数按类型匹配,这个不用多说了,在set方法中new出jdbcTemplate.
3.利用jdbcTemplate进行相应的数据操作
public List<Person> getAllPerson() {//查询list
List list=jdbcTemplate.queryForList("select * from employee");//如果要有条件查询,可以用jdbcTemplate.queryForList(sql, args, argTypes)
return list;
}
public Person getPerson(Integer empid) {//查询object
Person person=(Person)jdbcTemplate.queryForObject("select * from employee where empid=?",new Object[]{empid},
new RowMapper(){
public Object mapRow(ResultSet rs, int index) throws SQLException {
Person person=new Person();
person.setEmpid(rs.getInt("empid"));
person.setEmpname(rs.getString("empname"));
person.setDepartid(rs.getInt("departid"));
return person;
}
}
);
return person;
}
public void save(Person person) {//插入
jdbcTemplate.update("insert into employee(empname,departid) values(?,?)",new Object[]{person.getEmpname(),person.getDepartid()}
,new int[]{Types.VARCHAR,Types.INTEGER}
);
}
public void update(Person person) {//更新
jdbcTemplate.update("update employee set empname=? where empid=?",new Object[]{person.getEmpname(),person.getEmpid()},
new int[]{Types.VARCHAR,Types.INTEGER});
}
4.事务管理
在我们上面的程序中,我们发现我们并没有对事务进行管理,实际上我们是使用了JdbcTemplate的事务管理,在实际开发中,我们需要将事务交给spring来管理,下面是一些总结:
1)配置文件
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springfra