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学习笔记之六(数据源的配置)的更多相关文章

  1. Spring学习笔记(2)——Bean的配置

    要使应用程序中的Spring容器成功启动,需要以下三个方面的条件都具备: 1.Spring框架的类包都已经放到应用程序的类路径下 2.应用程序为Spring提供完备的Bean配置信息 3.Bean的类 ...

  2. spring学习笔记一 入门及配置

    Spring是一个开源框架,为了解决企业应用开发的复杂性而创建的.主要优势之一就是其分层架构.Spring的核心是控制反转和面向切面.简单来说,Spring是一个分层的一站式轻量级开源框架. 使用Sp ...

  3. Java框架spring 学习笔记(十八):事务管理(xml配置文件管理)

    在Java框架spring 学习笔记(十八):事务操作中,有一个问题: package cn.service; import cn.dao.OrderDao; public class OrderSe ...

  4. 不错的Spring学习笔记(转)

    Spring学习笔记(1)----简单的实例 ---------------------------------   首先需要准备Spring包,可从官方网站上下载.   下载解压后,必须的两个包是s ...

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

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

  6. spring学习笔记(一) Spring概述

    博主Spring学习笔记整理大部分内容来自Spring实战(第四版)这本书.  强烈建议新手购入或者需要电子书的留言. 在学习Spring之前,我们要了解这么几个问题:什么是Spring?Spring ...

  7. Spring学习笔记2——表单数据验证、文件上传

    在上一章节Spring学习笔记1——IOC: 尽量使用注解以及java代码中,已经搭建了项目的整体框架,介绍了IOC以及mybatis.第二节主要介绍SpringMVC中的表单数据验证以及文件上传. ...

  8. 【Spring学习笔记-MVC-13.2】Spring MVC之多文件上传

    作者:ssslinppp       1. 摘要 前篇文章讲解了单文件上传<[Spring学习笔记-MVC-13]Spring MVC之文件上传>http://www.cnblogs.co ...

  9. 【Spring学习笔记-MVC-9】SpringMVC数据格式化之日期转换@DateTimeFormat

    作者:ssslinppp       1. 摘要 本文主要讲解Spring mvc数据格式化的具体步骤: 并讲解前台日期格式如何转换为java对象: 在之前的文章<[Spring学习笔记-MVC ...

随机推荐

  1. C++源文件到可运行文件的过程

    一.四个步骤    对于C/C++编写的程序,从源码到可运行文件,一般经过以下四个步骤: 1).预处理,产生.ii文件 2).编译,产生汇编文件(.s文件) 3).汇编,产生目标文件(.o或.obj文 ...

  2. jquery点击完一个按钮,并且触发另一个按钮

    $a.click(function(){ $b.trigger('click'); });

  3. arguments对象、apply()、匿名函数

    在学习arguments对象时,碰到的一段code,不是太好理解.原文地址中文(http://www.jb51.net/article/25048.htm).英文(http://www.sitepoi ...

  4. WPF 支持分组互斥的 RadioButton 式单选菜单

    扩展 MenuItem 为同组互斥的 RadioMenuItem,并且将对勾符号修改为圆点. http://stackoverflow.com/a/35692688/5972372 这个问题下还有其他 ...

  5. C# 获取文件路径,读取项目中某程序集下文件

    获取文件路径 ------------------------------------------------------------------------- winform获取文件路径: stri ...

  6. HDU 1996汉诺塔VI

    题目: n个盘子的汉诺塔问题的最少移动次数是2^n-1,即在移动过程中会产生2^n个系列.由于 发生错移产生的系列就增加了,这种错误是放错了柱子,并不会把大盘放到小盘上,即各柱 子从下往上的大小仍保持 ...

  7. (转)yum & wget代理设置

    转自 http://www.cnblogs.com/windows/archive/2012/12/14/2817533.html   yum  配置代理服务器访问要设置所有 yum 操作都使用代理服 ...

  8. IQMath是什么 浮点转定点运算,dsp

    [转帖注明出处:blog.csdn.net/lanmanck] 网上搜了一下没发现非常合适的,特写出来与大家分享. 大家都知道嵌入式系统里带浮点运算指令的CPU都比較少,TI的DSP也是定点的廉价. ...

  9. Docker搭建ES

    Centos7安装ES 和 Docker搭建ES 文版权归博客园和作者吴双本人共同所有 转载和爬虫请注明原文地址 www.cnblogs.com/tdws 一.linux centos7.x安装ES ...

  10. 程序猿学英语——In September the English learning summary

    转眼间9月份又过去了,又该好好总结一下这个月的英语学习情况了. 在暑假快结束的时候.9期师姐给我们測了英语快照.当初測的时候就发现一个问题:当測自己听过尤其是读过的东 西的时候,自己都能听出来.測自己 ...