Springboot框架——4.整合jdbc

news/2024/5/22 11:22:50

1.pom.xml中导入依赖:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.46</version>
</dependency>

2.在Application.properties中指定连接池参数:

spring.datasource.url=jdbc:mysql:///springboot
spring.datasource.username=root
spring.datasource.password=123456#以下参数可不设置
#spring.datasource.driverClassName=com.mysql.jdbc.Driver
#spring.datasource.hikari.idle-timeout=60000
#spring.datasource.hikari.maximum-pool-size=30
#spring.datasource.hikari.minimum-idle=10

3.编写实体类(属性和表字段对应,这里jdbc支持表字段带下划线时自动专为驼峰命名法的属性字段):

package com.lxj.domain;import java.util.Date;public class User {private Integer id;private String userName;private String passWord;private String name;private Integer age;private Integer sex;private Date birthday;private Date created;private Date updated;private  String note;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassWord() {return passWord;}public void setPassWord(String passWord) {this.passWord = passWord;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public Integer getSex() {return sex;}public void setSex(Integer sex) {this.sex = sex;}public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}public Date getCreated() {return created;}public void setCreated(Date created) {this.created = created;}public Date getUpdated() {return updated;}public void setUpdated(Date updated) {this.updated = updated;}public String getNote() {return note;}public void setNote(String note) {this.note = note;}@Overridepublic String toString() {return "User{" +"id=" + id +", userName='" + userName + '\'' +", name='" + name + '\'' +", age=" + age +", birthday=" + birthday +", note='" + note + '\'' +'}';}
}

4.编写dao: 

package com.lxj.dao;import com.lxj.domain.User;
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.List;@Repository
public class JdbcDao {@Autowiredprivate JdbcTemplate jdbcTemplate;public List<User> findAll(){//BeanPropertyRowMapper : 可以把同名字段赋值给属性return jdbcTemplate.query("select * from tb_user",new BeanPropertyRowMapper<>(User.class));}
}

@Repository注解便用于将数据访问层 (DAO 层 ) 的类标识为 Spring Bean。具体只需将该注解标注在 DAO类上即可。

5.写一个test类进行测试:

@RunWith(SpringRunner.class)
@SpringBootTest
public class JdbcDaoTest extends TestCase {@Autowiredprivate JdbcDao jdbcDao;@Testpublic void findAll() {jdbcDao.findAll().forEach(user -> {System.out.println(user);});}
}

@RunWith(SpringRunner.class)的作用表明Test测试类要使用注入的类,比如@Autowired注入的类,有了@RunWith(SpringRunner.class)这些类才能实例化到spring容器中,自动注入才能生效。

@SpringBootTest替代了spring-test中的@ContextConfiguration注解,目的是加载ApplicationContext,启动spring容器。使用@SpringBootTest时并没有像@ContextConfiguration一样显示指定locations或classes属性,原因在于@SpringBootTest注解会自动检索程序的配置文件,检索顺序是从当前包开始,逐级向上查找被@SpringBootApplication或@SpringBootConfiguration注解的类。

在方法前加上 @Test , 则该方法即为测试方法,可以执行。

6.打印结果:

表结构:


http://www.mrgr.cn/p/16874410

相关文章

电机控制器电路板布局布线参考指导(五)

电机控制器电路板布局布线参考指导&#xff08;五&#xff09;大容量电容和旁路电容的放置 1.大容量电容的放置2.电荷泵电容器3.旁路电容/去耦电容的放置3.1 靠近电源3.2 靠近功率器件3.3 靠近开关电流源3.4 靠近电流感测放大器3.5 靠近稳压器 tips&#xff1a;资料主要来自网络…

【CSP】90%解压缩80%化学方程式 两道大模拟

大模拟就没什么太多说的了,《解压缩》需要用一点位运算,《化学方程式》需要用字符串。 学到的主要经验就是,使用次数>2的功能拆分到不同函数内,并且对于难写的函数提前单独调试错误,不要等写完了再debug。 对于《化学方程式》,我使用模块化思想。第一步拆成不同的项,…

第一篇博客test

MarkDown 基础 1.标题 最多五个#号 2.引用:这是一段引用 用大于号实现3.列表 3.1无序列表 把大象放进冰箱:打开冰箱 把大象塞进去 关上冰箱3.2无序列表短横线-实现阿斯芬迪 我无敌 我牛逼3.3方块横杠+[]实现吃饭睡觉打豆豆选中3.4块 代码块:```实现 int main() {return 0; }…

鸿蒙入门02-首次安装和配置

注&#xff1a;还没有安装编辑器&#xff08; deveco studio &#xff09;的小伙伴请看鸿蒙入门01-下载和安装-CSDN博客 首次安装配置 编辑器&#xff08; deveco studio &#xff09;安装完毕以后需要进入配置界面进行相关配置配置完毕以后才可以正常使用 环境配置&#xf…

半导体行业芯片加工机台数据采集,如何同时保证效率和准确性?

半导体行业的重要性不言而喻,随着互联网时代技术的不断更新和演进,芯片的应用更加广泛,新能源、信息通讯设备、4C产业、智能电网等领域均需要芯片的支撑。而芯片的制造涉及多个关键步骤,包括晶圆制备、氧化、光刻、刻蚀、薄膜沉积等。在制造过程中,精密的设备和技术被用来…

基于Docker构建CI/CD工具链(六)使用Apifox进行自动化测试

添加测试接口 在Spring Boot Demo项目里实现一个简单的用户管理系统的后端功能。具体需求如下&#xff1a; 实现了一个RESTful API&#xff0c;提供了以下两个接口 &#xff1a; POST请求 /users&#xff1a;用于创建新的用户。GET请求 /users&#xff1a;用于获取所有用户的列…

结对编程(c语言)

作业要求:小学老师要每周给同学出300道四则运算练习题。 选择c语言进行实现 –两个运算符,100 以内的数字,不需要写答案。 –需要检查答案是否正确,并且保证答案在 0..100 之间 –尽可能地多设置一些条件 也可以让同学们自选一个小应用程序进行结对编程的开发 请两位同学以…

【Redis 神秘大陆】009 案例实践进阶

九、案例实践&进阶方案 9.1 本地缓存组件选型 使用缓存组件时需要重点关注集群方式、集群、缓存命中率。 需要关注集群组建方式、缓存统计&#xff1b;还需要考虑缓存开发语言对缓存的影响&#xff0c;如对于JAVA开发的缓存需要考虑GC的影响&#xff1b;最后还要特别关注…

【vue3】插件@tsparticles/vue3、tsparticles实现粒子特效

文章目录 一、安装依赖二、全局引入三、使用 一、安装依赖 npm i tsparticles/vue3 npm i tsparticles二、全局引入 // main.js import Particles from tsparticles/vue3 import { loadFull } from tsparticlesconst app createApp(App) app.use(Particles, {init: async (e…

车辆信息查询 - 高效快捷地获取车辆相关信息的利器

随着汽车的普及,车辆信息查询变得越来越重要。无论是买车、卖车还是维修保养,了解车辆的详细信息是必不可少的。而如何高效快捷地查询车辆信息成为了很多车主的需求。幸运的是,我们有一个非常实用的接口可以满足这个需求,而这就是挖数据平台提供的车辆信息查询接口。 这个接…

11 Php学习:函数

PHP 内建函数Array 函数 PHP Array 函数是 PHP 核心的组成部分。无需安装即可使用这些函数。 创建 PHP 函数 当您需要在 PHP 中封装一段可重复使用的代码块时&#xff0c;可以使用函数。下面详细解释如何创建 PHP 函数并举例说明。 创建 PHP 函数的语法 PHP 函数的基…

boder 阴影

好看的boder 阴影 <Border BorderThickness="1" Grid.Column="2" Grid.Row="1"><Border BorderThickness="1" Grid.Column="2" Grid.Row="1"Margin="5"BorderBrush="#e2e2e2"Bac…

vue:如何通过两个点的经纬度进行距离的计算(很简单)

首先假设从api获取到了自己的纬经度和别人的纬经度 首先有一个概念需要说一下 地球半径 由于地球不是一个完美的球体&#xff0c;所以并不能用一个特别准确的值来表示地球的实际半径&#xff0c;不过由于地球的形状很接近球体&#xff0c;用[6357km] 到 [6378km]的范围值可以…

DRV8711驱动器的各寄存器的介绍

一、CTRL Register (Address = 0x00) ISENSE放大器增益设置:设定值越大时,表示在任何频率的指令脉冲下,位置滞后量越小;位置环的前馈增益大,控制系统的高速响应特性提高,但会使系统的位置不稳定,容易产生振荡; 死亡时间设置:电机驱动死区时间指的是在电机的控制信号由…

Python的pytest框架(1)--基本概念、入门

按基础到进阶的顺序&#xff0c;学习Python的pytest框架&#xff0c;本篇文章先讲一讲pytest的基本概念、入门使用规则。 目录 一、pytest基础知识 1、安装 2、pytest框架主要做了什么工作 二、pytest的规则约定、运行方式以及参数详解 1、编写测试用例 模块&#xff08…

Bogus 实战:使用 Bogus 和 EFCore 生成模拟数据和种子数据【完整教程】

引言 上一章我们介绍了在xUnit单元测试中用xUnit.DependencyInject来使用依赖注入,上一章我们的Sample.Repository仓储层有一个批量注入的接口没有做单元测试,今天用这个示例来演示一下如何用Bogus创建模拟数据 ,和 EFCore 的种子数据生成 Bogus 的优势丰富的数据生成支持:…

PR2024教程-2.1 pr2024安装教程

下载地址:伊梦老师素材 安装文件目录:伊梦/pr2024素材/q全家桶/2024 Win版/2023年10月版/一键安装激活版/Adobe Premiere Pr 2024 v24.0.0.58 安装流程:安装pr 选择pr安装位置和语言 (注意的是尽量把pr扔到有很大剩余空间的盘 因为视频缓存 视频本身 自动保存 等等都需要占用很…

转换为elementUI提示方法为uni-app的showToast提示

// 转换为elementUI提示方法为uni-app的showToast提示---------------------------------------- // 一般提示 Vue.prototype.$message function(title) {title && uni.showToast({icon: none,title}); }; // 成功提示 Vue.prototype.$message.success (title) > …

3-04. 实现箱子储物空间的保存和数据交换

实现箱子与背包数据交换 修改 SlotUI修改 InventoryManager修改 SlotUI实现箱子数据保存 目标 当场景切换之后,箱子里面的数据不能丢失 修改 InventoryManager修改 Box修改 InventoryManager修改 Box修改 DataCollection修改 ItemManager修改 Box修改 ItemManager修改 Box修改…

简单3步,OpenHarmony上跑起ArkUI分布式小游戏

标准系统新增支持了方舟开发框架&#xff08;ArkUI&#xff09;、分布式组网和 FA 跨设备迁移能力等新特性&#xff0c;因此我们结合了这三种特性使用 ets 开发了一款如下动图所示传炸弹应用。 打开应用在通过邀请用户进行设备认证后&#xff0c;用户须根据提示完成相应操作&am…