Springboot使用JdbcTemplate的使用
在spring-boot-starter-jdbc这个依赖包中一共分成四个部分。
- core,JdbcTemplate等相关核心接口和类
- datasource,数据源相关的辅助类
- object,将基本的jdbc操作封装成对象
- support,错误码等其他辅助工具
这里对JdbcTemplate这个类进行描述。JdbcTemplate是Spring对JDBC的封装,目的是使JDBC更加易于使用。JdbcTemplate处理了资源的建立和释放。他帮助我们避免一些常见的错误,比如忘了总要关闭连接。他运行核心的JDBC工作流,如Statement的建立和执行,而我们只需要提供SQL语句和提取结果。
JdbcTemplate提供的方法
在JdbcTemplate中执行SQL语句的方法大致分为3类。
- execute,可以执行所有的sql语句,一般用来执行ddl语句
- update,用于执行insert、update、delete等dml语句
- queryXXX,用于DQL数据查询语句
execute方法
@GetMapping("/api/jdbc-oper/createTable")
public void createTable() {
String sql = "create table product (id int primary key auto_increment,name varchar(64),description varchar(128))";
jdbcTemplate.execute(sql);
}
update方法
@GetMapping("/api/jdbc-oper/addData")
public void addData() {
String sql = "insert into product(name) values(?)";
Arrays.asList("Java编程思想", "Spring boot in action", "spark")
.forEach(p -> {
jdbcTemplate.update(sql, p);
});
}
@GetMapping("/api/jdbc-oper/updateData")
public void updateData() {
String sql = "update product set description='这是Java编程思想' where name ='Java编程思想'";
jdbcTemplate.update(sql);
}
@GetMapping("/api/jdbc-oper/deleteData")
public void deleteData() {
String sql = "";
jdbcTemplate.update(sql);
}
queryXXX方法
查询一个字段的场景
@GetMapping("/api/jdbc-oper/queryForInt")
public void queryForInt() {
String sql = "select count(*) from product";
Integer totalNum = jdbcTemplate.queryForObject(sql, Integer.class);
System.out.println(totalNum);
}
查询一个普通列表的场景
@GetMapping("/api/jdbc-oper/queryName")
public void queryName() {
String sql = "select name from product";
List<String> names = jdbcTemplate.queryForList(sql, String.class);
System.out.println(names);
}
查询一个对象列表的场景
@GetMapping("/api/jdbc-oper/queryProduct")
public void queryProduct() {
String sql = "select * from product";
List<Product> productList = jdbcTemplate.query(sql, new RowMapper<Product>() {
@Nullable
@Override
public Product mapRow(ResultSet resultSet, int i) throws SQLException {
return Product.builder()
.id(resultSet.getInt(1))
.name(resultSet.getString(2))
.build();
}
});
productList.forEach(product -> log.info("product:{}", product));
}
批量操作的方法
@GetMapping("/api/jdbc-oper/batchInsert")
public void batchInsert() {
String sql = "insert into product (name) values (?)";
List<String> products = Arrays.asList("product1", "product2", "product3");
jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
@Override
public void setValues(PreparedStatement preparedStatement, int i) throws SQLException {
preparedStatement.setString(1, products.get(i));
}
@Override
public int getBatchSize() {
return products.size();
}
});
}
Springboot使用JdbcTemplate的使用的更多相关文章
- springboot之JdbcTemplate
springboot可以使用JdbcTemplate进行数据库访问,代码如下 添加pom文件 <parent> <groupId>org.springframework.boo ...
- SpringBoot使用JdbcTemplate
前言 本文是对SpringBoot使用JdbcTemplate操作数据库的一个介绍,,提供一个小的Demo供大家参考. 操作数据库的方式有很多,本文介绍使用SpringBoot结合JdbcTempla ...
- springboot 整合jdbcTemplate
springboot 整合jdbcTemplate 〇.搭建springboot环境(包括数据库的依赖) 一.添加依赖 如果导入了jpa的依赖,就不用导入jdbctemplete的依赖了jpa的依赖: ...
- springboot使用jdbcTemplate连接数据库
springboot使用jdbcTemplate连接数据库 1.pom.xml: <?xml version="1.0" encoding="UTF-8" ...
- 【使用篇二】SpringBoot使用JdbcTemplate操作数据库(12)
Spring对数据库的操作在jdbc上面做了深层次的封装,提供了JdbcTemplate模板. 在SpringBoot使用JdbcTemplate很简单: 引入数据库驱动包(mysql或oracle) ...
- Springboot 使用JdbcTemplate
Springboot 使用JdbcTemplate book package com.draymonder.book.jdbc; public class Book { private Integer ...
- 关于SpringBoot集成JDBCTemplate的RowMapper问题
JdbcTemplate 是Spring提供的一套JDBC模板框架,利用AOP 技术来解决直接使用JDBC时大量重复代码的问题.JdbcTemplate虽然没有MyBatis 那么灵活,但是直接使用J ...
- SpringBoot整合JdbcTemplate连接Mysql
import java.io.IOException; import javax.sql.DataSource; import org.apache.ignite.IgniteSystemProper ...
- springboot集成jdbcTemplate
这里使用springboot自带的jdbcTemplate连接mysql数据库 1. 添加依赖包 <!-- jdbc --> <dependency> <groupId& ...
- SpringBoot(四) SpringBoot整合JdbcTemplate
一.数据准备CREATE TABLE `tb_user` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID', `username` varchar ...
随机推荐
- python—模块optparse的用法
1.什么是optparse: 在工作中我们经常要制定运行脚本的一些参数,因为有些东西是随着我么需求要改变的,所以在为们写程序的时候就一定不能把写死,这样我们就要设置参数 optparse用于处理命令行 ...
- C#获取页面内容的几种方式
常见的Web页面获取页面内容用 WebRequest 或者 HttpWebRequest 来操作 Http 请求. 例如,获取百度网站的 html 页面 var request = WebReques ...
- WPF 最基本的前后台代码对照
最基本的3D代码对照 xaml代码 <Viewport3D> <Viewport3D.Camera> <PerspectiveCamera Position=" ...
- day12 文件操作(下)
目录 一.x模式(控制文件操作模式,与rwa同级) 1 特点 2 格式 二.b模式(控制文件读写内容的模式,与t同级) 1.b模式和t模式的区别 2 b模式应用 3 循环读取文件 三.文件操作的其他方 ...
- day15 作业
day15 作业 目录 day15 作业 第一题 第二题 第三题 第四题 第五题 第六题 第七题 第一题 ===================题目一=================== input ...
- Django之 Models组件
本节内容 路由系统 models模型 admin views视图 template模板 引子 讲django的models之前, 先来想一想, 让你通过django操作数据库,你怎么做? 做苦思冥想, ...
- HTML学习分享二
一 . 常用快捷键 ctrl + s : 保存 ctrl + x.ctrl + c.ctrl + v : 剪切.复制.粘贴 ctrl + a : 全选 sh ...
- Alink漫谈(十二) :在线学习算法FTRL 之 整体设计
Alink漫谈(十二) :在线学习算法FTRL 之 整体设计 目录 Alink漫谈(十二) :在线学习算法FTRL 之 整体设计 0x00 摘要 0x01概念 1.1 逻辑回归 1.1.1 推导过程 ...
- C# 判断和创建目录路径
在进行一些导出或下载时,需要创建一个本地路径,以供文件进行下载和创建. if (Directory.Exists(Server.MapPath("~/upimg/hufu")) = ...
- 软件测试面试题,十年HR面试经验分享
WeChat[代码小姐],快和我们一起进大厂,挑战高薪吧. 问:你在测试中发现了一个 bug ,但是开发经理认为这不是一个 bug ,你应该怎样解决. 1.将问题提交到缺陷管理库里面进行备案.2. ...