Spring 用法学习总结(四)之 JdbcTemplate 连接数据库

🐉目录

9 JdbcTemplate


9 JdbcTemplate

Spring 框架对 JDBC 进行了封装,使用 JdbcTemplate 方便实现对数据库操作
相关包:
 
百度网盘链接icon-default.png?t=N7T8https://pan.baidu.com/s/1Gw1l6VKc-p4gdqDyD626cg?pwd=6666
创建properties配置文件
💥注意:高版本 MySQL 需要将 useSSL 设置为 false
此外,还需将驱动器修改为适合  MySQL 的版本:  mysql-connector-java各种版本下载链接icon-default.png?t=N7T8https://mvnrepository.com/artifact/mysql/mysql-connector-java
如果仍报错则将 com.mysql.jdbc.Driver 改为 com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/study?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
name=root
password=123456
driverClassName=com.mysql.cj.jdbc.Driver
study 数据库中的 book 表
导入语法:source sql 文件地址, 无法插入中文,请修改数据库编码为 utf-8
create table book(
bookid int(10) primary key auto_increment,
bookname varchar(50),
booksale double(7,2));insert into book(bookname,booksale) values
('Spring揭秘',75.5),
('Spring实战',56),
('Spring源码深入解析',72);
创建 xml 文件
com.alibaba.druid.pool.DruidDataSource 用来配置连接池
org.springframework.jdbc.core.JdbcTemplate 用来连接数据库
<?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"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-2.5.xsd"><!--加载配置文件--><context:property-placeholder location="classpath:user.properties" file-encoding="UTF-8"/><!-- 数据库连接池 --><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"destroy-method="close"><property name="url" value="${url}" /><property name="username" value="${name}" /><property name="password" value="${password}" /><property name="driverClassName" value="${driverClassName}" /></bean><!-- JdbcTemplate 对象 --><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><!--注入 dataSource--><property name="dataSource" ref="dataSource"></property></bean><!-- 组件扫描 --><context:component-scan base-package="springstudy4"></context:component-scan>
</beans>

Book 类存储书籍信息

Dao 是数据库操作,其中 BookDao 为接口并且声明了对数据库操作的方法,BookDaoIml 类实现了 BookDao 接口

Service 是业务操作,可以调用 BookDao 接口中的方法

Test 类进行测试,通过 Service 类调用 BookDao 接口中的方法

创建 BookDao 接口
package springstudy4;import java.util.List;public interface BookDao {//增void add(Book book);//批量添加void batchAddBook(List<Object[]> batchArgs);//删void delete(int id);//批量删除void batchDeleteBook(List<Object[]> batchArgs);//改void update(Book book);//批量修改void batchUpdateBook(List<Object[]> batchArgs);//查int selectCount();//查询返回对象Book findBookInfo(int id);//查询返回集合List<Book> findAllBook();
}

创建 BookService 类

package springstudy4;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class BookService {//注入 dao@Autowiredprivate BookDao bookDao;//添加public void addBook(Book book) {bookDao.add(book);}//批量添加public void batchAdd(List<Object[]> batchArgs) {bookDao.batchAddBook(batchArgs);}//删除public void deleteBook(int id) {bookDao.delete(id);}//批量删除public void batchDelete(List<Object[]> batchArgs) {bookDao.batchDeleteBook(batchArgs);}//修改public void updateBook(Book book) {bookDao.update(book);}//批量添加public void batchUpdate(List<Object[]> batchArgs) {bookDao.batchUpdateBook(batchArgs);}//查找public void findBook(int id) {bookDao.findBookInfo(id);}//查找全部public List<Book> findAll() {return bookDao.findAllBook();}
}

创建 Book 类

package springstudy4;public class Book {private int bookid;private String bookname;private double booksale;public int getBookid() {return bookid;}public void setBookid(int bookid) {this.bookid = bookid;}public String getBookname() {return bookname;}public void setBookname(String bookname) {this.bookname = bookname;}public double getBooksale() {return booksale;}public void setBooksale(double booksale) {this.booksale = booksale;}@Overridepublic String toString() {return "Book{" +"bookid=" + bookid +", bookname='" + bookname + '\'' +", booksale=" + booksale +'}';}
}

👀创建 BookDaoIml 类(重点)👀

BookDaoIml 类定义了 CRUD 方法,通过 JdbcTemplate 模块可以对数据库中的一条或多条数据进行操作

package springstudy4;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;import java.util.Arrays;
import java.util.List;@Repository
public class BookDaoImpl implements BookDao {//注入 JdbcTemplate@Autowiredprivate JdbcTemplate jdbcTemplate;//增@Overridepublic void add(Book book) {String sql = "insert into book values(?,?,?)";jdbcTemplate.update(sql, book.getBookid(), book.getBookname(), book.getBooksale());}//批量添加@Overridepublic void batchAddBook(List<Object[]> batchArgs) {String sql = "insert into book values(?,?,?)";int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);System.out.println(Arrays.toString(ints));}//删@Overridepublic void delete(int id) {String sql = "delete from book where bookid=?";int update = jdbcTemplate.update(sql, id);System.out.println(update);}//批量删除@Overridepublic void batchDeleteBook(List<Object[]> batchArgs) {String sql = "delete from book where bookid=?";int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);System.out.println(Arrays.toString(ints));}//改@Overridepublic void update(Book book) {String sql = "update book set bookname=?,booksale=? where bookid=?";Object[] args = {book.getBookname(), book.getBooksale(),book.getBookid()};int update = jdbcTemplate.update(sql, args);System.out.println(update);}//批量修改@Overridepublic void batchUpdateBook(List<Object[]> batchArgs) {String sql = "update book set bookname=?,booksale=? where bookid=?";int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);System.out.println(Arrays.toString(ints));}//查@Overridepublic int selectCount() {String sql = "select count(*) from book";Integer count = jdbcTemplate.queryForObject(sql, Integer.class);return count;}//查询返回对象@Overridepublic Book findBookInfo(int id) {String sql = "select * from book where bookid=?";//调用方法Book book = jdbcTemplate.queryForObject(sql, newBeanPropertyRowMapper<Book>(Book.class), id);return book;}//查询返回集合@Overridepublic List<Book> findAllBook() {String sql = "select * from book";//调用方法List<Book> bookList = jdbcTemplate.query(sql, newBeanPropertyRowMapper<Book>(Book.class));return bookList;}
}

创建 Test 类

package springstudy4;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import java.util.ArrayList;
import java.util.List;public class Test {public static void main(String[] args) {ApplicationContext context =new ClassPathXmlApplicationContext("bean4.xml");BookService bookService = context.getBean("bookService", BookService.class);Book book = new Book();List<Book> bookList;List<Object[]> batchArgs = new ArrayList<>();//查找所有bookList = bookService.findAll();for(Book i : bookList) {System.out.println(i);}
//        //增加一条
//        book.setBookid(5);
//        book.setBookname("算法导论");
//        book.setBooksale(65);
//        bookService.addBook(book);
//        //批量添加测试
//        batchArgs.clear();
//        Object[] a1 = {6,"java",26};
//        Object[] a2 = {7,"c++", 66};
//        Object[] a3 = {8,"MySQL",62};
//        batchArgs.add(a1);
//        batchArgs.add(a2);
//        batchArgs.add(a3);
//        //调用批量添加
//        bookService.batchAdd(batchArgs);//批量删除batchArgs.clear();Object[] b1 = {6};Object[] b2 = {7};batchArgs.add(b1);batchArgs.add(b2);//调用方法实现批量删除bookService.batchDelete(batchArgs);//批量修改batchArgs.clear();Object[] c1 = {"java", 66.5, 6};Object[] c2 = {"c++", 77.0, 7};Object[] c3 = {"MySQL",88.5, 8};batchArgs.add(c1);batchArgs.add(c2);batchArgs.add(c3);//调用方法实现批量修改bookService.batchUpdate(batchArgs);}
}

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

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

相关文章

分布式文件系统 SpringBoot+FastDFS+Vue.js【二】

分布式文件系统 SpringBootFastDFSVue.js【二】 六、实现上传功能并展示数据6.1.创建数据库6.2.创建spring boot项目fastDFS-java6.3.引入依赖6.3.fastdfs-client配置文件6.4.跨域配置GlobalCrosConfig.java6.5.创建模型--实体类6.5.1.FastDfsFile.java6.5.2.FastDfsFileType.j…

vscode 和 keil协同使用开发stm32程序,超详细教程

vscode 和 keil协同使用开发stm32程序 文章目录 vscode 和 keil协同使用开发stm32程序1. 安装vscode拓展安装chinese插件 2 .安装Mingw3.配置环境变量4. 打开Keil项目 VSCODE 是一款广受好评的代码编辑器&#xff0c; KEIL 是常用的嵌入式开发工具但编程界面简陋。 将两个工具…

npm使用国内淘宝镜像(最新地址)

目录 前言 一、命令配置 二、使用cnpm安装 三、常见包地址 四、总结 往期回顾 前言 我们前端程序员在使用国外的镜像源速度很慢并且容易下载失败&#xff0c;有时候需要尝试多次才有可能下载成功&#xff0c;很麻烦&#xff0c;但是可以切换为国内镜像源&#xff0c;下…

BigDecimal的常用API

BigDecimal用于解决浮点型运算时结果出现失真的问题。 这里0.20.1等于0.3就出现了失真 import java.math.BigDecimal; import java.math.RoundingMode;public class Test {public static void main(String[] args) {//BigDeciaml的使用&#xff1a;解决小数运算失真的问题doub…

微信网页版能够使用(会顶掉微信app的登陆)

一、文件结构 新建目录chrome新建icons&#xff0c;其中图片你自己找吧新建文件manifest.json新建文件wx-rules.json 二、文件内容 对应的png你们自己改下 1、manifest.json {"manifest_version": 3,"name": "wechat-need-web","author…

C语言第二十五弹---字符函数和字符串函数(上)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 目录 1、字符分类函数 2、字符转换函数 3、strlen的使用和模拟实现 4、strcpy 的模拟实现 5、strcat 的模拟实现 6、strcmp 的模拟实现 7、strncpy 函数的使用 总结…

AI工具使用指南

AI工具使用指南 AI 时间线 http://124.70.25.53/ kimi ai&#xff1a;擅长长文本解读 https://kimi.moonshot.cn/ 文章链接&#xff1a;[url] 1.元数据:标题&#xff0c;作者&#xff0c;链接&#xff0c;标题 2.作者主张&#xff0c;亮点; 3.逐层加深理解; 4.关键术语/概…

Excel练习:日历

Excel练习&#xff1a;日历 ‍ 题目&#xff1a;制作日历 ‍ ​​ 用rows和columns函数计算日期单元格偏移量 一个公式填充所有日期单元格 ​​ ‍

CSP-201909-1-小明种苹果

CSP-201909-1-小明种苹果 #include <iostream> using namespace std; int main() {long long sumApple 0, maxNum 0, maxAppleNum 0, n, m;cin >> n >> m;for (long long i 0; i < n; i){long long appleNum, delta 0;cin >> appleNum;for (l…

【JavaEE】spring boot快速上手

SpringBoot快速上手 文章目录 SpringBoot快速上手Maven会出现的一个官方bug创建完项目之后常用的的三个功能依赖管理Maven仓库中央仓库本地仓库国内源配置私服 springboot项目创建什么是springspring boot项目的创建Hello Worldweb服务器 SpringMVC什么是SpringWebMVC什么是MVC…

111. 二叉树的最小深度

给定一个二叉树&#xff0c;找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明&#xff1a;叶子节点是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;2示例 2&#xff1a; 输入…

Three.js学习9:Three.js 响应式设计

-----------------------------华丽的分割线--------------------- 相关代码均已上传到 gitee 中&#xff1a;myThree: 学习 Three.js &#xff0c;努力加油~&#xff01; Gitee 静态演示地址&#xff1a;Three JS 演示页面 -----------------------------华丽的分割线------…

前端架构: 调试本地脚手架最佳实践梳理

脚手架本地调试标准流程 1 &#xff09;链接本地脚手架 就是当我们这个脚手架开发好还没上线的时候可以进入到脚手架的一个目录, 通过 npm link 完成这个操作$ cd your-cli-dir$ npm link这个操作的含义是将当前的项目链接到node全局的 node_modules 中作为一个库文件, 并且还…

Spark编程实验五:Spark Structured Streaming编程

目录 一、目的与要求 二、实验内容 三、实验步骤 1、Syslog介绍 2、通过Socket传送Syslog到Spark 3、Syslog日志拆分为DateFrame 4、对Syslog进行查询 四、结果分析与实验体会 一、目的与要求 1、通过实验掌握Structured Streaming的基本编程方法&#xff1b; 2、掌握…

相机图像质量研究(17)常见问题总结:CMOS期间对成像的影响--靶面尺寸

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…

【AIGC】Stable Diffusion的常见错误

Stable Diffusion 在使用过程中可能会遇到各种各样的错误。以下是一些常见的错误以及可能的解决方案&#xff1a; 模型加载错误&#xff1a;可能出现模型文件损坏或缺失的情况。解决方案包括重新下载模型文件&#xff0c;确保文件完整并放置在正确的位置。 依赖项错误&#x…

009集——磁盘详解——电脑数据如何存储在磁盘

很多人也知道数据能够保存是由于设备中有一个叫做「硬盘」的组件存在&#xff0c;但也有很多人不知道硬盘是怎样储存这些数据的。这里给大家讲讲其中的原理。 首先我们要明白的是&#xff0c;计算机中只有0和1&#xff0c;那么我们存入硬盘的数据&#xff0c;实际上也就是一堆0…

Python三级考试笔记

Python三级考试笔记【源源老师】 三级标准 一、 理解编码、数制的基本概念&#xff0c;并且会应用。 1. 能够进行二进制、十进制以及十六进制之间的转换&#xff1b; 2. 理解Python中的数制转换函数。 二、 掌握一维数据的表示和读写方法&#xff0c;能够编写程序处理一维数据…

阿里云幻兽帕鲁服务器手动更新游戏服务端的命令

幻兽帕鲁Windows服务器版手动更新命令&#xff1a; 首先打开服务器桌面的Windows PowerShell工具&#xff0c;找不到就左下角开始菜单&#xff0c;搜索即可。 然后输入下面的命令切换到这个目录&#xff1a; cd C:\steamcmd 接着运行下面的命令&#xff1a; .\steamcmd.ex…

MySQL性能调优篇(7)-MySQL的集群部署和优化

MySQL的集群部署和优化 MySQL是一种常用的关系型数据库管理系统&#xff0c;可以用于存储和管理大量的结构化数据。为了满足高并发和大规模数据存储需求&#xff0c;MySQL的集群部署和优化变得非常重要。本篇博客将介绍MySQL的集群部署方法和一些优化技巧。 一、MySQL集群部署…