返回顶部
首页 > 资讯 > 后端开发 > Python >Spring框架的JdbcTemplate使用
  • 240
分享到

Spring框架的JdbcTemplate使用

2024-04-02 19:04:59 240人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录JdbcTemplate 概述对JdbcTemplate进行分步演示1:测试数据源2:为ioc容器配置一个JdbcTemplate3:更新4:批量插入5:查询emp_id=5的记

JdbcTemplate 概述

在之前的javaweb学习中,学习了手动封装JdbcTemplate,其好处是通过(sql语句+参数)模板化了编程。而真正的JdbcTemplate类,是spring框架为我们写好的。它是 Spring 框架中提供的一个对象,是对原始 Jdbc api 对象的简单封装。除了JdbcTemplate,spring 框架还为我们提供了很多的操作模板类。

Spring框架的JdbcTemplate在spring-jdbcjar包中,,除了要导入这个 jar 包
外,还需要导入一个 spring-tx的jar包(它是和事务相关的)。当然连接池的jar包也不能忘记,这里使用的是c3p0

使用JdbcTemplate一定要导入Spring的数据库模块的三个jar:

在这里插入图片描述

使用JdbcTemplate可以快捷的操作数据库,本文章针对JdbcTemplate进行演示。本文所使用的数据库表为jdbctemplate中的employee,表的内容如下。

在这里插入图片描述

对JdbcTemplate进行分步演示

1:测试数据源

数据库配置文件

jdbctemplate数据库在本地数据库中已经创建。


jdbc.user=root
jdbc.passWord=Hudie
jdbc.jdbcUrl=jdbc:Mysql://localhost:3306/jdbctemplate
jdbc.driverClass=com.mysql.jdbc.Driver

xml配置文件


	<!-- 引入外部配置文件 -->
	<context:property-placeholder location="classpath:dbconfig.properties" />
		
	<!-- 配置数据源 -->
	<bean id="dataSource"
		class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="user" value="${jdbc.user}"></property>
		<property name="password" value="${jdbc.password}"></property>
		<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
		<property name="driverClass" value="${jdbc.driverClass}"></property>
	</bean>

测试获取连接


public class txTest {
	ApplicationContext ioc = new ClassPathXmlApplicationContext("ApplicationContext.xml");

	@Test
	public void test() throws SQLException {
		DataSource bean = ioc.getBean(DataSource.class);
		Connection connection = bean.getConnection();
		System.out.println(connection);
		connection.close();
	}
}

执行测试,成功获取到连接。

在这里插入图片描述

2:为IoC容器配置一个JdbcTemplate

如果通过编码来进行获得一个JdbcTemplate对象,可以使用new JdbcTemplate(dataSource);,不过由于这个对象经常使用,将其放在IoC容器中更合适。
具体配置如下:


	<!-- Spring提供了一个JdbcTmplate来操作数据库 -->
	<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
		<constructor-arg name="dataSource" ref="dataSource"></constructor-arg>
	</bean>

测试


public class txTest {
	ApplicationContext ioc = new ClassPathXmlApplicationContext("ApplicationContext.xml");
	JdbcTemplate jdbcTemplate= ioc.getBean(JdbcTemplate.class);

	@Test
	public void test2() {
		System.out.println(jdbcTemplate);
	}
}

成功打印出JdbcTemplate对象。

在这里插入图片描述

3:更新

将emp_id=5的记录salary字段改为1300.00

jdbcTemplate.updat():表示更新一条记录。


	@Test
	public void test3() {
		String sql = "update employee set salary = ? where emp_id=?;";
		int update = jdbcTemplate.update(sql, 1300.00, 5);
		System.out.println("更新员工表,影响" + update + "行");
	}

在这里插入图片描述

4:批量插入

jdbcTemplate.batchUpdate(sql, batchArgs):表示批量进行插入,插入一个list集合,返回的是影响的行数。


	@Test
	public void test4() {

		String sql = "insert into employee (emp_name,salary) values(?,?)";
		List<Object[]> batchArgs = new ArrayList<Object[]>();
		batchArgs.add(new Object[] { "张三", 998.98 });
		batchArgs.add(new Object[] { "李四", 998.98 });
		batchArgs.add(new Object[] { "王五", 998.98 });
		batchArgs.add(new Object[] { "赵六", 998.98 });

		// List的长度就是sql语句执行的次数
		int[] is = jdbcTemplate.batchUpdate(sql, batchArgs);
		for (int i : is) {
			System.out.println(i);
		}
	}

int[] is = jdbcTemplate.batchUpdate(sql, batchArgs);返回的结果是影响的行数。

在这里插入图片描述

5:查询emp_id=5的记录,封装为一个Java对象返回。

创建JavaBean


package com.gql.bean;

public class Employee {
	private Integer empId;
	private String empName;
	private Double salary;
	//省略setter、getter与toString方法。
}

查询并封装单条记录


	@Test
	public void test5() {
		String sql = "select emp_id empId,emp_name empName,salary from employee where emp_id=?";
		// rowMapper:规定每一行记录和JavaBean的属性如何映射
		Employee employee = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(Employee.class), 5);
		System.out.println(employee);
	}

在这里插入图片描述

6:查询salary>4000的记录,封装为List集合返回


	@Test
	public void test6() {
		String sql = "select emp_id empId,emp_name empName,salary from employee where salary>?";
		List<Employee> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(Employee.class), 4000);
		for (Employee employee : list) {
			System.out.println(employee);
		}
	}

成功将salary>400的记录封装进list集合。

在这里插入图片描述

7:查询最大的salary

使用mysql的max函数可以获得最大的salary,调用queryForObject方法,返回Double类型。


	@Test
	public void test7() {
		String sql = "select max(salary) from employee";
		Double object = jdbcTemplate.queryForObject(sql, Double.class);
		System.out.println("最高工资是:" + object);
	}

在这里插入图片描述

8:使用具名参数SQL插入一条员工记录,并以Map形式传入参数值。

Spring中使用namedParameterJdbcTemplate来进行含有具名SQL的操作。

将namedParameterJdbcTemplate加到IoC容器中。


	<!-- 配置一个具名参数的Jdbctemplate -->
	<bean id="namedParameterJdbcTemplate" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
		<!-- 使用构造器注入一个数据源 -->
		<constructor-arg name="dataSource" ref="dataSource"></constructor-arg>
	</bean>

在测试中以Map形式传入参数值。


public class txTest {
	ApplicationContext ioc = new ClassPathXmlApplicationContext("ApplicationContext.xml");
	JdbcTemplate jdbcTemplate = ioc.getBean(JdbcTemplate.class);
	NamedParameterJdbcTemplate namedJdbcTemplate = ioc.getBean(NamedParameterJdbcTemplate.class);

	@Test
	public void test9() {
		String sql = "insert into employee (emp_name,salary) values(:empName,:salary)";
		Map<String, Object> paramMap = new HashMap<>();
		// 将所有具名参数的值都放在map中
		paramMap.put("empName", "小红");
		paramMap.put("salary", 12000.00);
		int update = namedJdbcTemplate.update(sql, paramMap);
		System.out.println(update);
	}
}

9:使用具名参数SQL插入一条员工记录,并以SqlparamSource传入参数值。

与上一条实验类似,只是选用了不同的参数类型。


	@Test
	public void test10() {
		String sql = "insert into employee (emp_name,salary) values(:empName,:salary)";
		Employee employee = new Employee();
		employee.setEmpName("小蓝");
		employee.setSalary(9999.00);
		int i = namedJdbcTemplate.update(sql, new BeanPropertySqlParameterSource(employee));
		System.out.println(i);
	}

到此这篇关于Spring框架的JdbcTemplate使用的文章就介绍到这了,更多相关Spring JdbcTemplate内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Spring框架的JdbcTemplate使用

本文链接: https://lsjlt.com/news/135543.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Spring框架的JdbcTemplate使用
    目录JdbcTemplate 概述对JdbcTemplate进行分步演示1:测试数据源2:为IoC容器配置一个JdbcTemplate3:更新4:批量插入5:查询emp_id=5的记...
    99+
    2024-04-02
  • 超细致讲解Spring框架 JdbcTemplate的使用
    目录JdbcTemplate基本使用1-JdbcTemplate基本使用-概述(了解)2-JdbcTemplate基本使用-开发步骤(理解)3-JdbcTemplate基本使用-快速...
    99+
    2024-04-02
  • Spring框架+jdbcTemplate实现增删改查功能
    SpringMVC架构(Model(实体类),Service,Controller层) Controller(接收参数调用业务层)–>Service(调用持久层,处理业务逻辑)...
    99+
    2024-04-02
  • 【Spring】JdbcTemplate的使用方法
    JdbcTemplate(概念和准备) 什么是 JdbcTemplate Spring 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库操作 准备工作 引入相关 jar 包 在 spring 配置文件配...
    99+
    2018-06-11
    【Spring】JdbcTemplate的使用方法 数据库入门 数据库基础教程 数据库 mysql
  • Java 自定义Spring框架以及Spring框架的基本使用
    从现在开始,大家可以跟随着我的脚步来自定义一个属于自己的Spring框架。但是,在学习自定义Spring框架之前,我们得先来回顾一下Spring框架的基本使用。知晓了Spring框架...
    99+
    2024-04-02
  • Spring JdbcTemplate怎么用
    这篇文章将为大家详细讲解有关Spring JdbcTemplate怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。声明一下,我的spring包是1.2.6的版本。Spring 有很多很好的开源数据源,...
    99+
    2023-06-03
  • Java Spring JdbcTemplate基本使用详解
    目录JdbcTemplate概述JdbcTemplate开发步骤JdbcTemplate快速入门Spring产生JdbcTemplate对象JdbcTemplate概述 它是spri...
    99+
    2024-04-02
  • JdbcTemplate如何在spring boot中使用
    JdbcTemplate如何在spring boot中使用?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Spring对数据库的操作在jdbc上面做了深层次的封装...
    99+
    2023-05-31
    springboot emp jdbctemplate
  • Spring框架JdbcTemplate数据库事务管理完全注解方式
    目录Spring JdbcTemplate事务注解配置类方式配置完全注解方式一、创建配置类二、测试注解方式的事务管理Spring JdbcTemplate事务注解 配置类方式配置 在...
    99+
    2024-04-02
  • spring框架怎么使用redis
    "spring框架使用redis的方法:在pom.xml中导入redis的相关依赖,例如:<dependency><groupId>redis.clients</groupId><arti...
    99+
    2024-04-02
  • Spring security框架如何使用
    本篇内容介绍了“Spring security框架如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!简介Spring Secu...
    99+
    2023-07-05
  • 一文详解Spring security框架的使用
    目录简介实例简介 Spring Security是一个基于Spring框架的安全认证和授权框架,它提供了一套全面的安全解决方案,可以在Web应用、移动应用和Web服务等不同场景下使用...
    99+
    2023-03-23
    Spring security框架使用 Spring security框架 Spring security
  • Spring Retry重试框架的使用讲解
    目录命令式声明式(注解方式)1. 用法2. RetryTemplate3. RecoveryCallback4. Listeners5. 声明式重试重试的使用场景比较多,比如调用远程...
    99+
    2022-11-13
    Spring Retry重试 Spring Retry
  • Spring框架JdbcTemplate数据库事务管理完全注解方式是什么
    这篇“Spring框架JdbcTemplate数据库事务管理完全注解方式是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“...
    99+
    2023-06-30
  • 怎么在java中使用Spring框架
    怎么在java中使用Spring框架?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式系统...
    99+
    2023-06-14
  • Spring如何使用Validation验证框架
    这篇文章主要介绍了Spring如何使用Validation验证框架,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、介绍Spring Validation 验证框架对参数的验...
    99+
    2023-06-20
  • Spring框架如何使用二维码?
    随着移动互联网的快速发展,二维码已经成为了一种非常流行的信息识别方式。在很多场景下,我们都可以看到二维码的身影,比如在超市、商场、地铁站等公共场所,我们可以通过扫描二维码获取更多的信息或者完成一些交易操作。在这篇文章中,我们将介绍如何在S...
    99+
    2023-10-21
    二维码 spring leetcode
  • 使用Spring注入Hibernate验证框架
    目录Spring注入Hibernate验证框架Spring配置文件Hibernate内置的验证约束注解如下表所示springmvc使用Hibernate的校验框架validation...
    99+
    2024-04-02
  • 使用Spring框架有哪些好处
    这篇文章主要介绍“使用Spring框架有哪些好处”,在日常操作中,相信很多人在使用Spring框架有哪些好处问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”使用Spring框架有哪些好处”的疑惑有所帮助!接下来...
    99+
    2023-06-02
  • 如何在Spring框架中使用NumPy?
    Spring框架是一个非常流行的Java开发框架,而NumPy则是一个Python科学计算库。虽然它们似乎没有直接的关系,但是在某些情况下,我们可能需要在Spring框架中使用NumPy。本文将介绍如何在Spring框架中使用NumPy,...
    99+
    2023-07-30
    spring numpy npm
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作