Spring Jdbc 框架整合的第一天
Spring Jdbc的概述
它是Spring框架的持久层子框架。用于对数据库的操作
什么是数据库的操作?
答:对数据库的增删改查
在使用Spring Jdbc框架,要用到一个类---->JdbcTemplate,他是spring jdbc 子框架中提供的一个操作类,用于对原始jabc API的简单封装
那么如何创建Template呢?
首先看一下它的源码:
public JdbcTemplate() {
}
/**
* Construct a new JdbcTemplate, given a DataSource to obtain connections from.
* <p>Note: This will not trigger initialization of the exception translator.
* @param dataSource the JDBC DataSource to obtain connections from
*/
public JdbcTemplate(DataSource dataSource) {
setDataSource(dataSource);
afterPropertiesSet();
}
/**
* Construct a new JdbcTemplate, given a DataSource to obtain connections from.
* <p>Note: Depending on the "lazyInit" flag, initialization of the exception translator
* will be triggered.
* @param dataSource the JDBC DataSource to obtain connections from
* @param lazyInit whether to lazily initialize the SQLExceptionTranslator
*/
public JdbcTemplate(DataSource dataSource, boolean lazyInit) {
setDataSource(dataSource);
setLazyInit(lazyInit);
afterPropertiesSet();
}
在此段代码中我们可以看出要创建一个jdbcTemplate 对象,需要获得一个数据库连接的数据源
如何获得一个数据库连接的数据源呢?

org.springframework.jdbc.datasource.DriverManagerDataSource,这个路径位于jdbc驱动包中
再配置springjdbc的四要素:

实现代码:
配置文件代码:
<?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-4.3.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd"> <!--配置一个数据源
由于jjabc模块提供的DriverManagerDataSource数据源,是一个直连数据源,
所以每次访问数据库,都要去打开连接才能访问,效率不高!
所以引入了连接池的概念。。。
连接池中的四个重要属性
1.最大超时毫秒数
2.最大连接数
3.最小连接数
4.最大空闲时间 destroy-method:在连接池对象注销之前,先关闭数据库(关闭连接池) -->
<!-- 数据源的作用:获得数据库的链接,从而引出springJDBC的四要素 -->
<bean name="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
<!-- 配置springJDBC四要素 -->
<!-- 驱动 -->
<property name="driverClassName" value="org.gjt.mm.mysql.Driver"></property>
<!-- 连接字符串 -->
<property name="url" value="jdbc:mysql://localhost:3306/sms"></property>
<!-- 用户名 -->
<property name="username" value="root"></property>
<!-- 密码 -->
<property name="password" value="1234"></property>
<!-- 最大超时毫秒数 -->
<property name="maxWaitMillis" value="30000"></property>
<!-- 最大连接数 -->
<property name="maxTotal" value="100"></property>
<!-- 最小连接数 -->
<property name="initialSize" value="50"></property>
<!-- 最大空闲连接 -->
<property name="maxIdle" value="55"></property>
</bean> <!-- 获得JDBCTemplate操作对象 -->
<bean name="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!-- 设置 -->
<property name="dataSource" ref="dataSource"></property>
</bean> <!-- 配置dao -->
<bean name="studentDAO" class="cn.gzsxt.dao.StudentDAO">
<property name="jdbcTemplate" ref="jdbcTemplate"></property>
</bean> </beans>
dao层:
package cn.gzsxt.dao;
import org.springframework.jdbc.core.JdbcTemplate;
import cn.gzsxt.pojo.Student;
public class StudentDAO implements DAO<Student>{
private JdbcTemplate JdbcTemplate;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
JdbcTemplate = jdbcTemplate;
}
@Override
public int insert(Student entity) {
// TODO Auto-generated method stub
//事物的操作(增删改)都可以是update方法
Object [] objects = {entity.getStuName(),entity.getStuPwd()};
int update = JdbcTemplate.update("INSERT INTO t_student(stuName,stuPwd) VALUES(?,?)", objects);
return update;
}
}
pojo层
package cn.gzsxt.pojo;
import java.io.Serializable;
public class Student implements Serializable{
/**什么是序列化?
* 将对象通过流的形式写出去
* 反序列化
* 读取流形式的数据
*
*/
private static final long serialVersionUID = 114525114257637298L;
private int stuId;
private String stuName;
private String stuPwd;
public int getStuId() {
return stuId;
}
public void setStuId(int stuId) {
this.stuId = stuId;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public String getStuPwd() {
return stuPwd;
}
public void setStuPwd(String stuPwd) {
this.stuPwd = stuPwd;
}
public Student(int stuId, String stuName, String stuPwd) {
super();
this.stuId = stuId;
this.stuName = stuName;
this.stuPwd = stuPwd;
}
public Student() {
super();
// TODO Auto-generated constructor stub
}
}
测试代码:
package cn.gzsxt.test; import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext; import cn.gzsxt.dao.StudentDAO;
import cn.gzsxt.pojo.Student; public class ApplicationContextTest {
private StudentDAO studentDAO;
private ClassPathXmlApplicationContext conn; @Before
public void Before(){
conn = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
//获得数据源对象
studentDAO = conn.getBean(StudentDAO.class);
} @After
public void after(){
conn.close();
} /**
* junit代替main方法,使得类能同时有多个main方法的功能
* 使用时要注意,返回值必须为空,为void
*/
// @Test
// public void dataSource(){
// //通过配置文件创建容器
// ClassPathXmlApplicationContext conn = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
//
// //获取数据源对象
// DataSource dataSource = conn.getBean(DataSource.class);
//
// try {
// //打印数据库链接地址,测试连接是否成功
// System.out.println(dataSource.getConnection());
// } catch (SQLException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
//
// }
@Test
public void insert(){
Student entity = new Student();
entity.setStuName("王八");
studentDAO.insert(entity); }
}
spring jdbc 的优化!
由于jdbc模块提供的DriverManagerDataSource数据源,是一个直连数据源,所以每次访问数据库,都要去打开连接才能访问,效率不高,所以引入了连接池的概念,连接池的四个重要属性:
1.最大超时毫秒数
2.最大连接数
3.最小连接数
4.最大空闲时间

如何关闭连接池呢?
destroy-method:在连接池对象注销之前,先关闭数据库(关闭连接池)
Spring Jdbc 框架整合的第一天的更多相关文章
- RabbitMQ与Spring的框架整合之Spring Boot实战
1.RabbitMQ与Spring的框架整合之Spring Boot实战. 首先创建maven项目的RabbitMQ的消息生产者rabbitmq-springboot-provider项目,配置pom ...
- Spring JDBC 框架使用JdbcTemplate 类的一个实例
JDBC 框架概述 在使用普通的 JDBC 数据库时,就会很麻烦的写不必要的代码来处理异常,打开和关闭数据库连接等.但 Spring JDBC 框架负责所有的低层细节,从开始打开连接,准备和执行 SQ ...
- struts2 + spring + mybatis 框架整合详细介绍
struts2 + spring + mybatis 框架整合详细介绍 参考地址: https://blog.csdn.net/qq_22028771/article/details/5149898 ...
- ref:Spring JDBC框架
ref:https://blog.csdn.net/u011054333/article/details/54772491 Spring JDBC简介 先来看看一个JDBC的例子.我们可以看到为了执行 ...
- spring boot 学习(二)spring boot 框架整合 thymeleaf
spring boot 框架整合 thymeleaf spring boot 的官方文档中建议开发者使用模板引擎,避免使用 JSP.因为若一定要使用 JSP 将无法使用. 注意:本文主要参考学习了大神 ...
- 11.Spring——JDBC框架
1.DBC 框架概述 2.Spring JDBC 示例 3.Spring 中 SQL 的存储过程 1.DBC 框架概述 在使用普通的 JDBC 数据库时,就会很麻烦的写不必要的代码来处理异常,打开和关 ...
- Spring JDBC 框架 简介
在使用普通的 JDBC 数据库时,就会很麻烦的写不必要的代码来处理异常,打开和关闭数据库连接等. 但 Spring JDBC 框架负责所有的低层细节,从开始打开连接,准备和执行 SQL 语句,处理异常 ...
- spring三大框架整合
Spring概述 Spring介绍 Spring它是一个一站式的分层轻量级框架. Spring体系结构 1. core container a) beans与core ...
- SSM框架-----------SpringMVC+Spring+Mybatis框架整合详细教程
1.基本概念 1.1.Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One ...
随机推荐
- Java编程的逻辑 (95) - Java 8的日期和时间API
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...
- java模式:建造者模式
我发现很多源码很喜欢用这个模式,比如spring cloud,spring framework. 建造者模式(Builder)用以构建各种各样的对象,主要功能就是代替对象的构造函数,更加自由化. 举个 ...
- 优化实现Mobile Diffuse动态直接光照shader
项目中美术使用了Unity自带的Mobile/Diffuse这个shader制作了一部分场景素材,这个shader会依赖场景中的动态实时光源,比较耗费. 于是自己手动重写一份,简化shader的消耗, ...
- 微信小程序,图片居中显示,适配不同机型
<view style='width:100%;height:100%;text-align:center;' class="picture-2"> <ima ...
- DirectX using C++_error X3539:ps1_x is no longer supported...解决方案
问题来源 在研究HLSL时编译一个demo出现了error X3539的问题 解决方案 将代码中的ps_1_1 改为ps_2_0 PixelShader = compile ps_1_1 PS(); ...
- 寄存器理解 及 X86汇编入门
本文整理自多材料源,感谢原址分享,请查看末尾Url I, 汇编语言分类: 汇编语言和CPU息息相关,但是不能把汇编语言完全等同于CPU的机器指令.不同架构的CPU指令并不相同,如x86,powerpc ...
- PXE(preboot execution environment):【网络】预启动执行环节:安装 ubuntu、rehat系列:成功
必要条件: 网卡硬件支持 搭建相配套的DHCP\TFTP\HTTP(或FTP)后端服务器:推荐pxesrv,好用! 准备必要的pxe引导文件:pxelinux.0.menu.c32,该2位来自sysl ...
- mysql问题解决SELECT list is not in GROUP BY clause and contains nonaggregated column
今天在Ubuntu下的部署项目,发现一些好好的列表页面发生 :Expression # of SELECT list is not in GROUP BY clause and contains no ...
- 这样使用 GPU 渲染 CSS 动画(转)
大多数人知道现代网络浏览器使用GPU来渲染部分网页,特别是具有动画的部分. 例如,使用transform属性的CSS动画看起来比使用left和top属性的动画更平滑. 但是如果你问,“我如何从GPU获 ...
- linux的shadow文件
在<Python绝技>这本书的第一个小程序首先展示了针对与unix系统中shadow文件密码的暴力破解的能力,因为之前只是对shadow文件停留在保存了用户密码的阶段,但并没有详细研究,所 ...