jdbctemplate 执行多条sql_SpringBoot使用JdbcTemplate连接Mysql实现增删改查

2023-11-02

摘要:本文是springboot工程使用JdbcTemplate连接Mysql数据库,实现增删改查的实例,及在搭建过程中碰到的几个问题,前几篇介绍怎么搭建SpringBoot工程,接下来直接入正题

什么是JDBC?

JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。

JDBC的原理就是通过Connection这个类获取数据库的连接,然后通过PreparedStatement类处理SQL语句,再通过它的.setObject方法传入数据,最后通过方法.executeUpdate()和.executeQuery()执行更新

JdbcTemplate

template,是模板的意思,是Spring框架为我们提供的,JdbcTemplate是Spring框架自带的对JDBC操作的封装,目的是提供统一的模板方法使对数据库的操作更加方便、友好,效率也不错。但是功能还是不够强大(比如不支持级联属性),在实际应用中还需要和hibernate、mybaties等框架混合使用。

JdbcTemplate类主要提供以下四类方法

  • execute方法:用于执行任何SQL语句,一般用于执行DDL语句;
  • update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句,batchUpdate方法用于执行批处理相关语句;
  • query方法及queryForXXX方法:用于执行查询相关语句;
  • call方法:用于执行存储过程、函数相关语句

具体实现

  • 需要的jar包依赖
org.springframework.bootspring-boot-starter-jdbc
  • mysql的驱动jar包
mysqlmysql-connector-javaruntime
  • application.properties配置文件
spring.application.name=testserver.port=8088spring.datasource.url=jdbc:mysql://127.0.0.1:3306/db1spring.datasource.username=rootspring.datasource.password=root#说明一下,注释掉容易犯错的地方(后边会说明这个错误)#spring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
  • sql语句
/*Navicat MySQL Data TransferSource Server : localhost_3306Source Server Version : 50520Source Host : localhost:3306Source Database : db1Target Server Type : MYSQLTarget Server Version : 50520File Encoding : 65001Date: 2019-03-04 22:36:54*/SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for `user`-- ----------------------------DROP TABLE IF EXISTS `user`;CREATE TABLE `user` ( `id` varchar(32) NOT NULL, `name` varchar(20) DEFAULT NULL, `sex` varchar(20) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Records of user-- ----------------------------INSERT INTO `user` VALUES ('06170ace6fa94ac5aec51a4b30572fd0', 'Spring', 'Frame');INSERT INTO `user` VALUES ('1', '刘能', '男的');INSERT INTO `user` VALUES ('2', '王五', 'woman');INSERT INTO `user` VALUES ('3d0bd85cd40f4a8584d352accfaf6db6', 'Spring', 'Frame');INSERT INTO `user` VALUES ('a7ff791e54f648d9bc24dd4c472c1f84', 'Spring', 'Frame');
  • Dao数据接口
package com.mundo.Test.service;import java.util.List;import com.mundo.Test.pojo.User;import com.mundo.Test.pojo.UserRowMapper;public interface UserService {List queryAll(String sql, UserRowMapper userRowMapper, Object... objects);User selectById(String sql, UserRowMapper userRowMapper, String id);int updateById(String sql, Object... objects);int insert(String sql, Object... objects);int deleteById(String sql, String id);}
  • 接口实现
/** *  */package com.mundo.Test.service.impl;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.stereotype.Service;import com.mundo.Test.pojo.User;import com.mundo.Test.pojo.UserRowMapper;import com.mundo.Test.service.UserService;/** * @ClassName: UserServiceImpl * @Description: TODO * @author Meng.Xu * @date 2019年3月4日 下午5:32:43 */@Servicepublic class UserServiceImpl implements UserService {@Autowiredprivate JdbcTemplate jdbcTemplate;@Overridepublic List queryAll(String sql, UserRowMapper userRowMapper, Object... objects) {return jdbcTemplate.query(sql, userRowMapper, objects);}@Overridepublic User selectById(String sql, UserRowMapper userRowMapper, String id) {return jdbcTemplate.queryForObject(sql, userRowMapper, id);}@Overridepublic int updateById(String sql, Object...objects) {return jdbcTemplate.update(sql, objects);}@Overridepublic int insert(String sql, Object... objects) {return jdbcTemplate.update(sql, objects);}@Overridepublic int deleteById(String sql, String id) {return jdbcTemplate.update(sql, id);}}

用的Junit 单元测试

  • 需要在pom.xml中加入
org.springframework.bootspring-boot-starter-testtest
  • 单元测试增删改查
package com.mundo.Test;import java.util.List;import javax.annotation.Resource;import org.junit.Test;import org.junit.runner.RunWith;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.test.context.junit4.SpringRunner;import com.alibaba.fastjson.JSONObject;import com.mundo.Test.pojo.User;import com.mundo.Test.pojo.UserRowMapper;import com.mundo.Test.service.UserService;import com.mundo.Test.util.UUIDUtil;@RunWith(SpringRunner.class)@SpringBootTestpublic class TestApplicationTests {@Resourceprivate JdbcTemplate jdbcTemplate;private Logger logger = LoggerFactory.getLogger(TestApplicationTests.class);@Resourceprivate UserService userService;@Testpublic void contextLoads() {String sql = "select * from user";List queryAll = userService.queryAll(sql, new UserRowMapper());System.out.println("返回对象集合:" + JSONObject.toJSONString(queryAll));System.out.println("");sql = "select * from user where id = ?";User user = userService.selectById(sql, new UserRowMapper(), "1");System.out.println("返回对象:" + JSONObject.toJSONString(user));System.out.println("");sql = "update user set name = ?, sex = ? where id = ?";int updateById = userService.updateById(sql, "王五
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jdbctemplate 执行多条sql_SpringBoot使用JdbcTemplate连接Mysql实现增删改查 的相关文章

随机推荐

  • 从DB Browser for SQLite导出.csv文件

    如何从 db数据库文件中导出某个表的 csv文件 一般的 后台收集的日志保存在数据库中 查找日志时候需要打开 db文件的数据库 使用DB Browser for SQLite这个软件可以打开和查看数据库表以及数据 使用DB Browser
  • Golang笔记:使用ssh包作为客户端与SSH服务器交互

    文章目录 目的 基础说明 使用演示 单次通讯 连续通讯 远程终端 总结 目的 Golang中可以使用 golang org x crypto ssh 包作为SSH客户端或者SSH服务使用 这篇文章将简单记录下作为客户端使用的一些内容 Pac
  • form表单的提交

    基于html 语言的form表单的提交 1 表单属性设置 标签 表示表单标签 定义整体的表单区域 action属性 设置表单数据提交地址 method属性 设置表单提交的方式 一般有 GET 方式和 POST 方式 不区分大小写 2 表单元
  • Ubuntu中Tango Control的Pogo无法加载的解决办法

    文章目录 环境 步骤 卸载java ubuntu 安装指定版本jdk 重新编译测试 参考 在 自定义Tango Control设备服务在Ubuntu中的测试 中发现 pogo经常出现加载不出来的情况 但是偶尔会有一次可以打开 https b
  • Python:回文日期问题

    每日一题 目录 每日一题 文章目录 前言 一 题目描述 二 输入描述 三 输出描述 1 引入库 2 执行结果 datetime模块的用法 flag的用法 replace 方法 参数 总结 前言 本文章重点讲述回文日期问题 在其中介绍用到的函
  • C语言钟表【改进版】

    改进版源代码 include
  • 边缘计算物联网网关在机械加工行业中的效用分享

    随着工业4 0的推进 物联网技术正在逐渐渗透到各个行业领域 机械加工行业作为制造业的基础领域之一 其生产过程的自动化 智能化水平直接影响到产品质量和生产效率 边缘计算物联网网关作为物联网技术的重要组成部分 在机械加工行业中发挥着越来越重要的
  • Webpack4.0 的相关优化配置

    所谓的优化 也就是引入一些插件 使得代码的体积变小 1 删除没有意义的样式 在css文件中有一些没有用到的样式 希望在打包的过程中 删除掉它们 安装两个插件 cnpm install purgecss webpack plugin glob
  • 深度理解取整&取余&取模运算

    在编程的学习当中 我们会经常行的使用这些操作在表达式计算 但是你在使用当中 你真的理解了吗 或者说是你完全学会使用了 在这篇博客当中 或许会出现错误 希望大家理解 目前还在学习当中 发现错误或不足之处请大家斧正 目录 一 取整 二 取余与取
  • 64位win7下安装MongoDB以zip包的形式 图文(超详细)

    首先从mongodb的官网上下载对应版本的zip包 如果你使用Windows 64 bit 2008 R2 或win7需要安装Hotfix补丁 读者可以去网上下载相应的版本 解压后会得到如下的一个目录 然后自己在某个录下下建好一个目录 我这
  • window.open (‘page.html‘)

    window open page html 用于控制弹出新的窗口
  • 2024王道408数据结构 P143 T8

    2024王道408数据结构 P143 T8 思考过程 首先题目的意思非常简单明了 就是让我们找二叉树中度为2的结点 也就是既有左子树又有右子树的结点 那我们只需要在代码里判断如果该结点有左子树就入队 同时如果该结点有右子树就计数器 1 并且
  • vi/vim基本使用命令

    转自 http www lupaworld com uid 296380 action viewspace itemid 118973 vi vim 基本使用方法 本文介绍了vi vim 的基本使用方法 但对于普通用户来说基本上够了 i v
  • QT+VS配置及调试

    QT下载 https download qt io archive qt QT Creator设置 打开 Qt Creator 进入编译器部分 工具 gt 选项 gt 构建和运行 gt 编译器 可以看到vs的内容 之后 进入 工具 gt 选
  • Android平台GB28181接入端如何对接UVC摄像头?

    我们在对接Android平台GB28181接入的时候 有公司提出这样的需求 除了采集执法记录仪摄像头自带的数据外 还想通过执法记录仪采集外接UVC摄像头 实际上 这块对我们来说有点炒冷饭了 不算新的诉求 大牛直播SDK 在2016年对接RT
  • 2023国庆节放假通知

    喜迎国庆 放假通知 公司相关各部门 国庆来临之际 根据国家有关规定 现将2023年国庆放假事项通知如下 1 9月29至10月6日放假调休 共8天 10月7日上班 10月8日上班 2 各部门接通知后 妥善安排好值班工作 并将各部门值班表于20
  • 500套优秀简历模板,送给您!

    点击上方 成猿之路 选择 置顶公众号 第一时间送达实用技术干货 最近收藏保存了一些简历模板 觉得不错 送给即将步入社会或需要简历模板的你 01单面简历 150款 02多页简历 95款 03表格简历 18款 04英文简历 27款 05艺术气质
  • pytorch: 数据增广(Data Augmentation)

    常用的数据增广方法 比例缩放 位置截取 翻转 旋转 亮度 对比度和色调的变化 读取原图 import torchvision transforms as transforms from PIL import Image img Image
  • Vue.js如何实现倒计时?颜小白实测可用!

    Vue JS如何实现倒计时功能 1 首先一般来说前端小伙伴们会收到后端同学传过来的一个结束时间 大部分需要倒计时得情况都是在详情页 比如商品 活动等一些场景 2 如果需要实现倒计时功能 首先我们需要知道如何计算剩余时间 首先我们会拿到后端传
  • jdbctemplate 执行多条sql_SpringBoot使用JdbcTemplate连接Mysql实现增删改查

    摘要 本文是springboot工程使用JdbcTemplate连接Mysql数据库 实现增删改查的实例 及在搭建过程中碰到的几个问题 前几篇介绍怎么搭建SpringBoot工程 接下来直接入正题 什么是JDBC JDBC Java Dat