Spring整合JDBC

JDBCTemplate模板对象是Spring框架提供了的一个可以操作数据库的对象,封装了JDBC技术。

配置文件applicationContext.xml

首先要导入SpringJDBC包和SpringTX包。而且JDBCTemplate需要一个连接池,所以我们也要导入C3p0连接池的包。

public class Demo {
		@Resource(name="userDao")
	private UserDao ud;
	
	@Test
	public void fun1() throws Exception{
		
		//0 准备连接池
		ComboPooledDataSource dataSource = new ComboPooledDataSource();
		dataSource.setDriverClass("com.mysql.jdbc.Driver");
		dataSource.setJdbcUrl("jdbc:mysql:///hibernate_32");
		dataSource.setUser("root");
		dataSource.setPassword("1234");
		//1 创建JDBC模板对象
		JdbcTemplate jt = new JdbcTemplate();
		jt.setDataSource(dataSource);
		//2 书写sql,并执行
		String sql = "insert into t_user values(null,'rose') ";
		jt.update(sql);
		
	}

这是一个简单的Demo,实现了新增用户的功能。先创建JdbcTemplate对象,构造参数可以传入一个连接池,也可以空参构造。然后这个对象有两个核心的方法,update方法和queryForObject方法.

update方法:用户数据库更新(增删改),dbcTemplate对这个对象进行了重载,用的较多的是传两个参数的方法,第一个是我们需要执行的sql语句,第二个是我们要传的sql语句中预处理的占有位符号传参数,这个参数类型是任意个数的占位符。

public void insertUser(User u) {
		String sql = "insert into t_user values(null,?) ";
                JdbcTemplate jt = new JdbcTemplate(C3p0datasource.getDataSource());
		jt.update(sql, u.getName());
	}

queryForObject方法:用于数据库信息的读取,dbcTemplate对这个对象进行了重载,通常需要的参数为sql语句,一个rowmapper对象和sql预处理的占位符参数(任意个数)。其中这个rowmapper对象是这个模板对象封装结果集的的一个对象,我们需要去手动实现一下。查询信息时,模板对象会遍历查询到的结果集,然后把每次查询到的对象以ResultSet的形式反馈给rowmapper对象,我们要做的,就是通过这个ResultSet取出其中的值然后封装到一个对象(也可以是map)。然后模板类把这个对象(或者是对象的list)返回给我们。

//获取单个对象
public User getById(Integer id) {
		String sql = "select * from t_user where id = ? ";
                JdbcTemplate jt = new JdbcTemplate(C3p0datasource.getDataSource());
		User u1 = jt.getJdbcTemplate().queryForObject(sql,new RowMapper<User>(){
			@Override
			public User mapRow(ResultSet rs, int arg1) throws SQLException {
                //把结果集封装到对象
				User u = new User();
				u.setId(rs.getInt("id"));
				u.setName(rs.getString("name"));
				return u;
			}}, id);
		
	}
//获取对象list
public List<User> getAll() {
		String sql = "select * from t_user  ";
                JdbcTemplate jt = new JdbcTemplate(C3p0datasource.getDataSource());
		List<User> list = jt.getJdbcTemplate().query(sql, new RowMapper<User>(){
			@Override
			public User mapRow(ResultSet rs, int arg1) throws SQLException {
                        //把结果集封装到对象
				User u = new User();
				u.setId(rs.getInt("id"));
				u.setName(rs.getString("name"));
				return u;
			}});
		return list;
	}

SpringDaoSupport类

以上操作数据库的方法我们要配置到容器中时,要配置三个内容,连接池,JdbcTemplate,Dao层的业务类,然后把连接池注入要JdbcTemplate,把JdbcTemplate注入到Dao类中。其实,有一个叫做SpringDaoSuppor的类,他其中封装了JdbcTemplate对象,我们只需要给他传入一个连接池,然后让我们的dao层的类继承它就可以直接调用其中的模板对象了,这样可以在配置容器时只需配置连接池和dao层的类。

public class UserDaoImpl extends JdbcDaoSupport{

	public void insertUser(User u) {
		String sql = "insert into t_user values(null,?) ";
		super.getJdbcTemplate().update(sql, u.getName());
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值