您当前的位置:首页 > 电脑百科 > 程序开发 > 框架

SpringBoot通过JdbcTemplate操作MySQL数据库

时间:2021-11-05 09:59:44  来源:  作者:同福编程

1. 介绍

1.1 介绍

今天开始我们来学习JAVA操作MySQL数据库的技巧,Java操作MySQL是借助JdbcTemplate这个对象来实现的。JdbcTemplate是一个多数据库集中解决方案,而我们今天只讲如何通过JdbcTemplate操作MySQL数据库。

Java的生态非常成熟,基本上是无框架不项目,无论做任何功能都一定会基于一个框架来开发。福哥选择的就是非常大众的非常普及的SpringBoot框架,今天的教程也是基于这个SpringBoot框架的。因为今天的主题是使用JdbcTemplate操作MySQL数据库,所以还不熟悉SpringBoot框架的童鞋们请自行恶补一下,福哥前面的文章也有介绍SpringBoot框架的,大家可以找来学习。

2. 安装

2.1 配置

Application.properties里面设置jdbc连接mysql的配置参数。

spring.datasource.url=jdbc:mysql://192.168.2.168:3306/test?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&serverTimezone=UTC&autoReconnect=true&useSSL=false
spring.datasource.username=root
spring.datasource.password=abcdef
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver

2.2 依赖

在pom.xml里面添加jdbc的库包,这里面包括jdbc库包和mysql连接器库包。

<!-- mysql -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.17</version>
</dependency>

<!-- jdbc -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jdbc</artifactId>
    <version>2.1.7.RELEASE</version>
</dependency>

3. 配置

因为SpringBoot倡导就是大部分功能都可以自动完成配置和初始化,完全不用我们写代码,这是所有Java程序员的梦想,如今SpringBoot给实现了~(怪不得那么多人只用SpringBoot开发呢。。)

3. 对象注入

在控制器对象里面注入JdbcTemplate类,就可以直接使用这个JdbcTemplate类的属性来操作MySQL数据库了,不要太爽!

@Autowired
JdbcTemplate jdbcTemplate;

4. 数据库列表

JdbcTemplate没有单独的方法用来获取数据库列表,福哥是通过执行“show databases”语句获取数据库列表信息的。这是一个最简单的查询语句的示例,大家看好了。

List<Map<String, Object>> map = jdbcTemplate.queryForList("show databases");
SpringBoot通过JdbcTemplate操作MySQL数据库

 

5. 数据表列表

同样的JdbcTemplate也没有用来获取数据表列表的方法,福哥是通过执行“show tables”语句获取当前数据库的数据表列表的。

当前数据库是在配置Jdbc数据源的时候通过jdbc-url配置的,所以福哥改了一下配置文件的jdbc-url参数,将数据库设置成tfums库了。

5.1 配置

spring.datasource.url=jdbc:mysql://192.168.2.168:3306/tfums?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&serverTimezone=UTC&autoReconnect=true&useSSL=false
spring.datasource.username=root
spring.datasource.password=abcdef
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver

5.2 程序

List<Map<String, Object>> map = jdbcTemplate.queryForList("show tables");
SpringBoot通过JdbcTemplate操作MySQL数据库

 

6. 插入数据

6.1 插入数据

插入数据是通过JdbcTemplate的update方法执行一个SQL语句完成的,如果SQL语句有参数可以通过“?”替代,然后通过一个Object数组传递参数。因为Java是强类型语言,传递SQL参数相比较php就舒服多了,因为我们不需要指定参数的类型,JdbcTemplate会帮我们搞定。

插入数据是否成功就看有没有异常抛出就可以了,没插入成功一定会有原因的嘛~~

try {
    String sql = "insert into user (passwd, createDT, userFlag, userState, userName)" +
            " values (?, now(), ?, ?, ?)";
    Object[] values = new Object[]{"123456", 7, 1, "福哥教JdbcTemplate"};
    Integer ret = jdbcTemplate.update(sql, values);
    
    return ret.toString();
}
catch (Exception e){

    return e.getMessage();
}

第一次执行的时候不会报错,多次执行就会有下面的错误信息了!

SpringBoot通过JdbcTemplate操作MySQL数据库

 

6.2 获取自增列数值

刚刚福哥向用户表user插入了一条数据,用户表user的主键是自增列,要获取新数据的自增列的数值需要自己通过SQL获得。

try {
    String sql = "insert into user (passwd, createDT, userFlag, userState, userName)" +
            " values (?, now(), ?, ?, ?)";
    Object[] values = new Object[]{"123456", 7, 1, "福哥教JdbcTemplate"};
    Integer ret = jdbcTemplate.update(sql, values);
    Map map = jdbcTemplate.queryForMap("select LAST_INSERT_ID() as newId");
    
    return map.get("newId").toString();
}
catch (Exception e){

    return e.getMessage();
}
SpringBoot通过JdbcTemplate操作MySQL数据库

 

7. 更新数据

更新数据就是执行UPDATE语句了,更新语句的条件自然就是通过刚刚获取到的自增列的数值了。更新是否成功也是看是否有异常抛出,如果没有抛出就是执行成功了!

我们还可以通过update方法的返回值获得本次更新语句影响了多少行的数据!

try {
    String sql = "update user set lastLoginDT = now()" +
            " where userID = ?";
    Object[] values = new Object[]{16};
    Integer ret = jdbcTemplate.update(sql, values);
    
    return ret.toString();
}
catch (Exception e){

    return e.getMessage();
}
SpringBoot通过JdbcTemplate操作MySQL数据库

 

8. 删除数据

删除数据是通过DELETE语句完成的,删除语句的条件自然也是根据自增列的数值了。

删除是否成功也是通过是否有异常抛出判断的,如果没有异常抛出就表示执行成功了!

删除行数也可以通过update方法的返回值得到!

try {
    String sql = "delete from user" +
            " where userID = ?";
    Object[] values = new Object[]{16};
    Integer ret = jdbcTemplate.update(sql, values);
    
    return ret.toString();
}
catch (Exception e){

    return e.getMessage();
}
SpringBoot通过JdbcTemplate操作MySQL数据库

 

9. 查询数据

查询语句就是SELECT语句,这是数据库操作里面最最常用的SQL语句了,单表查询、多表连接查询、子查询、分组查询、汇总查询、结果排序等等一系列的SQL查询技巧福哥今天不想在这里讲解,我们只用一个最简单的单表查询演示JdbcTemplate是如何实现数据查询的就可以了~~

JdbcTemplate有非常多的query方法可以适应各种情况的需要,而一般情况下查询单行数据可以使用queryForMap,查询多行数据可以使用queryForList,最终得到的都是Map<String, Object>这个经典的数据结构。

List<Map<String, Object>> map = jdbcTemplate.queryForList("select * from user order by userID desc");
String ret = "";
for(int i=0;i<map.size();i++){
    Map<String, Object> myMap = map.get(i);
    ret += myMap.get("userID").toString() + "@" + myMap.get("userName") + "<br />";
}
SpringBoot通过JdbcTemplate操作MySQL数据库

 

10. 注意事项

使用JdbcTemplate对象操作MySQL数据库有一些注意事项,大家一定要认真看哦~~

  • 一定要保证数据库服务的健康状态以及数据源参数的可用性,否则会一旦连接失败就会造成项目无法启动的风险。
  • 无论的读取数据还是插入数据又或者是更新数据,最好将逻辑放入try ... catch语句里面,避免程序异常。

11. 总结

今天福哥给童鞋们演示了使用JdbcTemplate库连接MySQL数据库进行各种常规操作的技巧,这里面都是一些简单的基础操作。不过,即使是复制的SQL语句也和今天福哥将的内容大同小异,举一反三就可以实现了。

后面福哥会找时间专门给童鞋们讲解SQL语句的使用技巧,包括各种复杂的使用场景,各种复杂的查询语句,大家可以先行自己研究研究。

 

https://tongfu.net/home/35/blog/513569.html



Tags:JdbcTemplate   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
1. 介绍1.1 介绍今天开始我们来学习Java操作MySQL数据库的技巧,Java操作MySQL是借助JdbcTemplate这个对象来实现的。JdbcTemplate是一个多数据库集中解决方案,而我们今天只讲...【详细内容】
2021-11-05  Tags: JdbcTemplate  点击:(30)  评论:(0)  加入收藏
作者:scherman来源:segmentfault.com/a/1190000018472572因为项目需要选择数据持久化框架,看了一下主要几个流行的和不流行的框架,对于复杂业务系统,最终的结论是,JOOQ是总体上最...【详细内容】
2020-07-04  Tags: JdbcTemplate  点击:(68)  评论:(0)  加入收藏
▌简易百科推荐
近日只是为了想尽办法为 Flask 实现 Swagger UI 文档功能,基本上要让 Flask 配合 Flasgger, 所以写了篇 Flask 应用集成 Swagger UI 。然而不断的 Google 过程中偶然间发现了...【详细内容】
2021-12-23  Python阿杰    Tags:FastAPI   点击:(6)  评论:(0)  加入收藏
文章目录1、Quartz1.1 引入依赖<dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.2</version></dependency>...【详细内容】
2021-12-22  java老人头    Tags:框架   点击:(11)  评论:(0)  加入收藏
今天来梳理下 Spring 的整体脉络啦,为后面的文章做个铺垫~后面几篇文章应该会讲讲这些内容啦 Spring AOP 插件 (了好久都忘了 ) 分享下 4ye 在项目中利用 AOP + MybatisPlus 对...【详细内容】
2021-12-07  Java4ye    Tags:Spring   点击:(14)  评论:(0)  加入收藏
&emsp;前面通过入门案例介绍,我们发现在SpringSecurity中如果我们没有使用自定义的登录界面,那么SpringSecurity会给我们提供一个系统登录界面。但真实项目中我们一般都会使用...【详细内容】
2021-12-06  波哥带你学Java    Tags:SpringSecurity   点击:(18)  评论:(0)  加入收藏
React 简介 React 基本使用<div id="test"></div><script type="text/javascript" src="../js/react.development.js"></script><script type="text/javascript" src="../js...【详细内容】
2021-11-30  清闲的帆船先生    Tags:框架   点击:(19)  评论:(0)  加入收藏
流水线(Pipeline)是把一个重复的过程分解为若干个子过程,使每个子过程与其他子过程并行进行的技术。本文主要介绍了诞生于云原生时代的流水线框架 Argo。 什么是流水线?在计算机...【详细内容】
2021-11-30  叼着猫的鱼    Tags:框架   点击:(21)  评论:(0)  加入收藏
TKinterThinter 是标准的python包,你可以在linx,macos,windows上使用它,你不需要安装它,因为它是python自带的扩展包。 它采用TCL的控制接口,你可以非常方便地写出图形界面,如...【详细内容】
2021-11-30    梦回故里归来  Tags:框架   点击:(26)  评论:(0)  加入收藏
前言项目中的配置文件会有密码的存在,例如数据库的密码、邮箱的密码、FTP的密码等。配置的密码以明文的方式暴露,并不是一种安全的方式,特别是大型项目的生产环境中,因为配置文...【详细内容】
2021-11-17  充满元气的java爱好者  博客园  Tags:SpringBoot   点击:(25)  评论:(0)  加入收藏
一、搭建环境1、创建数据库表和表结构create table account(id INT identity(1,1) primary key,name varchar(20),[money] DECIMAL2、创建maven的工程SSM,在pom.xml文件引入...【详细内容】
2021-11-11  AT小白在线中  搜狐号  Tags:开发框架   点击:(29)  评论:(0)  加入收藏
SpringBoot开发的物联网通信平台系统项目功能模块 功能 说明 MQTT 1.SSL支持 2.集群化部署时暂不支持retain&will类型消 UDP ...【详细内容】
2021-11-05  小程序建站    Tags:SpringBoot   点击:(55)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条