Spring Jdbc 框架整合的第一天

本文内容纲要: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 框架整合的第一天

原文链接:https://www.cnblogs.com/hq1997/p/10720689.html

以上是 Spring Jdbc 框架整合的第一天 的全部内容, 来源链接: utcz.com/z/362680.html

回到顶部