前面几篇文章学习了spring的ioc和aop,大家都知道spring是用在j2EE的开发比较多,所以不可避免的会有数据库的操作,这篇文章,将会带大家学习spring中jdbc的操作。首先不仅需要导入spring的核心jar包commons-logging.jar
spring.jar,同时需要导入commons-pool.jar,mysql-connector-java-5.1.10-bin.jar,commons-dbcp.jar这三个jar文件。用来操作数据库的。
其实spring利用jdbc操作数据库很简单,spring已经为我们提供好了一个JdbcDaoSupport,在该类中有一个dataSource属性,并且为该属性提供了set方法,这个dataSource属性就是包含我们要操作的数据库的一些信息,比如数据库名称,数据库的用户名,密码等,就是配置数据库的,我们只需要自己定义一个类继承自JdbcDaoSupport,然后通过设置dataSource属性的值,就可以操作数据库了。
因此,我们首先编写一个类继承自JdbcDaoSupport.java
public class MyJdbcTemplete extends JdbcDaoSupport { public int addUser() throws SQLException { String sql = "insert into users(username,userpass) values('test','1234')"; JdbcTemplate jdbcTemplate = this.getJdbcTemplate(); jdbcTemplate.execute(sql); return 0; } }可以看到,这里我是给数据库中的表里添加一条记录的。但是这个时候,我们还不知道给那个数据库当中添加,而且也没有设置数据库的用户名和密码,因此我们需要在applicationContext.xml中配置一个dataSource,并且将这个dataSource设置到MyJdbcTemplete的属性当中,注意: MyJdbcTemplete的dataSource属性,是从JdbcDaoSupport继承过来的。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <!-- mysql驱动 --> <property name="driverClassName" value="com.mysql.jdbc.Driver"> </property> <property name="url" value="jdbc:mysql://localhost:3306/userinfo?useUnicode=true&characterEncoding=utf-8"> </property> <property name="username" value="root"></property> <property name="password" value="root"></property> </bean> <bean id="myJdbcTemplete" class="com.test.jdbc.MyJdbcTemplete"> <property name="dataSource" ref="dataSource"></property> </bean> </beans>可以看到dataSource就是配置我的数据库的基本信息,然后通过set方法设置到MyJdbcTemplete中,这个时候编写测试方法:
MyJdbcTemplete templete = (MyJdbcTemplete) applicationContext.getBean("myJdbcTemplete"); try { templete.addUser(); } catch (SQLException e) { e.printStackTrace(); }
此时运行程序,就会成功给users表里边添加一条数据,是不是很简单呢,可以看出我们通过继承JdbcDaoSupport,然后通过this.getJdbcTemplete(),之后通过这个JdbcTemplete对象来操作数据库的,那么,我们也可以直接将JdbcTemplete当成一个属性,然后通过IOC给该属性注入值,我新建一个JdbcTemplete2.java代码如下:
package com.test.jdbc; import java.sql.SQLException; import org.springframework.jdbc.core.JdbcTemplate; public class JdbcTemplete2 { private JdbcTemplate jdbcTemplate; public JdbcTemplate getJdbcTemplate() { return jdbcTemplate; } public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } public int addUser() throws SQLException { String sql = "insert into users(username,userpass) values('test','3333')"; JdbcTemplate jdbcTemplate = this.getJdbcTemplate(); jdbcTemplate.execute(sql); return 0; } }可以看到我声明了一个JdbcTemplete属性,并且设置了set方法,然后就是在spring容器中为该属性赋值即可。
<bean id="jdbcTemplete" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"></property> </bean> <bean id="jdbcTemplete2" class="com.test.jdbc.JdbcTemplete2"> <property name="jdbcTemplate" ref="jdbcTemplete"></property> </bean>可以看到,我首先让spring容器为我初始化了一个org.springframework.jdbc.core.JdbcTemplate类型的类,这个类型就是我们在JdbcTemplete2类中声明的属性的类型,然后为该属性设置dataSource的值,完成之后,这个templete就具有操作数据库的能力了,然后将该templete通过 JdbcTemplete2.java类中提供的set方法设置进去,ok,完成了。此时运行程序同样可以添加一条数据到users表当中。
源码下载