Spring使用jdbcTemplate

JDBC单表查询 多表查询 嵌套查询 1.查询 1.创建数据库 t_emps create table t_emps ( id varchar(32) not null primary key, name varchar(20) null, sex varchar(3) null, birth date null, salary double null, deptId int null ); t_dept 阅读详情

JdbcTemplate简介

  1. 为了使JDBC更加易于使用,Spring在JDBC API上定义了一个抽象层,以此建立一个JDBC存取框架
  2. 作为Spring JDBC框架的核心,JDBC模板的设计目的是为不同类型的JDBC操作提供模板方法,每个模板方法都能控制整个过程,并允许覆盖过程中的特定任务。通过这种方式,可以在尽可能保留灵活性的情况下,将数据库存取的工作量降到最低。

代码示例:

首先是数据库的配置。数据库中包含employee和department两张表。

1.jdbc.properties文件

jdbc.user=scott
jdbc.password=tiger
jdbc.driverClass=oracle.jdbc.driver.OracleDriver
jdbc.jdbcUrl=jdbc:oracle:thin:@localhost:1521:orcl

jdbc.initialPoolSize=5
jdbc.maxPoolSize=10

 

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: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/context http://www.springframework.org/schema/context/spring-context-4.1.xsd">
    <context:component-scan base-package="com.yl.spring.jdbc"></context:component-scan>

    <!-- 导入属性文件 -->
    <context:property-placeholder location="classpath:db.properties"/>
    <!-- 配置c3p0数据源 -->
    <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="driverClass" value="${jdbc.driverClass}"></property>
        <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
       
        <property name="initialPoolSize" value="${jdbc.initialPoolSize}"></property>
        <property name="maxPoolSize" value="${jdbc.maxPoolSize}"></property>
    </bean>

    <!-- 配置Spring的JdbcTemplate -->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
</beans>

 package com.yl.spring.jdbc;

public class Employee {
private Integer id;
  private String lastName;
    private String email;
   
    private Department department;

    public Integer getId() {
        return id;
   }

    public void setId(Integer id) {
        this.id = id;
   }

    public String getLastName() {
        return lastName;
   }

    public void setLastName(String lastName) {
        this.lastName = lastName;
   }

    public String getEmail() {
        return email;
   }

    public void setEmail(String email) {
        this.email = email;
   }

    public Department getDepartment() {
        return department;
   }

    public void setDepartment(Department department) {
        this.department = department;
   }

   @Override
    public String toString() {
        return "Employee [id=" + id + ", lastName=" + lastName + ", email="
                + email + ", department=" + department + "]";
   }
   
   
}
package com.yl.spring.jdbc;
public class Department {        private Integer id;        private String name;        public Integer getId() {            return id;        }        public void setId(Integer id) {            this.id = id;        }        public String getName() {            return name;        }        public void setName(String name) {            this.name = name;        }        @Override        public String toString() {            return "Department [id=" + id + ", name=" + name + "]";        }                  }
 package com.yl.spring.jdbc;
 import Java.sql.SQLException;  import Java.util.ArrayList;  import Java.util.List;    import Javax.sql.DataSource;    import org.junit.Test;  import org.springframework.context.ApplicationContext;  import org.springframework.context.support.ClassPathXmlApplicationContext;  import org.springframework.jdbc.core.BeanPropertyRowMapper;  import org.springframework.jdbc.core.JdbcTemplate;  import org.springframework.jdbc.core.RowMapper;    public class JDBCTest {            private ApplicationContext ctx = null;      private JdbcTemplate jdbcTemplate;      private EmployeeDao employeeDao;            {          ctx = new ClassPathXmlApplicationContext("applicationContext.xml");          jdbcTemplate = (JdbcTemplate)ctx.getBean("jdbcTemplate");          employeeDao = ctx.getBean(EmployeeDao.class);      }            @Test      public void testEmployeeDao() {          System.out.println(employeeDao.get(1));      }            /**       * 获取单个列的值,或做统计查询       */      @Test      public void testQueryForObject2() {          String sql = "SELECT count(id) FROM employee";          long count = jdbcTemplate.queryForObject(sql, Long.class);          System.out.println(count);      }            /**       * 查到实体类的集合       */      @Test      public void testQueryForList() {          String sql = "SELECT id, last_name, email FROM employee WHERE id > ?";          RowMapper<Employee> rowMapper = new BeanPropertyRowMapper<Employee>(Employee.class);          List<Employee> employees = jdbcTemplate.query(sql, rowMapper, 5);          System.out.println(employees);      }            /**       * 从数据库中获取一条记录,实际得到对应的一个对象       * 1.RowMapper指定如何映射结果集的行,常用的实现类为BeanPropertyRowMapper       * 2.使用SQL中列的别名完成列名和类的属性名的映射。例如last_name和lastName       * 3.不支持级联属性。JdbcTemplate到底是一个JDBC工具,不是ORM框架。       */      @Test      public void TestForQueryObject() {          String sql = "SELECT id, last_name, email FROM employee WHERE id = ?";          RowMapper<Employee> rowMapper = new BeanPropertyRowMapper<Employee>(Employee.class);                    Employee employee = jdbcTemplate.queryForObject(sql, rowMapper, 1);          System.out.println(employee);      }            /**       * 批量执行更新:批量的INSERT, UPDATE, DELETE       * 最后一个参数是Object[]的list类型:因为修改一条记录需要一个Object的数组,那么多条就是需要多个Object的数组       */      @Test      public void testBatchUpdate() {          String sql = "INSERT INTO employee(id, last_name, email, dept_id) VALUES(?, ?, ?, ?)";          List<Object[]> batchArgs = new ArrayList<Object[]>();          batchArgs.add(new Object[]{6, "AA", "[email protected]", 1});          batchArgs.add(new Object[]{7, "BB", "[email protected]", 2});          batchArgs.add(new Object[]{8, "CC", "[email protected]", 3});          batchArgs.add(new Object[]{9, "DD", "[email protected]", 3});          batchArgs.add(new Object[]{10, "EE", "[email protected]", 2});          jdbcTemplate.batchUpdate(sql, batchArgs);      }            /**       * 执行INSERT, UPDATE, DELETE       */      @Test      public void testUpdate() {          String sql = "UPDATE employee SET last_name=? WHERE id=?";          jdbcTemplate.update(sql, "Jack", 5);      }            @Test      public void test() throws SQLException {          DataSource dataSource = (DataSource)ctx.getBean("dataSource");          System.out.println(dataSource.getConnection());      }    }


Spring JdbcTemplate基本使用 Spring JdbcTemplate基本使用 文章目录Spring JdbcTemplate基本使用1.JdbcTemplate概述2. JdbcTemplate开发步骤3.快速入门4. Spring产生JdbcTemplate对象 1.JdbcTemplate概述 它是spring框架中提供的一个对象,是对原始繁琐的Jdbc API对象的简单封装。spring框架为我们提供了很多的操作模板类。例如:操作关系型数据的JdbcTemplate和HibernateTemplate,操作nosql数据库的Red 阅读详情

相关推荐

网络安全隔离技术解析:单向网闸与双向网闸的核心差异与应用场景

本文深入解析网络安全隔离技术中的单向网闸与双向网闸,详细比较两者的核心差异与应用场景。单向网闸通过物理隔离确保数据单向流动,适用于金融交易等高风险场景;双向网闸则支持严格安检的双向数据交互,常见于医疗、政务等领域。文章还提供了选型建议和技术发展趋势,帮助读者根据安全需求和业务场景选择最适合的网闸解决方案。

weixin_29323365的博客 527

MyBatis之Mapper XML 文件详解(四)-JDBC 类型和嵌套查询

支持的 JDBC 类型为了未来的参考,MyBatis 通过包含的 jdbcType 枚举型,支持下面的 JDBC 类型。BITFLOATCHARTIMESTAMPOTHERUNDEFINEDTINYINTREALVARCHARBINARYBLOBNVARCHARSMALLINTDOUBLELONGVARCHARVARBINARYCLOBNCHARINTEGERNUMERIC...

weixin_34275734的博客 539

CAN信号定义避坑指南:Kvaser Database Editor里Byteorder和Bitpos设置的那些‘坑’

本文详细解析了在Kvaser Database Editor中配置CAN信号时,字节序(Byteorder)和起始位(Bitpos)设置的常见错误及解决方案。通过实际案例和验证技巧,帮助工程师避免DBC文件配置中的陷阱,确保车载电子系统的稳定通信。

weixin_28678831的博客 360

JdbcTemplate 层级多数据源查询

业务场景,作为下游系统,对上游多个系统有读,没写操作。 依赖: <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.8</version> </dependency> packag

meser88的博客 1442

银河麒麟桌面系统 必会操作 | 加装双系统(麒麟桌面系统+Windows系统)的详细方法(含常见故障和解决方法)

装好麒麟桌面操作系统的电脑上、再加装Windows 操作系统的详细方法;和在已经装好Windows系统的电脑上、再加装麒麟桌面操作系统的详细方法;含加装双系统过程中常见问题的解决方法。

qq_33216613的博客 2412

一文弄懂Word2Vec之skip-gram(含详细代码)

目录 前言 一、什么是Skip-gram算法 二、目标是什么 三、定义表示法 3.1 one-hot向量 3.2 词向量(word vector) 3.3 单词矩阵 3.4 单词相似度 3.5 softmax函数 3.6算法过程 3.7 求softmax 四、skipgram代码实现 4.1 如何把词转换为向量 4.2 CBOW和Skip-gram的算法实现 Skip-gram的理想实现 Skip-gram的实际实现 4.3 使用Pytorch实现Skip-gram .

Python,数据分析,机器学习,深度学习 1万+

Java中多表查询之JdbcTemplate

将获取连接池整合成工具类,然后利用JdbcTemplate对多个表进行查询,并将结果输出 工具类代码: import com.alibaba.druid.pool.DruidDataSourceFactory; import javax.sql.DataSource; import java.io.IOException; import java.io.InputStream; impor...

xilin6664的博客 4819

Ubuntu Rtx3090 Cuda11.7 安装 pytorch3d

pytorch ubuntu pytorch3d 安装

G果的博客 2273

JdbcTemplate的关联查询与批量添加

一、开发环境 系统:windows10 开发工具:IDEA jdk:1.8 框架:Maven 二、关联查询 若涉及到多个字段的查询,JdbcTemplate的查询方法query(sql,class)里的class只能是String.class或Integer.class,实用性不高,必须使用匿名内部类自定义一个返回的对象。否则会抛出异常: Incorrect column cou

hanziang1996的博客 3482

sam3.1 部署笔记 推理封装

sam3.1 部署笔记

jacke121的专栏 423

02-Redis 核心特性与数据结构详解:揭秘高性能的技术内核

本文深度拆解 Redis 高性能的技术内核:揭秘其凭“内存存储 + C 语言开发” 实现微秒级延迟、10 万 + QPS 的性能优势;详解 5 种基础数据类型(String/Hash 等)与 4 种扩展数据类型(Stream/Geospatial 等)的特性及场景;还介绍多语言支持、RDB/AOF 持久化、主从复制 / 哨兵 / 集群等高可用方案,助读者掌握 Redis 技术核心与实践逻辑。

蜗牛老师,专注编程领域 996

Spring07 —— Spring JdbcTemplate的使用

jdbcTemplate 是 Spring JDBC 核心包(core)中的核心类,它可以通过配置文件、注解、Java 配置类等形式获取数据库的相关信息,实现了对 JDBC 开发过程中的驱动加载、连接的开启和关闭、SQL 语句的创建与执行、异常处理、事务处理、数据类型转换等操作的封装。我们只要对其传入SQL 语句和必要的参数即可轻松进行 JDBC 编程。

春和的博客 1205

TIP 2024 | 跨类与跨域语义增强用于域泛化

域泛化方法旨在通过多样化的源域帮助开发一个在未知目标域上表现良好的通用模型。数据增强已被证明是增强计算机视觉中域泛化的有效方法。最近,基于语义级别的数据增强取得了显著成果。然而,这些方法主要集中在从类内和域内采样语义方向,限制了源域的多样性。为了解决这个问题,作者提出了一种新的方法,称为跨类与跨域语义增强(CDSA)。首先,作者引入了一种基于采样的方法CrossSmooth,从跨类中获取语义方向。然后,CrossVariance通过采样语义方向获取不同域的样式。

小白学视觉 211

Spring —— JdbcTemplate

一、概述 二、对象创建 2.1 需要导入的 jar 包 2.2 创建 JdbcTemplate 对象 2.3 配置 Spring 内置数据源 一、概述 JdbcTemplate 是 Spring 框架中提供的一个对象,是对原始 Jdbc API 对象的简单封装。Spring 框架为我们提供了很多 的操作模板类。 对象创建 2.1 需要导入的 jar 包 <dependencies&...

IF 822

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Spring boot jdbcTemplate

文章目录上一节 Spring boot lombok源码下一节 Spring boot 数据库连接池Spring boot jdbcTemplate 上一节 Spring boot lombok Spring boot lombok 源码 springboot学习指南 下一节 Spring boot 数据库连接池 Spring boot 数据库连接池 Spring boot jdbcTemplate ...

xiao/du的博客 4201

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Spring之JdbcTemplate的使用

JdbcTemplate是Spring 框架中提供的一个对象,是对原始 Jdbc API 对象的简单封装。

积跬步,至千里。 1277

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Spring之 JdbcTemplate的使用

目录 1.什么是 jdbcTemplate? 2.使用前所做的准备 3.如何使用 jdbcTemplate(增、删、改、查) 4.实战例子 1、什么是JdbcTemplate 它是 Spring 框架中提供的一个对象,是对原始 Jdbc API 对象的简单封装。通过这个类可以让我们对于JDBC的使用游刃有余。并且JdbcTemplate处理了资源的建立和释放,它也能帮助我们避免一些常见的错误,比如忘了总要关闭连接。除了JdbcTemplate,spring 框架还为我们提供了很多的操作模

weixin_47637494的博客 2277

Spring 系列之jdbcTemplate的使用

Spring系列之 jdbcTemplate 啥是jdncTemplate? t他是spring框架中提供的一个对象,是对原始的jdbcAPI对象的简单封装,spring框架为我们提供了很多操作,模板类,比如操作关系型数据库的jdbcTemplate,操作nosql数据库的Redis Template,操作消息队列的jmsTemplate等等 JdbcTemplate开发步骤 1.导入sprign-jdbc和spring-tx坐标 2.创建数据库表和实体 3.创建JdbcTemplate对象 4.执行数据

pjh88的博客 565

Spring 中JdbcTemplate的使用

1、项目目录以及数据库表的信息 2、目录源代码 pox.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ...

Zystem 2519

Spring JdbcTemplate(使用详解)

我们知道,JDBC 是 Java 提供的一种用于执行 SQL 语句的 API,可以对多种关系型数据库(例如 MySQL、Oracle 等)进行访问。 但在实际的企业级应用开发中,却很少有人直接使用原生的 JDBC API 进行开发,这是因为使用 JDBC API 对数据库进行操作十分繁琐,需要我们对每一步都做到“步步把控,处处关心”,例如我们需要手动控制数据库连接的开启,异常处理、事务处理、最后还要手动关闭连接释放资源等等。 Spring 提供了一个 Spring JDBC 模块,它对 JDBC API 进

洛卡JAVA架构师每日分享Java架构师知识 5745

Spring框架|集成JdbcTemplate

文章目录(1)编写Spring配置文件(2)配置数据源(3)配置JdbcTemplate模板对象(4)测试Spring框架集成JdbcTemplate 关于Spring的JdbcTemplate介绍 完整的XML配置 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.o...

匿名攻城狮 8171

Spring JdbcTemplate的使用

Spring JdbcTemplate ​ 在spring中为了更加方便的操作JDBC,在JDBC的基础之上定义了一个抽象层,为不同类型的JDBC操作提供模板方法,每个模板方法都能控制整个过程,并允许覆盖过程中的特定任务,通过这种方式,可以尽可能保留灵活性,将数据库存取的工作量讲到最低。 需要导入数据库相关的pom依赖 <dependency> <groupId>com.alibaba</groupId> &

weixin_45258054的博客 296

Spring——JdbcTemplate

JdbcTemplate 1、JdbcTemplate(概念和准备) 1.1、什么是 JdbcTemplate? Spring 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库操作。 1.2、准备工作 (1)引入相关 jar 包 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dsl09qA6-1639402734125)(素材/所需要的依赖.png)] (2)在 spring 配置文件配置数据库连接池 <!-- 数据库连接池 --> &

前尘忆梦的博客 1488

Spring中JdbcTemplate的使用

Spring中JdbcTemplate的使用(了解) 01-JdbcTemplate基本使用-概述(了解) JdbcTemplate是spring框架中提供的一个对象,是对原始繁琐的Jdbc API对象的简单封装。spring框架为我们提供了很多的操作模板类。 例如:操作关系型数据的JdbcTemplate和HibernateTemplate,操作nosql数据库的RedisTemplate,操作消息队列的JmsTemplate等等。 02-JdbcTemplate基本使用-开发步骤(理解) ①导

weixin_44961111的博客 131
上一篇: The Option Type
下一篇: SynchronizedList和Vector的区别
DViewer
博客等级 码龄16年 16粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值