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

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为我们提供了非常多。可是全部的配置方式都是一致的。

时间: 2024-10-06 21:27:12

Spring学习笔记之六(数据源的配置)的相关文章

spring学习笔记一 入门及配置

Spring是一个开源框架,为了解决企业应用开发的复杂性而创建的.主要优势之一就是其分层架构.Spring的核心是控制反转和面向切面.简单来说,Spring是一个分层的一站式轻量级开源框架. 使用Spring的好处 方便解耦,简化开发.Spring就是一个大工厂,可以将所有对创建和依赖关系维护,交给Spring管理. AOP编程的支持.Spring提供面向切面编程,可以方便的实现对程序进行权限拦截.运行监控等功能. 声明式事务的支持.只需要通过配置就可以完成对事务的管理,而无需手动编程. 方便程

不错的Spring学习笔记(转)

Spring学习笔记(1)----简单的实例 ---------------------------------   首先需要准备Spring包,可从官方网站上下载.   下载解压后,必须的两个包是spring.jar和commons-logging.jar.此外为了便于测试加入了JUnit包.   在Myeclipse中创建Java项目.   编写一个接口类,为了简单,只加入了一个方法.   Java代码   1.package com.szy.spring.interfacebean;  

spring学习笔记(19)mysql读写分离后端AOP控制实例

在这里,我们接上一篇文章,利用JNDI访问应用服务器配置的两个数据源来模拟同时操作不同的数据库如同时操作mysql和oracle等.实际上,上个例子可能用来模拟mysql数据库主从配置读写分离更贴切些.既然如此,在本例中,我们就完成读写分离的模拟在web端的配置实例. 续上次的例子,关于JNDI数据源的配置和spring datasource的配置这里不再重复.下面着重加入AOP实现DAO层动态分库调用.可先看上篇文章<spring学习笔记(18)使用JNDI模拟访问应用服务器多数据源实例 >

Spring学习笔记(一)

Spring学习笔记(一) Spring核心思想: IOC:  Inversion Of Control (控制反转) / DI: Dependency Injection (依赖注入) AOP: Aspect Oriented Programming (面向切面编程) IOC 1. 简单的应用 Model package com.wangj.spring.model; public class User { private String username; private String pas

《Spring学习笔记》:Spring、Hibernate、struts2的整合(以例子来慢慢讲解,篇幅较长)

<Spring学习笔记>:Spring.Hibernate.struts2的整合(以例子来慢慢讲解,篇幅较长) 最近在看马士兵老师的关于Spring方面的视频,讲解的挺好的,到了Spring.Hibernate.struts2整合这里,由于是以例子的形式来对Spring+Hibernate+struts2这3大框架进行整合,因此,自己还跟着写代码的过程中,发现还是遇到了很多问题,因此,就记录下. 特此说明:本篇博文完全参考于马士兵老师的<Spring视频教程>. 本篇博文均以如下这

Spring学习笔记(三)

Spring学习笔记(三) AOP 一.使用Annotation方式实现AOP.步骤: xml里加入配置:<aop:aspectj-autoproxy /> <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org

Python学习笔记之六:在VS中调用Python

1,安装配置好Python本身的运行环境,以能在命令行下运行py脚本为准 2,将Python的根目录下的include文件夹,添加到VS的项目属性->配置属性->C/C++->"附加包含目录"中 3,将Python的根目录下的libs文件夹,添加到VS的项目属性->配置属性->链接器->"附加库目录"中 4,在C++项目中添加Python头文件: #include <python.h> 5,添加必要的Python初始化

Citrix XenMobile学习笔记之六:XenMoble业务访问数据流程

总体访问流程图 终端设备注册流程 Android设备注册流程 到google Play或亚马逊应用商店或者豌豆荚.Citrix官网,下载思杰Worx Home应用.并在设备上安装. 当系统提示您安装该应用程序,单击下一步,然后单击安装. 安装Worx Home之后,点击启动. 输入您的认证信息,如设备管理器服务器名,用户主体名称(UPN),或电子邮件地址的名称,然后单击下一步. 在激活设备管理员屏幕上,点击激活. 输入您的账户密码,然后点击点登录. 根据XenMobile的配置方式,您可能会被要

【Spring学习笔记-MVC-3.1】SpringMVC返回Json数据-方式1-扩展

<Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://www.cnblogs.com/ssslinppp/p/4528892.html [Spring学习笔记-MVC-4]返回Json数据-方式2:http://www.cnblogs.com/ssslinppp/p/4530002.html [Spring学习笔记-MVC-3.1]SpringMVC返回Json数据-