设为首页 加入收藏

TOP

spring之jdbcTemplate实例(一)
2015-07-20 17:19:10 来源: 作者: 【 】 浏览:9
Tags:spring jdbcTemplate 实例

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

1、使用Java反射加载驱动

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

3、获取Statement 或PrepareStatement

4、 调用Statement 或PrepareStatement的方法进行数据ddl dcl 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;
}

@Override
public 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 findUser(){
String sql="select age,name from springjdbctest";

final List list= new ArrayList ();
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、配置文件

?


com.

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇poj 3630 Phone List trie 下一篇hdu 5172 RMQ

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·如何理解c语言指针和 (2025-12-27 01:19:11)
·为什么C标准库没有链 (2025-12-27 01:19:08)
·玩转C语言和数据结构 (2025-12-27 01:19:05)
·MySQL 基础入门视频 (2025-12-26 23:20:22)
·小白入门:MySQL超详 (2025-12-26 23:20:19)