spring之jdbcTemplate实例

如果我们不使用spring或使用spring但不使用spring的jdbcTemplate模板的时候我们要取得一个数据库的连接以及关闭要经过如下几步:

1、使用Java反射加载驱动

2、通过DriverManager 的getConnection() 方法获取Connection对象

3、获取Statement 或PrepareStatement

4、调用Statement 或PrepareStatement的方法进行数据ddldcl dml 操作

5、获取结果

6、释放资源

7、如果有异常,处理异常 (异常在哪里都有可能出现)

我们发现我们想要的或者说和业务相关的只有4、5这两个,其他的和业务无关,但是这些必须要有,而且有个特点不管是怎样这些都是固定不变的,也就和一个流程中的某些固定事务相似,所以spring使用模板方法模式对其进行了封装,具体的如下:

我们知道Spring没有提供orm框架但是spring对jdbc使用模板方法模式进行了封装,在使用的过程我们不用处理数据库的连接,资源的释放以及异常处理,这些固定的操作spring的jdbcTemplate已经帮我们处理了!

下面看看,,spring的jdbcTemplate模板的结构:

jdbcTemplate是线程安全的,在应用中使用一个jdbcTemplate,所以我们在xml配置文件中进行配置。

使用Spring的jdbcTemplate模板进行数据库操作实例:

1、javaBean:

package com.inspur.data;/***@author WHD*2015-2-4*/public class User {private int age;private String name;public User(){}public int getAge() { return age;}public void setAge(int age) { this.age = age;}public String getName() { return name;}public void setName(String name) { this.name = name;}}2、接口

package com.inspur.data;import java.util.List;/***@author WHD*2015-2-4*/public interface UserDao {public void SaveUser(User user);}3、接口实现类 StudentDaoImp

package com.inspur.data;import org.springframework.jdbc.core.JdbcTemplate;/***@author WHD*2015-2-5*/public class StudentDaoImp implements UserDao {private JdbcTemplate jdbcTemplate; public JdbcTemplate getJdbcTemplate() { return jdbcTemplate;}public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate;} @Override public void SaveUser(User user) { String sql="delete from springjdbctest where age=3 "; int res=jdbcTemplate.update(sql); System.out.println("del 执行结果"+res); } public void test(){ System.out.println("test"); }}4、接口实现类

package com.inspur.data;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import javax.resource.cci.ResultSet;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.jdbc.core.RowCallbackHandler;import org.springframework.jdbc.core.BeanPropertyRowMapper;/***@author WHD*2015-2-4*/public class UserDaoImp implements UserDao{

//jdbcTemplate对象 提供了操作数据库的方法

private JdbcTemplate jdbcTemplate; public JdbcTemplate getJdbcTemplate() { return jdbcTemplate;}public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate;}@Overridepublic void SaveUser(User user) { // TODO Auto-generated method stub String sql="insert into springjdbctest values(?,?)"; jdbcTemplate.update(sql, new Object[]{user.getAge(),user.getName()}, new int[]{java.sql.Types.INTEGER,java.sql.Types.VARCHAR}); System.out.println(sql); }public void tell(){ System.out.println("daoimp");}// 查询数据public List<User> findUser(){ String sql="select age,name from springjdbctest"; final List<User> list= new ArrayList<User>(); jdbcTemplate.query(sql, new RowCallbackHandler(){ // 这里封装的还是挺方便的,你不用自己对ResultSet 进行遍历取值,可以按照下面的方式直接循环取值 @Override public void processRow(java.sql.ResultSet res) throws SQLException { User user= new User(); user.setAge(Integer.parseInt(res.getString("age"))); user.setName(res.getString("name")); list.add(user); user=null; } }); return list;}// 获取总数public int count(){ int count=jdbcTemplate.queryForInt("select count(*) from springjdbctest"); return count;}}5、配置文件

同时也用对她的怀念来惩罚自己。

spring之jdbcTemplate实例

相关文章:

你感兴趣的文章:

标签云: