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 ...
随机推荐
- linux环境下安装 openOffice4并启动服务
一.背景故事 openOffice是用来做office文档在线预览功能,把office文档转换成pdf交给前端显示. 之前系统开发过程一直没有将springboot服务怼上服务器,所以只安装了wind ...
- 【TokyoWesterns CTF】shrine
信息: 题目来源:TokyoWesterns CTF 标签:flask.SSTI 解题过程 构建题目环境后,访问主页可以获得程序源码: import flask import os app = fla ...
- 数据可视化之 图表篇(四) 那些精美的Power BI可视化图表
之前使用自定义图表,每次新打开一个新文件时,都需要重新添加,无法保存,在PowerBI 6月更新中,这个功能得到了很大改善,可以将自定义的图表固定在内置图表面板上了. 添加自定义图表后,右键>固 ...
- picker-view、微信小程序自定义时间选择器(非官方)
picker-view自定义时间选择器 官网的自定义时间选择器比较简陋.日期不准 下面是我自己写的一个demo <view class="baseList"> < ...
- HTML学习分享(一)
HTML学习小结(一) 1.css的全称是什么? 2.样式表的组成 3.浏览器读取编译css的顺序? (1)HTML基本选择器 1.通配符选择器 * { margin: 0; padding: 0; ...
- uTools - 你的生产力工具集
工具介绍 uTools是一个极简.插件化.跨平台的现代化桌面软件.通过自由选配丰富的插件,打造你得心应手的工具集合. 通过快捷键(默认alt+space)就可以快速呼出这个搜索框.它相当聪明,可以支持 ...
- Notion笔记工具免费开通教育许可
修改为edu邮箱 如果咱注册的时候就用的咱的edu,就不用看这部分啦! 点击[Get free Education plan],提示要修改咱的注册邮箱! 开通咱的教育版 最后附上ac邮箱两枚 http ...
- 猴子吃桃问题之《C语言经典案例分析》
猴子吃桃问题之<C语言经典案例分析>一.[什么是猴子吃桃] 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个.第二天早上又将第一天剩下的桃子吃掉一半 ...
- java基础知识--数据类型
计算机时识别不了我们编写的代码语言,计算机中的数据全部采用二进制表示,即0和1表示的数字,每一个0或者1就是一个位,一个位叫做一个bit(比特).(实际上计算机只能识别高低电平,而不是0和1.) 字节 ...
- 搞定 CompletableFuture,并发异步编程和编写串行程序还有什么区别?你们要的多图长文
你有一个思想,我有一个思想,我们交换后,一个人就有两个思想 If you can NOT explain it simply, you do NOT understand it well enough ...