首页 > 编程语言 > 详细

Spring学习笔记之六(数据源的配置)

时间:2015-08-14 08:46:04      阅读:213      评论:0      收藏:0      [点我收藏+]

 

 1.前言

上一篇博客分析了,Spring中实现AOP的两种动态代理的机制,下面这篇博客,来讲解一下Spring中的数据源的配置。


 2.DAO支持的模板类

Spring提供了很多关于Dao支持的模板类,例如HibernateTemplate、JdbcTemplate等,下面以后者为例,来看一个Demo

<span style="font-family:SimSun;font-size:18px;">package com.test;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;

public class JDBCTest {
	public static void main(String[] args) {
		//创建一个DataSource的对象,封装数据库连接的信息
		DriverManagerDataSource dataSource=new DriverManagerDataSource();
		
		//为其指定连接数据库的信息
		dataSource.setDriverClassName("com.mysql.jdbc.Driver");
		dataSource.setUrl("jdbc:mysql://localhost:3306/test");
		dataSource.setUsername("root");
		dataSource.setPassword("");
		
		//使用模板类,必须先有一个模板类的对象,必须为其提供数据库相关的连接信息
		JdbcTemplate template=new JdbcTemplate(dataSource);
		//执行操作
		template.execute("insert into news_title values('54','54','354','6345')");
	}
}
</span>


 3.数据源配置

上面则只是简单的利用了一个JDBCTemplate,而在Spring中为我们提供了很多Dao的模板类,例JdbcTemplate、HibernateTemplate、SqlMapClientTemplate(过时)、JpaTemplate (过时)等,下面以JdbcDaoSupport为例,来看一下具体的数据源的配置。

IDAO配置

IDAO是底层的接口类,提供了数据访问的功能

<span style="font-family:SimSun;font-size:18px;">package cn.itast.tx.account;

public interface AccountDao {
	public void inMoney(String in,Double money);
	public void outMoney(String out,Double money);
}
</span>


DAO实现了IDAO,封装了具体的数据访问的功能

<span style="font-family:SimSun;font-size:18px;">package cn.itast.template.jdbc;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.support.JdbcDaoSupport;

import cn.itast.template.jdbc.vo.UserModel;

public class UserDaoImpl extends JdbcDaoSupport{
	/*
	//继承了DAO支持抽象类后,将自动为其提供注入的方法
	//可以为其注入模板对象也可以为其注入数据源
	private JdbcTemplate jdbcTemplate;
	public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
		this.jdbcTemplate = jdbcTemplate;
	}
	*/
	public void add(UserModel um){
		//String sql = "insert into tbl_user values(null,'"+um.getUserName()+"',"+um.getAge()+")";
		//获取模板对象的方法 this.getJdbcTemplate()
		//this.getJdbcTemplate().execute(sql);
		String sql = "insert into tbl_user values(null,?,?)";
		this.getJdbcTemplate().update(sql, um.getUserName(),um.getAge());
	}
	public void delete(UserModel um){
		String sql = "delete from tbl_user where uuid = "+um.getUuid();
		this.getJdbcTemplate().execute(sql);
	}
	public void update(UserModel um){
		//String sql = "update tbl_user set userName = '"+um.getUserName()+"' ,age = "+um.getAge()+" where uuid = "+um.getUuid();
		//this.getJdbcTemplate().execute(sql);
		String sql = "update tbl_user set userName= ? , age= ? where uuid = ?";
		this.getJdbcTemplate().update(sql, um.getUserName(),um.getAge(),um.getUuid());
	}
	public String getNameByUuid(Long uuid){
		String sql = "select userName from tbl_user where uuid = ?";
		return this.getJdbcTemplate().queryForObject(sql, String.class, uuid);
	}
	public Long getCount(){
		String sql = "select count(uuid) from tbl_user";
		return this.getJdbcTemplate().queryForLong(sql);
	}
	
	public UserModel get(Long uuid){
		String sql = "select * from tbl_user where uuid = ?";
		RowMapper<UserModel> rm = new RowMapper<UserModel>() {
			public UserModel mapRow(ResultSet rs, int rowNum)throws SQLException {
				UserModel um = new UserModel();
				um.setUuid(rs.getLong("uuid"));
				um.setUserName(rs.getString("userName"));
				um.setAge(rs.getInt("age"));
				return um;
			}
		};
		return this.getJdbcTemplate().queryForObject(sql,rm,uuid);
	}
	
	public List<UserModel> getAll(){
		String sql = "select * from tbl_user";
		RowMapper<UserModel> rm = new RowMapper<UserModel>() {
			public UserModel mapRow(ResultSet rs, int rowNum)throws SQLException {
				UserModel um = new UserModel();
				um.setUuid(rs.getLong("uuid"));
				um.setUserName(rs.getString("userName"));
				um.setAge(rs.getInt("age"));
				return um;
			}
		};
		return this.getJdbcTemplate().query(sql, rm);
	}
	
}



</span>


具体的数据源的注入

由于JdbcDaoSupport需要DataSource的注入

<span style="font-family:SimSun;font-size:18px;"><?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

	<!-- DAO -->
	<bean id="userDao" class="cn.itast.template.jdbc.UserDaoImpl">
		<!-- <property name="jdbcTemplate" ref="jdbcTemplate"/> -->
		<property name="dataSource" ref="dataSource"/>
	</bean>

	<!-- JdbcTemplate -->
	<!-- <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
		<property name="dataSource" ref="dataSource"/>
	</bean> -->
	
	<!-- DataSource -->
	<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
		<property name="url" value="jdbc:mysql://localhost:3306/springdb"/>
		<property name="username" value="root"/>
		<property name="password" value="root"/>
	</bean>
</beans>




</span>


分析:上述只是一个简单的数据源的注入,Spring为我们提供了很多,但是所有的配置方式都是一致的。


版权声明:本文为博主原创文章,未经博主允许不得转载。

Spring学习笔记之六(数据源的配置)

原文:http://blog.csdn.net/luckyzhoustar/article/details/47655287

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!