JdbcTemplate

news2024/11/26 2:49:30

JdbcTemplate

  • JdbcTemplate (概念和准备)
    • 1. 什么是 JdbcTemplate
      • (1) Spring 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库操作
    • 2. 准备工作
      • (1)配置文件的准备
      • (2)在 Spring 的配置文件中配置数据库的连接池
      • (3)配置 JdbcTemplate 对象,注入 DataSource
      • (4)创建 service 类,创建 dao 类,在 dao 注入 jdbaTemplate 对象
  • JdbcTemplate 操作数据库(添加)
    • 1. 对应数据库创建实体类
    • 2. 编写 service 和 dao
      • (1)在 dao 进行数据库的添加操作
      • (2)调用 JdbcTemplate 对象里面 update 方法实现添加操作
    • 3. 测试类

JdbcTemplate (概念和准备)

1. 什么是 JdbcTemplate

(1) Spring 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库操作

2. 准备工作

(1)配置文件的准备

<?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:aop = "http://www.springframework.org/schema/aop"
	   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/aop
	   		http://www.springframework.org/schema/aop/spring-aop.xsd
	   		http://www.springframework.org/schema/context
	   		http://www.springframework.org/schema/context/spring-context.xsd
	   	">
</beans>
<project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
		 xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>org.example</groupId>
	<artifactId>spring</artifactId>
	<version>1.0-SNAPSHOT</version>
	<packaging>jar</packaging>
	<name>spring</name>
	<url>http://maven.apache.org</url>
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>
		<!-- Spring依赖 -->
		<!-- 1.Spring核心依赖 -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>5.3.20</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-beans</artifactId>
			<version>5.3.20</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>5.3.20</version>
		</dependency>
		<!-- 2.Spring dao依赖 -->
		<!-- spring-jdbc包括了一些如jdbcTemplate的工具类 -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>5.3.20</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-tx</artifactId>
			<version>5.3.20</version>
		</dependency>
		<!-- 3.Spring web依赖 -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>5.3.20</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>5.3.20</version>
		</dependency>
		<!-- 4.Spring test依赖:方便做单元测试和集成测试 -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<version>5.3.20</version>
		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.13.2</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-dbcp2</artifactId>
			<version>2.9.0</version>
		</dependency>
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-pool2</artifactId>
			<version>2.11.1</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aspects</artifactId>
			<version>5.3.20</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aop</artifactId>
			<version>5.3.20</version>
		</dependency>
		<!--aop相关依赖-->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aop</artifactId>
			<version>5.3.20</version>
		</dependency>
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjrt</artifactId>
			<version>1.9.9.1</version>
		</dependency>
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjweaver</artifactId>
			<version>1.9.9.1</version>
		</dependency>
		<dependency>
			<groupId>org.assertj</groupId>
			<artifactId>assertj-core</artifactId>
			<version>3.23.1</version>
		</dependency>
		<!-- 加载 mysql 的依赖 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>8.0.30</version>
		</dependency>
	</dependencies>
</project>

(2)在 Spring 的配置文件中配置数据库的连接池

<?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:aop = "http://www.springframework.org/schema/aop"
	   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/aop
	   		http://www.springframework.org/schema/aop/spring-aop.xsd
	   		http://www.springframework.org/schema/context
	   		http://www.springframework.org/schema/context/spring-context.xsd
	   	">
	<!-- 配置dbcp的连接池 -->
	<bean name = "dataSource" class = "org.apache.commons.dbcp2.BasicDataSource">
		<property name = "driverClassName" value = "com.mysql.jdbc.Driver"/>
		<property name = "url" value = "jdbc:mysql://192.168.56.10:3306"/>
		<property name = "username" value = "root"/>
		<property name = "password" value = "root"/>
	</bean>
	<bean name = "jdbcTemplate" class = "org.springframework.jdbc.core.JdbcTemplate">
		<property name = "dataSource" ref = "dataSource"/>
	</bean>
</beans>

(3)配置 JdbcTemplate 对象,注入 DataSource

<?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:aop = "http://www.springframework.org/schema/aop"
	   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/aop
	   		http://www.springframework.org/schema/aop/spring-aop.xsd
	   		http://www.springframework.org/schema/context
	   		http://www.springframework.org/schema/context/spring-context.xsd
	   ">
	<!-- 配置dbcp的连接池 -->
	<bean name = "dataSource" class = "org.apache.commons.dbcp2.BasicDataSource">
		<property name = "driverClassName" value = "com.mysql.jdbc.Driver"/>
		<property name = "url" value = "jdbc:mysql://192.168.56.10:3306"/>
		<property name = "username" value = "root"/>
		<property name = "password" value = "root"/>
	</bean>
	<!-- JdbcTemplate 对象 -->
	<bean id = "jdbcTemplate" class = "org.springframework.jdbc.core.JdbcTemplate">
		<!-- 注入 dataSource -->
		<property name = "dataSource" ref = "dataSource"></property>
	</bean>
</beans>

(4)创建 service 类,创建 dao 类,在 dao 注入 jdbaTemplate 对象

  • 开启组件扫描
<?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:aop = "http://www.springframework.org/schema/aop"
	   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/aop
	   		http://www.springframework.org/schema/aop/spring-aop.xsd
	   		http://www.springframework.org/schema/context
	   		http://www.springframework.org/schema/context/spring-context.xsd
		">
	<!-- 开启组件扫描 -->
	<context:component-scan base-package = "com.fairykunkun"></context:component-scan>
	<!-- 配置dbcp的连接池 -->
	<bean name = "dataSource" class = "org.apache.commons.dbcp2.BasicDataSource">
		<property name = "driverClassName" value = "com.mysql.jdbc.Driver"/>
		<property name = "url" value = "jdbc:mysql://192.168.56.10:3306"/>
		<property name = "username" value = "root"/>
		<property name = "password" value = "root"/>
	</bean>
	<!-- JdbcTemplate 对象 -->
	<bean id = "jdbcTemplate" class = "org.springframework.jdbc.core.JdbcTemplate">
		<!-- 注入 dataSource -->
		<property name = "dataSource" ref = "dataSource"></property>
	</bean>
</beans>
  • service
package com.fairykunkun.service;
import com.fairykunkun.dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class BookService {
	// 注入 dao
	@Autowired
	private UserDao userDao;
}
  • dao
package com.fairykunkun.dao;
public interface BookDao {
}
package com.fairykunkun.dao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
@Repository
public class BookDaoImpl implements BookDao {
	// 注入 jdbcTemplate
	@Autowired
	private JdbcTemplate jdbcTemplate;
}

JdbcTemplate 操作数据库(添加)

1. 对应数据库创建实体类

package com.fairykunkun.entity;
public class Book {
	private String bookId;
	private String bookName;
	private String bstatus;
	public String getBookId ( ) {
		return bookId;
	}
	public void setBookId ( String bookId ) {
		this.bookId = bookId;
	}
	public String getBookName ( ) {
		return bookName;
	}
	public void setBookName ( String bookName ) {
		this.bookName = bookName;
	}
	public String getBstatus ( ) {
		return bstatus;
	}
	public void setBstatus ( String bstatus ) {
		this.bstatus = bstatus;
	}	
	@Override
	public String toString ( ) {
		return "Book{" +
				"bookId='" + bookId + '\'' +
				", bookName='" + bookName + '\'' +
				", bstatus='" + bstatus + '\'' +
				'}';
	}
}

2. 编写 service 和 dao

(1)在 dao 进行数据库的添加操作

(2)调用 JdbcTemplate 对象里面 update 方法实现添加操作

package com.fairykunkun.dao;
import com.fairykunkun.entity.Book;
public interface BookDao {
	void add ( Book book );
}
package com.fairykunkun.dao;
import com.fairykunkun.entity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
@Repository
public class BookDaoImpl implements BookDao {
	// 注入 jdbcTemplate
	@Autowired
	private JdbcTemplate jdbcTemplate;
	// 添加的方法
	@Override
	public void add ( Book book ) {
		// 创建 sql 语句
		String sql = "insert into book_t (bookname,bstatus) values (?,?)";
		// 调用方法实现
		Object[] args = { book.getBookName ( ) , book.getBstatus ( ) };
		int update = jdbcTemplate.update ( sql , args );
		System.out.println ( sql );
		System.out.println ( update );
	}
}
package com.fairykunkun.service;
import com.fairykunkun.dao.BookDao;
import com.fairykunkun.entity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class BookService {
	// 注入 dao
	@Autowired
	private BookDao bookDao;
	// 添加的方法
	public void addBook ( Book book ) {
		bookDao.add ( book );
	}	
}

update (String sql , Object … args)

  • 有两个参数
  • 第一个参数: sql 语句
  • 第二个参数:可变参数

在数据创建表

create table book_t (
    id int primary key auto_increment,
    bookname varchar(100),
    bstatus varchar(20)
);

3. 测试类

package com.fairykunkun;
import com.fairykunkun.service.BookService;
import com.fairykunkun.entity.Book;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestJdbcTemplate {
	@Test
	public void testBook ( ) {
		ApplicationContext context =
				new ClassPathXmlApplicationContext ( "bean13.xml" );
		BookService bookService = context.getBean ( "bookService" , BookService.class );
		Book book = new Book ( );
		book.setBookName ( " Java 编程 " );
		book.setBstatus ( "可用" );
		bookService.addBook ( book );
	}
}

测试结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/101905.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

100份PDF合并还不到3分钟,这2个方法非常简单,请低调使用

PDF文件作为我们工作中最为常见的“文件格式”之一。似乎哪里都有它的身影&#xff0c;有时我们还需要对PDF文件进行编辑和处理。那么&#xff0c;在众多PDF编辑和处理操作上&#xff0c;PDF合并可以算得上使用频率很高的存在。不过大多数小伙伴们并不清楚具体的操作方式是怎样…

Feign的另一种玩法-动态Feign

1.Feign传统方式的不足 ①.在微服务架构中,当我们使用Feign传统方式进行服务调用的时候,需要在每个服务消费者中添加FeignClient接口,编写对应的方法,而且当服务生产者Handler新增方法之后,服务消费者也要在FeignClient接口中添加方法,这样的话,会有些累赘. 那么能不能在调用服…

[附源码]计算机毕业设计Node.js畅玩电竞网咖购物点餐网站(程序+LW)

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

R语言 线性混合效应模型实战案例

介绍 最近我们被客户要求撰写关于性混合效应模型的研究报告&#xff0c;包括一些图形和统计输出。首先&#xff0c;请注意&#xff0c;围绕多层次模型的术语有很大的不一致性。例如&#xff0c;多层次模型本身可能被称为分层线性模型、随机效应模型、多层次模型、随机截距模型…

web大学生网页作业成品 蛋糕店美食餐饮网站设计与实现(HTML+CSS+JavaScript)

&#x1f380; 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

代码随想录训练营第54天|LeetCode 392.判断子序列、115.不同的子序列

参考 代码随想录 题目一&#xff1a;LeetCode 392.判断子序列 确定dp数组及其下标的含义 dp[i][j]&#xff1a;s字符串中0&#xff5e;i字符构成的子串和t字符串中0&#xff5e;j字符构成的子串的最长公共子序列的长度。 确定递推公式 dp[i][j]有两个可能的来源&#xff1a;…

内点法求最优潮流和微电网调度(风、光、蓄电池、燃油机)(Matlab实现)

目录 1 概述 2 案例 2.1算例描述 2.2 数据 3 一点小知识 4 Matlab代码实现 1 概述 由于电力系统本身的复杂性,电力潮流优化具有规模大,约束条件多和非线性的特点。通过对最优潮流的求解,最终达到优化已有资源、降低发电厂耗量成本、减少电网线路损耗、提高电力系统输电…

JSON的定义、基本使用、以及和对象之间的相互转换

json的定义与基本使用 <script>//定义jsonvar json{"name" : "张三","age" : "18岁","addr" : ["北京","上海","天津"]}//获取数据console.log(json.age)console.log(json.name)consol…

【算法】可解释机器学习-CAM / Grad_CAM(Datawhale)

可解释机器学习-CAM / Grad_CAM一、CAM1.CAM算法介绍2.CAM的特点3.CAM算法的缺点二、Grad_CAM1.Grad_CAM算法介绍2.Grad_CAM算法优点3.Grad_CAM算法缺点4.Grad_CAM算法的变种1&#xff09;Grad_CAM算法2&#xff09;ScoreCAM算法3&#xff09;LayerCAM算法一、CAM 1.CAM算法介…

jsp+ssm计算机毕业设计高铁售票管理系统【附源码】

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; JSPSSM mybatis Maven等等组成&#xff0c;B/S模式 Mave…

stack和queue

stack&#xff1a;https://cplusplus.com/reference/stack/stack/?kwstack 1. stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除只能从容器的一端进行 元素的插入与提取操作。 2. stack是作为容器适配器被实现的&#xff0c;容器…

设计模式之命令模式

Command design pattern 命令模式的概念、命令模式的结构、命令模式的优缺点、命令模式的使用场景、命令模式的实现示例、命令模式的源码分析 1、命令模式的概念 命令模式&#xff0c;即将请求封装成一个对象&#xff0c;使发出请求的责任和执行请求的责任分离开。这样两者之间…

App自动化测试【1】Appium的原理解读

1.Appium的架构原理 Appium的架构原理如图所示&#xff0c;由客户端&#xff08;Appium Client&#xff09;和服务器&#xff08;Appium Server&#xff09;两部分组成&#xff0c;客户端与服务器端通过JSON Wire Protocol进行通信。 2.Appium原理解读 客户端Client&#x…

Win10自动更新怎么永久关闭?服务、注册表、组策略、计划任务中全方位设置,永久解决!

Win10自动更新就像打不死的小强&#xff0c;不管怎么关闭&#xff0c;之后还是会自动更新&#xff0c;让不少小伙伴颇为不爽。今天通过4步&#xff0c;在服务、注册表、组策略、计划任务中全方位设置&#xff0c;彻底关闭Win10自动更新&#xff0c;感兴趣的小伙伴不妨试试吧。 …

Python:requirements.txt, environment.yml简介

文章目录简介requirements.txtenvironment.yml小结简介 最近安装了一些从github上clone下载的开源python软件包&#xff0c;经历了许许多多的酸甜苦辣。在python软件包&#xff0c;通常都会包含requirements.txt, environment.yml, setup.py三者之中某些或者全部&#xff0c;一…

11.注解开发依赖注入及管理第三方Bean

1. 注解开发依赖注入 1.1 使用Autowired注解开启自动装配模式 Service public class BookServiceImpl implements BookService {//Autowired&#xff1a;注入引用类型&#xff0c;自动装配模式&#xff0c;默认按类型装配Autowiredprivate BookDao bookDao;public void save(…

【OpenCV+Qt】实现简易视频播放器——支持进度条拖动

OpenCV实现视频播放器&#xff0c;其思路大致就是在线程中使用OpenCV中的VideoCapture循环读取本地视频的每一帧Mat&#xff0c;然后发送到界面转换成QImage进行显示&#xff0c;而进度条拖动则用到了VideoCapture中的set函数&#xff0c;进度条则是使用Qslider&#xff1b;并且…

记录安装 fenics 的问题

因为 fenics 官方更新后可能版本会出现有时效的问题, 所以也记录一下时间. Windows 系统下安装最大的问题 2022-12-19 记录. Windows 系统下本来是想通过 Anaconda 安装 fenics 的, 创建好虚拟环境后, 利用 conda install -c conda-forge fenics 进行安装, 但是直接提示 Pack…

操作系统,计算机网络,数据库刷题笔记14

操作系统&#xff0c;计算机网络&#xff0c;数据库刷题笔记14 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xf…

【OpenSourceC#】ET框架

1. 前言 ET算是我刚接触客户端时最早知道的框架&#xff0c;ET我最初眼馋的还是他的双端功能。包揽前后端的功能&#xff0c;这个很有吸引力。但是那时候对我来说这框架太复杂了&#xff0c;没法看。 这两天又来看看&#xff0c;曾经很多不懂的地方现在都能看懂了&#xff0c…