JDBCTemplate基础学习
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基础学习的更多相关文章
- salesforce 零基础学习(五十二)Trigger使用篇(二)
第十七篇的Trigger用法为通过Handler方式实现Trigger的封装,此种好处是一个Handler对应一个sObject,使本该在Trigger中写的代码分到Handler中,代码更加清晰. ...
- 如何从零基础学习VR
转载请声明转载地址:http://www.cnblogs.com/Rodolfo/,违者必究. 近期很多搞技术的朋友问我,如何步入VR的圈子?如何从零基础系统性的学习VR技术? 本人将于2017年1月 ...
- IOS基础学习-2: UIButton
IOS基础学习-2: UIButton UIButton是一个标准的UIControl控件,UIKit提供了一组控件:UISwitch开关.UIButton按钮.UISegmentedContro ...
- HTML5零基础学习Web前端需要知道哪些?
HTML零基础学习Web前端网页制作,首先是要掌握一些常用标签的使用和他们的各个属性,常用的标签我总结了一下有以下这些: html:页面的根元素. head:页面的头部标签,是所有头部元素的容器. b ...
- python入门到精通[三]:基础学习(2)
摘要:Python基础学习:列表.元组.字典.函数.序列化.正则.模块. 上一节学习了字符串.流程控制.文件及目录操作,这节介绍下列表.元组.字典.函数.序列化.正则.模块. 1.列表 python中 ...
- python入门到精通[二]:基础学习(1)
摘要:Python基础学习: 注释.字符串操作.用户交互.流程控制.导入模块.文件操作.目录操作. 上一节讲了分别在windows下和linux下的环境配置,这节以linux为例学习基本语法.代码部分 ...
- CSS零基础学习笔记.
酸菜记 之 CSS的零基础. 这篇是我自己从零基础学习CSS的笔记加理解总结归纳的,如有不对的地方,请留言指教, 学前了解: CSS中字母是不分大小写的; CSS文件可以使用在各种程序文件中(如:PH ...
- Yaf零基础学习总结5-Yaf类的自动加载
Yaf零基础学习总结5-Yaf类的自动加载 框架的一个重要功能就是类的自动加载了,在第一个demo的时候我们就约定自己的项目的目录结构,框架就基于这个目录结构来自动加载需要的类文件. Yaf在自启动的 ...
- Yaf零基础学习总结4-Yaf的配置文件
在上一节的hello yaf当中我们已经接触过了yaf的配置文件了, Yaf和用户共用一个配置空间, 也就是在Yaf_Application初始化时刻给出的配置文件中的配置. 作为区别, Yaf的配置 ...
随机推荐
- Xcode7 真机调试步骤以及遇到的问题解决办法
打开Xcode7,打开preference 添加自己的apple ID登陆上去 打开一个自己的想要运行在真机上的项目 插上自己的iPhone真机(真机没必要是最新的系统,没必要升级,我刚开始报错以为是 ...
- C#定制并发送HTML邮件
HTML格式的邮件能够使用所有html/css使得邮件更丰富,比如现在很多newsletter 都是使用的html邮件. 今天试了一下,如何把图片嵌入到html中呢? 方法一,你的图片host到了in ...
- (转载)关于Apache 的两种工作模式
今天在查看服务器的时候,发现服务器http请求数 每天增长越来越多,在优化集群服务器的时候,查看到Apache 的工作模式是prefork,于是想到了worker 模式, 想暂时的把当前运行模式改成w ...
- 如何配置CentOS或者RedHat5.X、6.X、7.X的网络yum源
第一步:找到一个可靠的yum源 中科大帮助:https://lug.ustc.edu.cn/wiki/mirrors/help/centos源:http://mirrors.ustc.edu.cn/c ...
- ASP.NET中进行消息处理(MSMQ) 一
MSMQ是微软消息队列的英文缩写.那么什么是消息队列?这些介绍网上一大片这里就不多说了.本文对于大虾级的人物来说这只是小玩意而已,对于初学者来说这文章还是有一定的帮助,希望路过的大虾们别笑话我班门弄斧 ...
- 又折腾到这么晚 , 图片Viewpager PagerIndicator,listview 和侧边栏滑动的事件处理
代码 思路 根据坐标判断 事件是否拦截 调用 getParent().requestDisallowInterceptTouchEvent(true);方法告诉上层ViewGroup 是否拦截 返回t ...
- [VIM] 格式化代码
快速使用vim格式化代码 在vim的编辑模式i下直接ESC退出道命令模式之后直接敲入如下命令: gg=G 将全部代码格式化 nG=mG 将第n行到第m行的代码格式化 注:如果ESC ...
- netty定时器HashedWheelTimer(zz)
http://www.tianjiaguo.com/programming-language/java-language/netty%E5%AE%9A%E6%97%B6%E5%99%A8hashedw ...
- (转)Android Binder设计与实现 – 设计篇
原文地址(貌似已打不开):Android Binder设计与实现 – 设计篇 ------------------------------------------------------------- ...
- 17.C#类型判断和重载决策(九章9.4)
今天来结束第九章,聊下我们经常忽略,但是编译器会帮我们完成的"类型判断和重载决策",理解编译器如何帮我们完成,相信在写代码时会更明确,避免一些编译出错,排查的问题,让我们开发更给力 ...