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 ...
随机推荐
- [docker]通过阿里云源安装docker && flannel不通问题解决(try this guy out)
docker清理容器 # 容器停止后就自动删除: docker run --rm centos /bin/echo "One"; # 杀死所有正在运行的容器: docker kil ...
- fiddler的编程文章
https://www.cnblogs.com/trevan/p/9487223.html https://www.cnblogs.com/rufus-hua/p/5275980.html https ...
- YARN Resource Management
https://www.jianshu.com/p/b9245242472b https://stackoverflow.com/questions/42637631/what-does-virtua ...
- 【原创 Hadoop&Spark 动手实践 8】Spark 应用经验、调优与动手实践
[原创 Hadoop&Spark 动手实践 7]Spark 应用经验.调优与动手实践 目标: 1. 了解Spark 应用经验与调优的理论与方法,如果遇到Spark调优的事情,有理论思考框架. ...
- 【原创 Hadoop&Spark 动手实践 6】Spark 编程实例与案例演示
[原创 Hadoop&Spark 动手实践 6]Spark 编程实例与案例演示 Spark 编程实例和简易电影分析系统的编写 目标: 1. 掌握理论:了解Spark编程的理论基础 2. 搭建 ...
- 字节输入流:io包中的InputStream为所有字节输入流的父类。
字节输入流:io包中的InputStream为所有字节输入流的父类. Int read();读入一个字节(每次一个): 可先使用new byte[]=数组,调用read(byte[] b) read ...
- int和Integer有什么区别
Java是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入了基本数据类型,但是为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型(wrapper cl ...
- JavaCC从入门到出门
一.JavaCC JavaCC是java的compiler compiler.JavaCC是LL解析器生成器,可处理的语法范围比较狭窄,但支持无限长的token超前扫描. 安装过程: 我是从githu ...
- Windows上使用telnet测试端口号
之前测试服务器某一端口开启开启情况一般在服务器上使用 netstat –ano|findstr "端口号"命令查看. 但是有时候端口在服务器上开通了,但是客户端并不一定可以访问到 ...
- word2vec:基本的安装及使用简介
官方word2vec的github下载地址:https://github.com/svn2github/word2vec 环境,linux-ubuntu-14.04LST,安装好git, gcc版本4 ...