JDBCTemplate:spring提供的用于操作数据库的模板,类似DbUtils。使用时必须设置数据源(DataSource);数据源如DBCP、C3P0等

一、JDBCAPI简单使用Demo

1、项目结构

2、创建MySQL数据库及表

create database springJDBCPro;
use springJDBCPro;
create table user(
id int primary key auto_increment,
username varchar(50),
password varchar(32)
);

创建数据库及表

3、Java代码demo

package springJDBCPro;

import java.sql.SQLException;

import org.apache.commons.dbcp.BasicDataSource;
import org.junit.Test;
import org.springframework.jdbc.core.JdbcTemplate; public class TestApp {
@Test
public void demo1() throws SQLException {
//创建数据源
BasicDataSource basicDataSource=new BasicDataSource();
//注册驱动
basicDataSource.setDriverClassName("com.mysql.jdbc.Driver");
//设置URL
basicDataSource.setUrl("jdbc:mysql://localhost:3306/springJDBCPro");
//设置登录用户名
basicDataSource.setUsername("root");
//设置登录密码
basicDataSource.setPassword("hjp123");
// 创建模板
JdbcTemplate jdbcTemplate = new JdbcTemplate();
//设置数据源
jdbcTemplate.setDataSource(basicDataSource);
//录入数据
jdbcTemplate.update("insert into user(username,password) values(?,?)","Jack","Jac123");
}
}

Demo

二、JDBC结合DBCP,通过spring操作数据库

1、项目结构

2、UserDao类代码

package springJDBCDBCP;

import org.springframework.jdbc.core.JdbcTemplate;

public class UserDao {
private JdbcTemplate jdbcTemplate; public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
} public void save(String username, String password) {
jdbcTemplate.update("insert into user(username,password) values(?,?)",username,password);
}
}

UserDao

3、beans.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 配置数据源 -->
<bean id="dataSourceId" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/springJDBCPro"></property>
<property name="username" value="root"></property>
<property name="password" value="hjp123"></property>
</bean>
<!-- 配置模板,需要数据源 -->
<bean id="jdbcTemplateId" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSourceId"></property>
</bean>
<!-- 配置Dao,需要模板 -->
<bean id="userDaoId" class="springJDBCDBCP.UserDao">
<property name="jdbcTemplate" ref="jdbcTemplateId"></property>
</bean>
</beans>

beans

4、测试Demo

package springJDBCDBCP;

import java.sql.SQLException;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class TestApp {
@Test
public void demo1() throws SQLException {
String xmlPath="springJDBCDBCP/beans.xml";
ApplicationContext applicationContext=new ClassPathXmlApplicationContext(xmlPath);
UserDao userDao=applicationContext.getBean("userDaoId",UserDao.class);
userDao.save("Tom", "Tom123");
}
}

Demo

三、JDBC结合C3P0,通过spring操作数据库(下面用的是IDEA开发工具)

1、项目结构

2、在WEB-INF文件夹下新增lib文件夹,然后添加到项目Library,在lib里面添加项目结构图中的jar包

3、新建User类

package springJDBCC3P0;

/**
* Created by JiaPeng on 2015/10/13.
*/
public class User {
private Integer id;
private String userName;
private String password; public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} @Override
public String toString() {
return "User{" +
"id=" + id +
", userName='" + userName + '\'' +
", password='" + password + '\'' +
'}';
}
}

User

4、新建UserDao类,并且继承自JdbcDaoSupport,该类中会判断JDBCTemplate模板对象是否为空,为空自动创建,创建完后模板会自动添加数据源对象,所以在后面配置文件中添加UserDao的bean时,只注入数据源即可,而UserDao类中也无需有JDBCTemplate模板的可写对象。

package springJDBCC3P0;

import org.springframework.jdbc.core.simple.ParameterizedBeanPropertyRowMapper;
import org.springframework.jdbc.core.support.JdbcDaoSupport; /**
* Created by JiaPeng on 2015/10/13.
*/
public class UserDao extends JdbcDaoSupport {
public void save(String userName, String password) {
this.getJdbcTemplate().update("insert into user(username,password) values(?,?)", userName, password);
} public User find(int id) {
String sql = "select * from user where id=?";
return this.getJdbcTemplate().queryForObject(sql, ParameterizedBeanPropertyRowMapper.newInstance(User.class), id);
}
}

UserDao

5、新建配置文件beans.xml,配置如下

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--配置数据源 C3P0-->
<bean id="datasourceId" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/springJDBCPro"></property>
<property name="user" value="root"></property>
<property name="password" value="hjp123"></property>
</bean>
<!--配置Dao,Dao继承JdbcDaoSupport类,该类会判断jdbctemplate模板是否为空,如果为空该类会创建模板对象,
并且调用setDataSource方法,加载数据源-->
<bean id="userDaoId" class="springJDBCC3P0.UserDao">
<property name="dataSource" ref="datasourceId"></property>
</bean>
</beans>

beans

6、新建测试类

package springJDBCC3P0;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; /**
* Created by JiaPeng on 2015/10/13.
*/
public class TestApp {
@Test
public void demo1() {
String xmlPath = "springJDBCC3P0/beans.xml";
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);
UserDao userDao = applicationContext.getBean("userDaoId", UserDao.class);
User user = userDao.find(1);
System.out.println(user);
}
}

TestApp

四、JDBC结合C3P0,用properties文件配置数据库信息,通过spring操作数据库(下面用的是IDEA开发工具)

1、项目结构

2、新建User类

package springJDBCC3P0Properties;

/**
* Created by JiaPeng on 2015/10/13.
*/
public class User {
private Integer id;
private String userName;
private String password; public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} @Override
public String toString() {
return "User{" +
"id=" + id +
", userName='" + userName + '\'' +
", password='" + password + '\'' +
'}';
}
}

User

3、新建UserDao类继承自JdbcDaoSupport

package springJDBCC3P0Properties;

import org.springframework.jdbc.core.simple.ParameterizedBeanPropertyRowMapper;
import org.springframework.jdbc.core.support.JdbcDaoSupport; import java.util.List; /**
* Created by JiaPeng on 2015/10/13.
*/
public class UserDao extends JdbcDaoSupport {
public List<User> findAll() {
String sql = "select * from user";
return this.getJdbcTemplate().query(sql, ParameterizedBeanPropertyRowMapper.newInstance(User.class));
}
}

UserDao

4、新建properties文件

jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc:mysql://localhost:3306/springJDBCPro
jdbc.user=root
jdbc.password=hjp123

jdbc.properties

5、新建beans.xml配置文件

<?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">
<!--加载properties配置文件,
location用于指定配置文件位置,class:固定字符串,表示从src下获取
在spring配置文件中就可以通过${key}方式获取-->
<context:property-placeholder
location="classpath:springJDBCC3P0Properties/jdbcinfo.properties"></context:property-placeholder>
<bean id="datasourceId" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driverClass}"></property>
<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
<property name="user" value="${jdbc.user}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
<bean id="userDaoId" class="springJDBCC3P0Properties.UserDao">
<property name="dataSource" ref="datasourceId"></property>
</bean>
</beans>

beans

6、新建测试类

package springJDBCC3P0Properties;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import java.util.List; /**
* Created by JiaPeng on 2015/10/13.
*/
public class TestApp {
@Test
public void demo1() {
String xmlPath = "springJDBCC3P0Properties/beans.xml";
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);
UserDao userDao = applicationContext.getBean("userDaoId", UserDao.class);
List<User> userAll = userDao.findAll();
for (int i = 0; i < userAll.size(); i++) {
System.out.println(userAll.get(i));
}
}
}

TestApp

JDBCTemplate基础学习的更多相关文章

  1. salesforce 零基础学习(五十二)Trigger使用篇(二)

    第十七篇的Trigger用法为通过Handler方式实现Trigger的封装,此种好处是一个Handler对应一个sObject,使本该在Trigger中写的代码分到Handler中,代码更加清晰. ...

  2. 如何从零基础学习VR

    转载请声明转载地址:http://www.cnblogs.com/Rodolfo/,违者必究. 近期很多搞技术的朋友问我,如何步入VR的圈子?如何从零基础系统性的学习VR技术? 本人将于2017年1月 ...

  3. IOS基础学习-2: UIButton

    IOS基础学习-2: UIButton   UIButton是一个标准的UIControl控件,UIKit提供了一组控件:UISwitch开关.UIButton按钮.UISegmentedContro ...

  4. HTML5零基础学习Web前端需要知道哪些?

    HTML零基础学习Web前端网页制作,首先是要掌握一些常用标签的使用和他们的各个属性,常用的标签我总结了一下有以下这些: html:页面的根元素. head:页面的头部标签,是所有头部元素的容器. b ...

  5. python入门到精通[三]:基础学习(2)

    摘要:Python基础学习:列表.元组.字典.函数.序列化.正则.模块. 上一节学习了字符串.流程控制.文件及目录操作,这节介绍下列表.元组.字典.函数.序列化.正则.模块. 1.列表 python中 ...

  6. python入门到精通[二]:基础学习(1)

    摘要:Python基础学习: 注释.字符串操作.用户交互.流程控制.导入模块.文件操作.目录操作. 上一节讲了分别在windows下和linux下的环境配置,这节以linux为例学习基本语法.代码部分 ...

  7. CSS零基础学习笔记.

    酸菜记 之 CSS的零基础. 这篇是我自己从零基础学习CSS的笔记加理解总结归纳的,如有不对的地方,请留言指教, 学前了解: CSS中字母是不分大小写的; CSS文件可以使用在各种程序文件中(如:PH ...

  8. Yaf零基础学习总结5-Yaf类的自动加载

    Yaf零基础学习总结5-Yaf类的自动加载 框架的一个重要功能就是类的自动加载了,在第一个demo的时候我们就约定自己的项目的目录结构,框架就基于这个目录结构来自动加载需要的类文件. Yaf在自启动的 ...

  9. Yaf零基础学习总结4-Yaf的配置文件

    在上一节的hello yaf当中我们已经接触过了yaf的配置文件了, Yaf和用户共用一个配置空间, 也就是在Yaf_Application初始化时刻给出的配置文件中的配置. 作为区别, Yaf的配置 ...

随机推荐

  1. iframe在ipad safari的显示

    今 天要在web中嵌套一个网址或本地HTML,用到了iframe,在电脑上设置scrolling=‘auto’,宽度高度,会有滚动条出现.而在 ipad上会全部显示整个网页的宽度高度.scrollin ...

  2. chrome拓展开发实战

    chrome拓展开发实战:页面脚本的拦截注入 时间 2015-07-24 11:15:00  博客园精华区 原文  http://www.cnblogs.com/horve/p/4672890.htm ...

  3. Android强制弹出,隐藏输入法.

    当我们弹出一个Dialog时候,如果这个Dialog需要输入数据,然后确定后又需要关闭输入法,一般系统的hide,跟show方法总会有各种问题,最霸道的解决方法就是写一个定时器,定时弹出或者关闭输入法 ...

  4. Opencv step by step - 基本数据类型

    CvArr,CvMat,IplImage这三者是继承的关系. 打开opencv 3.0的源码: cvArr /* CvArr* is used to pass arbitrary  * array-l ...

  5. WPF MVVM实现TreeView

    今天有点时间,做个小例子WPF MVVM 实现TreeView 只是一个思路大家可以自由扩展 文章最后给出了源码下载地址 图1   图2     模版加上了一个checkbox,选中父类的checkb ...

  6. 【MyEclipse 2015】 逆向破解实录系列【2】(纯研究)

    声明 My Eclipse 2015 程序版权为Genuitec, L.L.C所有. My Eclipse 2015 的注册码.激活码等授权为Genuitec, L.L.C及其付费用户所有. 本文只从 ...

  7. Orchard使用Tags(标签)组织文本

    本文链接:http://www.cnblogs.com/souther/p/4517476.html 主目录 原文链接:http://docs.orchardproject.net/Documenta ...

  8. bcd 8421码

    bcd码表: 比如一个字符串 String s = "0200" 按对照表转换成二进制 02 : 0000 0010 00 : 0000 0000 s转换为字节的时候 02和00分 ...

  9. 微信小程序全面实战,架构设计 && 躲坑攻略(小程序入门捷径教程)

    最近集中开发了两款微信小程序,分别是好奇心日历(每天一条辞典+一个小投票)和好奇心日报(轻量版),直接上图: Paste_Image.png 本文将结合具体的实战经验,主要介绍微信小程序的基础知识.开 ...

  10. [工具]推荐一款查看dll依赖工具

    引言 很久没写一篇像样的博客了,最近一个月一直忙于项目,也没时间去总结了,回到家,也就是看看书,没怎么总结.不过还是挺兴奋的,每天过得还算充实.这里也算是对五月份的一个总结吧. 为什么要查看dll 因 ...