昨天刚刚看了JDBC的连接,因为毕设的后端需要用数据库,想试一下如果使用spring里面的容器来管理JDBC会是怎样的效果,也算是对之前的spring学习一个小应用。

首先在lib文件夹下放上spring和JDBC需要的包:

顺带贴上项目文件的结构,其中Add文件用于添加,Delete用于删除,getConnection用于建立JDBC连接:

首先编写建立连接的程序,这个小实验的关键,是让JDBC的关键对象与spring的容器结合,我的设想是因为增删改查都是需要用到connection对象,所以可以将这个对象作为bean,通过注入其他bean的方式,来实现容器的管理,所以获取连接的代码就可以写成下面的样子:

package com.getJDBC;import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.SQLException;public class getConnection {Connection conn;public void getConnection() throws ClassNotFoundException, SQLException {Class.forName("com.mysql.cj.jdbc.Driver");String url = "jdbc:mysql://localhost:3306/db_database10?serverTimezone=GMT%2B8";String username = "root";String password = "04050907";conn = DriverManager.getConnection(url,username,password);System.out.println("getting successfully!");}public void get() throws ClassNotFoundException, SQLException {}
}

这个连接类是其余类的基础,实例化这个类,再注入到其它的bean里面。
在此基础上就可以编写ADD类了,先上代码:

package com.getJDBC;import java.sql.PreparedStatement;
import java.sql.SQLException;public class Add {private getConnection con;public void setConn(getConnection conn) {this.con=conn;}public void addBook() throws SQLException, ClassNotFoundException {String sql = "insert into tb_books(name,price,bookCount,author) values(?,?,?,?)";con.getConnection();PreparedStatement ps = con.conn.prepareStatement(sql);ps.setString(1, "缘之空");ps.setInt(2,24);ps.setInt(3,23);ps.setString(4,"轻之文库");int row = ps.executeUpdate();ps.close();con.conn.close();System.out.println("Add successfully!");}
}

编写好注入需要的setter方法,之后就可以写添加信息的方法了,这个方法是按照JDBC的要求直接写的。编写完成后一直报错,顺了半天,发现错误在于注入的对象,整个的逻辑是连接对象注入到添加对象,但是一开始我们的连接对象里面的JDBC连接就是个对象,并不是一个一般的变量,所以不能够直接初始化,相当于必须调用一遍连接对象的getConnection方法才能给这个对象初始化,修改了这一点整个程序就可以运行了。删除的代码和这个类似,直接贴代码:

package com.getJDBC;import java.sql.PreparedStatement;
import java.sql.SQLException;public class Delete {private getConnection con;public void setConn(getConnection conn) {this.con=conn;}public void deleteBook() throws SQLException, ClassNotFoundException {String sql="delete from tb_books where name=?";con.getConnection();PreparedStatement ps=con.conn.prepareStatement(sql);ps.setString(1,"缘之空" );ps.executeUpdate();ps.close();con.conn.close();System.out.println("Delete successfully!");}
}

对应的配置文件applicationContext.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:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.2.xsd"><!-- 由 Spring容器创建该类的实例对象 --><bean id="conn" class="com.getJDBC.getConnection" /><bean id="add" class="com.getJDBC.Add" ><property name="Conn" ref="conn"/></bean><bean id="del" class="com.getJDBC.Delete" ><property name="Conn" ref="conn"/></bean>
</beans>

之后利用JUnit编写测试代码,首先创建对应的数据库,数据库初试状态如下:

添加的测试代码如下:

package com.getJDBC;import java.sql.SQLException;import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;class test {@Testvoid test() throws ClassNotFoundException, SQLException{// 定义Spring配置文件的路径String xmlPath = "com/getJDBC/applicationContext.xml";// 初始化Spring容器,加载配置文件ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);Add add = (Add) applicationContext.getBean("add");add.addBook();}}

运行后控制台信息和数据库内变化如下,图书信息已经成功添加到数据库中:


之后再使用删除的junit程序,代码如下:

package com.getJDBC;import java.sql.SQLException;import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;class test {@Testvoid test() throws ClassNotFoundException, SQLException{// 定义Spring配置文件的路径String xmlPath = "com/getJDBC/applicationContext.xml";// 初始化Spring容器,加载配置文件ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);Delete del = (Delete) applicationContext.getBean("del");del.deleteBook();}}

运行结果和数据库的变化如下,刚才添加的图书信息已经被成功删除:


至此,这个利用spring和JDBC结合的小实验算是成功了,但是spring本身就提供了用于访问数据库的接口,采用这种办法虽然可行,但是有些多余,也算是对前面spring知识的小应用,明天继续开spring的JDBC操作。

spring小实验 用spring的方式管理JDBC相关推荐

  1. Spring学习笔记4,注解方式管理Bean

    Spring框架的Bean管理注解方式的快速入门 1. 步骤一:下载Spring框架的开发包 解压后的目录结构如下 * docs – API和开发规范 * libs – jar包和源码      Sp ...

  2. (转)使用Spring注解方式管理事务与传播行为详解

    http://blog.csdn.net/yerenyuan_pku/article/details/52885041 使用Spring注解方式管理事务 前面讲解了怎么使用@Transactional ...

  3. Spring Boot实现简单的用户权限管理(超详细版)

    2020-11-21 更新:解决由于.yml文件引起的数据库链接问题 文章目录 一.前言 二.项目环境 三.项目文件结构 四.项目代码 数据库连接配置 1.Entity层 2.dao层 3.servi ...

  4. JAVAWEB开发之Spring详解之——Spring的入门以及IOC容器装配Bean(xml和注解的方式)、Spring整合web开发、整合Junit4测试

    Spring框架学习路线 Spring的IOC Spring的AOP,AspectJ Spring的事务管理,三大框架的整合 Spring框架概述 什么是Spring?  Spring是分层的Java ...

  5. 实验二 Spring AOP的使用

    目录 实验目的: 实验内容: 一.了解AOP(简介) 相关开发术语: 二.了解aop两种代理方式 三.使用spring AOP代理实现: 1.创建项目,引入相关架包 2.创建目标接口和实现类 3.创建 ...

  6. 2020-2-15一个web登录注册小程序与Spring初始+作业

    文章目录 建立一个Web登录注册小程序 1.先在Mysql数据库中新建一个数据库 2.在IDEA中新建一个工程 3.对项目进行简单分层 4.设计一个实体类 5.引入一个jdbc工具类 6.写一个测试类 ...

  7. Spring创建Bean的三种方式的使用和区别

    在学习Spring的时候,发现Spring的IOC(控制反转)为我们提供的三种创建Bean的方式. 1.Spring创建Bean的三种方式 这里采用XML配置,分别演示三种创建Bean的方式和代码. ...

  8. 将Bean放入Spring容器中的五种方式

    欢迎关注方志朋的博客,回复"666"获面试宝典 来源:blog.csdn.net/weixin_43741092/ article/details/120176466 将bean放 ...

  9. spring事物配置,声明式事务管理和基于@Transactional注解的使用

    事物管理对于企业应用来说是至关重要的,好使出现异常情况,它也可以保证数据的一致性. spring支持编程式事务管理和声明式事务管理两种方式. 编程式事务管理使用TransactionTemplate或 ...

最新文章

  1. javascript 代码_如何使您JavaScript代码保持简单并提高其可读性
  2. eclipse中格式化代码快捷键Ctrl+Shift+F失效的解决办法
  3. 获取窗口句柄模拟鼠标点击
  4. 腾讯面试题: 百度搜索为什么那么快? | 原力计划
  5. xftp无法链接Linux
  6. freemaker--hibernate
  7. flask-session组件
  8. 这7个web前端开发写代码软件,你过用几个?
  9. ARM指令集之乘法指令
  10. Tensorflow2.0之Minist手写数字识别
  11. 【project2016】解决project2016安装与office冲突问题
  12. opencv cvtColor 出错
  13. 为知笔记保存为html,为知笔记怎么保存网页 为知笔记保存网页教程
  14. 哈希值是什么? 哈希概念
  15. 名字作诗,拯救诗歌的最后一根稻草
  16. bp神经网络算法的优缺点,基于bp的神经网络算法
  17. web应用开发 -- 课堂作业 个人简介
  18. 手机python编程软件 turtle,安卓手机python编程软件
  19. 用dd实现linux硬盘备份
  20. 写CSDN文章时,生成下标、上标、竖线的方法

热门文章

  1. ScrollView垂直滚动控件
  2. [No0000D6]端口-进程查询.bat
  3. maven(11)-聚合多模块
  4. 深入理解l内核v4l2框架之video for linux 2(转载)
  5. HttpUtility.UrlEncode 方法
  6. 代码测试:简单用户注册信息验证
  7. Introduction to Materials Management 学习笔记
  8. 材料模拟计算机,材料计算机模拟技术
  9. mysql having关键字可以对group by后的结果再进行筛选
  10. svn--Eclipse版本的安装步骤