第八篇 Spring 集成JdbcTemplate
《Spring》篇章整体栏目
—————————————————————————————
【第一章】spring 概念与体系结构
【第二章】spring IoC 的工作原理
【第三章】spring IOC与Bean环境搭建与应用
【第四章】spring bean定义
【第五章】Spring 集合注入、作用域
【第六章】Spring 自动装配
【第七章】spring AOP
【第八章】Spring 集成JdbcTemplate
【第九章】Spring数据库事务管理
【第十章】Spring 集成Redis
【第十一章】Spring实战之打造新闻系统后端接口
—————————————————————————————
目录
- 前言
- 1、导包
- 2、案例
- 2.1、创建表
- 2.2、创建连接数据库配置文件jdbc.properties(目标src)
- 2.3、创建配置文件house.xml
- 2.4、定义HouseInfo实体bean
- 2.5、定义dao
- 2.6、定义service
- 2.7、测试
—————————————————————————————
前言
Spring 提供了一个 Spring JDBC 模块,它对 JDBC API 进行了封装,其的主要目的降低 JDBC API 的使用难度,以一种更直接、更简洁的方式使用 JDBC API。
1、导包
spring-beans-5.3.13.RELEASE.jar
spring-context-5.3.13.RELEASE.jar
spring-core-5.3.13.RELEASE.jar
spring-expression-5.3.13.RELEASE.jar
commons-logging-1.2.jar
spring-jdbc-5.3.13.RELEASE.jar
spring-tx-5.3.13.RELEASE.jar
spring-aop-5.3.13.jar
mysql-connector-java-8.0.23.jar
备注:自行去Maven资源库搜 -> https://mvnrepository.com/
JdbcTemplate 提供的方法以及说明

2、案例
2.1、创建表
CREATE TABLE
IF NOT EXISTS house_info (
id BIGINT PRIMARY KEY auto_increment COMMENT '主键',
NAME VARCHAR (50) COMMENT '房屋名称',
type VARCHAR (50) COMMENT '房屋类型',
address VARCHAR (50) COMMENT '房屋地址'
) COMMENT '房屋信息表';
2.2、创建连接数据库配置文件jdbc.properties(目标src)
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/spring
jdbc.username=root
jdbc.password=root
2.3、创建配置文件house.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:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><!--开启组建扫描--><context:component-scan base-package="com.xxxx.spring"/><!--引入jdbc.properties 配置--><context:property-placeholder location="classpath:jdbc.properties"/><bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/><property name="driverClassName" value="${jdbc.driver}"/></bean><bean id = "jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource" ref="dataSource"/></bean></beans>
2.4、定义HouseInfo实体bean
package com.xxxx.spring.entity;/*** 房屋信息*/
public class HouseInfo {/*** 房屋名称*/private String name;/*** 房屋类型*/private String type;/*** 房屋地址*/private String address;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getType() {return type;}public void setType(String type) {this.type = type;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}@Overridepublic String toString() {return "HouseInfo{" +"name='" + name + '\'' +", type='" + type + '\'' +", address='" + address + '\'' +'}';}
}
2.5、定义dao
package com.xxxx.spring.dao;import com.xxxx.spring.entity.HouseInfo;
import java.util.List;/*** 房屋信息DAO类*/
public interface HouseInfoDAO {/*** 新增房屋信息* @param houseInfo* @return*/public int insertHouseInfo(HouseInfo houseInfo);/*** 修改房屋信息* @param houseInfo* @return*/public int updateHouseInfo(HouseInfo houseInfo);/*** 删除房屋信息* @param houseInfo* @return*/public int deleteHouseInfo(HouseInfo houseInfo);/*** 查询房屋信息列表* @param houseInfo* @return*/public List<HouseInfo> selectHouseInfoList(HouseInfo houseInfo);/*** 获取房屋信息对象* @param houseInfo* @return*/public HouseInfo getHouseInfo(HouseInfo houseInfo);/*** 批量插入房屋信息* @param batchArgs*/public void batchInsertHouseInfo(List<Object[]> batchArgs);
}
package com.xxxx.spring.dao.impl;import com.xxxx.spring.dao.HouseInfoDAO;
import com.xxxx.spring.entity.HouseInfo;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import javax.annotation.Resource;
import java.util.List;public class HouseInfoDAOImpl implements HouseInfoDAO {@Resourceprivate JdbcTemplate jdbcTemplate;@Overridepublic int insertHouseInfo(HouseInfo houseInfo) {String sql = " INSERT INTO house_info (NAME, type, address) " +" VALUES " +" (?,?,?) ";return this.jdbcTemplate.update(sql,houseInfo.getName(),houseInfo.getType(),houseInfo.getAddress());}@Overridepublic int updateHouseInfo(HouseInfo houseInfo) {String sql = "UPDATE house_info set address =? where name=?";return this.jdbcTemplate.update(sql,houseInfo.getAddress(),houseInfo.getName());}@Overridepublic int deleteHouseInfo(HouseInfo houseInfo) {String sql = "delete from house_info where name=?";return this.jdbcTemplate.update(sql,houseInfo.getName());}@Overridepublic List<HouseInfo> selectHouseInfoList(HouseInfo houseInfo) {String sql = "select * from house_info where type=?";return this.jdbcTemplate.query(sql,new BeanPropertyRowMapper<HouseInfo>(HouseInfo.class),houseInfo.getType());}@Overridepublic HouseInfo getHouseInfo(HouseInfo houseInfo) {String sql = "select * from house_info where id=?";return this.jdbcTemplate.queryForObject(sql,new BeanPropertyRowMapper<HouseInfo>(HouseInfo.class),houseInfo.getId());}@Overridepublic void batchInsertHouseInfo(List<Object[]> batchArgs) {String sql = "INSERT INTO house_info (NAME, type, address) " +"VALUES " +" (?,?,?) ";this.jdbcTemplate.batchUpdate(sql,batchArgs);}
}
2.6、定义service
package com.xxx.spring.service;import com.xxx.spring.entity.HouseInfo;
import java.util.List;/*** 房屋信息DAO类*/
public interface HouseInfoService {/*** 新增房屋信息* @param houseInfo* @return*/public int insertHouseInfo(HouseInfo houseInfo);/*** 修改房屋信息* @param houseInfo* @return*/public int updateHouseInfo(HouseInfo houseInfo);/*** 删除房屋信息* @param houseInfo* @return*/public int deleteHouseInfo(HouseInfo houseInfo);/*** 查询房屋信息列表* @param houseInfo* @return*/public List<HouseInfo> selectHouseInfoList(HouseInfo houseInfo);/*** 获取房屋信息对象* @param houseInfo* @return*/public HouseInfo getHouseInfo(HouseInfo houseInfo);/*** 批量插入房屋信息* @param batchArgs*/public void batchInsertHouseInfo(List<Object[]> batchArgs);
}
package com.xxxx.spring.service.impl;import com.xxxx.spring.dao.HouseInfoDAO;
import com.xxxx.spring.entity.HouseInfo;
import com.xxxx.spring.service.HouseInfoService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;@Service("houseInfoService")
public class HouseInfoServiceImpl implements HouseInfoService {@Resourceprivate HouseInfoDAO houseInfoDAO;@Overridepublic int insertHouseInfo(HouseInfo houseInfo) {return this.houseInfoDAO.insertHouseInfo(houseInfo);}@Overridepublic int updateHouseInfo(HouseInfo houseInfo) {return this.houseInfoDAO.updateHouseInfo(houseInfo);}@Overridepublic int deleteHouseInfo(HouseInfo houseInfo) {return this.houseInfoDAO.deleteHouseInfo(houseInfo);}@Overridepublic List<HouseInfo> selectHouseInfoList(HouseInfo houseInfo) {return this.houseInfoDAO.selectHouseInfoList(houseInfo);}@Overridepublic HouseInfo getHouseInfo(HouseInfo houseInfo) {return this.houseInfoDAO.getHouseInfo(houseInfo);}@Overridepublic void batchInsertHouseInfo(List<Object[]> batchArgs) {this.houseInfoDAO.batchInsertHouseInfo(batchArgs);}
}
2.7、测试
public static void main(String[] args) {ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("house.xml");HouseInfoService houseInfoService = classPathXmlApplicationContext.getBean("houseInfoService", HouseInfoService.class);HouseInfo houseInfo = new HouseInfo();houseInfo.setName("雪山飞狐");houseInfo.setType("三房一厅");houseInfo.setAddress("深圳市");houseInfoService.insertHouseInfo(houseInfo);
}
相关文章:
第八篇 Spring 集成JdbcTemplate
《Spring》篇章整体栏目 ————————————————————————————— 【第一章】spring 概念与体系结构 【第二章】spring IoC 的工作原理 【第三章】spring IOC与Bean环境搭建与应用 【第四章】spring bean定义 【第五章】Spring 集合注入、作用域 【第六章】…...
双塔模型:微软DSSM模型浅析
1.背景 DSSM是Deep Structured Semantic Model (深层结构语义模型) 的缩写,即我们通常说的基于深度网络的语义模型,其核心思想是将query和doc映射到到共同维度的语义空间中,通过最大化query和doc语义向量之间的余弦相似度,从而训…...
DAY 44 Apache网页优化
Apache网页优化 概述 在企业中,部署Apache后只采用默认的配置参数,会引发网站很多问题,换言之默认配置是针对以前较低的服务器配置的,以前的配置已经不适用当今互联网时代 为了适应企业需求,就需要考虑如何提升Apach…...
移动端手机网页适配iPad与折叠屏设备
采用的网页适配方案:移动端页面px布局适配方案(viewport) 产生此问题的原因 由于手机与平板等设备宽高比差异导致页面展示不全或者功能按钮展示在视口之外点击不到。 简单来说就是我们的页面都是瘦长(即高大于宽)的,而折叠屏等设…...
深入剖析 Qt QMap:原理、应用与技巧
目录标题 引言:QMap 的重要性与基本概念QMap 简介:基本使用方法(QMap Basics: Concepts and Usage)QMap 迭代器:遍历与操作键值对(QMap Iterators: Traversing and Manipulating Key-Value Pairs࿰…...
SpringBoot使用Hbase
SpringBoot使用Hbase 文章目录 SpringBoot使用Hbase一,引入依赖二,配置文件添加自己的属性三,配置类注入HBASE配置四,配置Hbase连接池五,配置操作服务类 一,引入依赖 <dependency><groupId>org…...
SQL优化总结
SQL优化总结 1. MySQL层优化五个原则2. SQL优化策略2.1 避免不走索引的场景 3. SELECT语句其他优化3.1 避免出现select *3.2 避免出现不确定结果的函数3.3 多表关联查询时,小表在前,大表在后。3.4 使用表的别名3.5 调整Where字句中的连接顺序 附录 1. My…...
【python学习】基础篇-字典的基本操作 获取当前日期时间
1.字典的定义与创建 定义字典时,每个元素都包含两个部分“键”和“值”,在“键”和“值”之间使用冒号(:)分隔,相邻两个元素使用逗号分隔,所有元素放在一个大括号“{}”中。语法格式如下: dictionary (‘key1’:‘value1’, &quo…...
Python FreeCAD.Vector方法代码示例
Python FreeCAD.Vector方法代码示例 本文整理汇总了Python中FreeCAD.Vector方法的典型用法代码示例。如果您正苦于以下问题:Python FreeCAD.Vector方法的具体用法?Python FreeCAD.Vector怎么用?Python FreeCAD.Vector使用的例子?那…...
HDFS 梳理
HDFS客户端 客户端作用 管理文件目录文件系统操作读写 客户端生成 配置项 配置 客户端状态 缓冲相关参数,读写缓冲 失败切换操作 推测执行?? NN引用 NNProxy 客户端关闭 关闭IO流 修改状态 关闭RPC连接 是否有多个RPC连接? HDFS读 打开文件构…...
ChatGPT团队中,3个清华学霸,1个北大学霸,共9位华人
众所周知,美国硅谷其实有着众多的华人,哪怕是芯片领域,华为也有着一席之地,比如AMD 的 CEO 苏姿丰、Nvidia 的 CEO 黄仁勋 都是华人。 还有更多的美国著名的科技企业中,都有着华人的身影,这些华人ÿ…...
通过工具生成指定 类型 大小 文件
今天给大家介绍一个神器 首先 大家在开发过程中或许经常需要涉及到文件上传类的功能 需要测试文件过大 空文件等等清空 不同大小的文件 而这种文件大小是比较不好控制的 但大家可以下载我的资源 文件生成工具(可生成指定大小 类型文件) 下载下来里面就有一个 fileGeneration…...
超外差收音机的制作-电子线路课程设计-实验课
超外差收音机的制作 一、原理部分: 超外差收音机:超外差式收音机是将接收到的不同频率的高频信号全部变成一个固定的中频信号进行放大,因而电路对各种电台信号的放大量基本是相同的,这样可以使中放电路具有优良的频率特性。 超…...
TensorFlow 深度学习实战指南:1~5 全
原文:Hands-on Deep Learning with TensorFlow 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 深度学习 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 不要担心自己的形象,只关心如…...
【数据结构】队列的实现
白日去如箭,达者惜今阳。 --朱敦儒目录 🚁前言: 🏝️一.队列的概念及结构 🌻二.队列各种功能的实现 🍍1.队列的初始化 🏝️2.队列…...
【数据库】— 无损连接、Chase算法、保持函数依赖
【数据库】— 无损连接、Chase算法 Chase算法Chase算法举例一种简便方法:分解为两个模式时无损连接和函数依赖的一个简单例子 Chase算法 形式化定义: 构造一个 k k k行 n n n列的表格,每行对应一个模式 R i ( 1 ≤ i ≤ k ) Ri (1≤i ≤ k)…...
用英语翻译中文-汉字英文翻译
中文转英语翻译 作为一款高效、准确的中文转英语翻译软件,我们的产品可以帮助全球用户更好地沟通和合作,实现跨文化交流。 在全球化的今天,中英文翻译已经成为商务、学术、娱乐等各个领域不可或缺的一部分。我们的中文转英语翻译软件是为了…...
瑞吉外卖项目——缓存优化
用户数量多,系统访问量大 频繁访问数据库,系统性能下降,用户体验差 环境搭建 maven坐标 在项目的pom.xml文件中导入spring data redis的maven坐标: <dependency><groupId>org.springframework.boot</groupId><arti…...
从头创建一个新的浏览器,这合理吗?
从头构建一个新浏览器?这如果是不是个天大的“伪需求”,便是一场开发者的噩梦! 要知道,如果没有上百亿的资金和数百名研发工程师的投入,从头开始构建一个新的浏览器引擎,几乎是不可能的。然而SerenityOS系统…...
TypeScript泛型类型和接口
本节课我们来开始了解 TypeScript 中泛型类型的概念和接口使用。 一.泛型类型 1. 前面,我们通过泛型变量的形式来存储调用方的类型从而进行检查; 2. 而泛型也可以作为类型的方式存在,理解这一点,先了解下函数的…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
