SpringBoot如何使用JDBC操作数据库呢?

2023-11-09

转自:

SpringBoot如何使用JDBC操作数据库呢?

下文笔者讲述SpringBoot中使用jdbc操作数据库的方法分享,如下所示:

实现思路:
    1.引入相应的jar包
    2.在application.yml配置相应的数据库连接信息及其它属性
    3.编写相应的业务代码

POM依赖的加入

 
<!--数据库连接jdbc依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!--mysql链接依赖-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
<!--阿里druid数据库链接依赖-->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.0.5</version>
</dependency>

application-dev.yml

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test
    username: root
    password: 123
    driver-class-name: com.mysql.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource

建表

CREATE TABLE `tp_user` (
  `user_id` int(10) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
  `tel` bigint(19) NOT NULL COMMENT '手机号=用户名',
  `password` varchar(35) NOT NULL COMMENT '密码',
  `nickname` varchar(30) DEFAULT NULL COMMENT '昵称',
  `secret` varchar(35) NOT NULL COMMENT '秘钥',
  `portrait` varchar(120) DEFAULT NULL COMMENT '头像地址',
  `i_card` varchar(18) NOT NULL DEFAULT '' COMMENT '身份证',
  `area` int(10) NOT NULL DEFAULT '0' COMMENT '所在区域',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间',
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=238 DEFAULT CHARSET=utf8
 

UserController

@RequestMapping("/user")
@RestController
public class UserController {

    @Autowired
    private UserService userService;

    /**
     * 添加用户
     * @param tel 注册手机号
     * @param pwd 设置密码
     */
    @PostMapping("/createUser")
    public void createUser(@RequestParam("tel") String tel, @RequestParam("pwd") String pwd){
        userService.createUser(tel,pwd);
    }

    /**
     * 更新用户信息
     * @param user_id 用户ID
     * @param nickName 昵称
     */
    @PutMapping("/updateUser/{id}")
    public void updateUser(@PathVariable("id") String user_id, @RequestParam("nickName") String nickName){
        userService.updateUser(user_id,nickName);
    }

    /**
     * 获取用户信息
     * @param id 用户Id
     * @return
     */
    @GetMapping("/getUser/{id}")
    public UserInfo getUser(@PathVariable("id")  Integer id){
        return userService.getUser(id);
    }

    @DeleteMapping("/deleteUserByUserId/{id}")
    public void deleteUserByUserId(@PathVariable("id")  Integer id){
        userService.deleteUserByUserId(id);
    }
} 

UserService

@Service
public class UserService {

    @Autowired
    UserInfoMapper userInfoMapper;

    public void createUser(String tel,String pwd) {
        userInfoMapper.createUser(tel,pwd);
    }

    public UserInfo getUser(Integer id) {
        return userInfoMapper.getUser(id);
    }

    public void updateUser(String user_id, String nickName) {
        userInfoMapper.updateUser(user_id,nickName);
    }

    public void deleteUserByUserId(Integer id) {
        userInfoMapper.deleteUserByUserId(id);
    }
}

UseInfoMapper

public interface UserInfoMapper {

    void createUser(String tel,String pwd);

    UserInfo getUser(Integer id);

    void updateUser(String user_id, String nickName);

    void deleteUserByUserId(Integer id);
}

UserInfoImpl

@Repository
public class UserInfoImpl implements UserInfoMapper {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Override
    public void createUser(String tel,String pwd) {
        jdbcTemplate.update("INSERT INTO test.tp_user(tel,password,nickname,secret) VALUES (?,md5(?),?,'')",tel,pwd,tel);
    }

    @Override
    public UserInfo getUser(Integer id) {
        List<UserInfo> userList = jdbcTemplate.query("select tel,nickname,password FROM test.tp_user WHERE user_id = ?",new Object[]{id},new BeanPropertyRowMapper(UserInfo.class));
        if(userList != null && userList.size() > 0){
            UserInfo user = userList.get(0);
            return user;
        }else {
            return null;
        }
    }

    @Override
    public void updateUser(String user_id, String nickName) {
        jdbcTemplate.update("UPDATE test.tp_user SET nickname = ? WHERE user_id = ?",nickName,user_id);
    }

    @Override
    public void deleteUserByUserId(Integer id) {
        jdbcTemplate.update("DELETE FROM test.tp_user WHERE user_id = ?",id);
    }
}
serivice中使用JdbcTemplate
然后借助JdbcTemplate中方法对数据库进行操作
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringBoot如何使用JDBC操作数据库呢? 的相关文章

  • AntDB内存管理之内存上下文之内存上下文机制是怎么实现的

    4 内存上下文机制是怎么实现的 下文将针对内存上下文机制进行代码说明 本次以AntDB的代码为例 来解析内存上下文的实现方式 4 1 最基础的数据结构 MemoryContextData和MemoryContextMethods是内存上下文
  • 【Mysql】InnoDB 引擎中的页目录

    一 页目录和槽 现在知道记录在页中按照主键大小顺序串成了单链表 那么我使用主键查询的时候 最顺其自然的办法肯定是从第一条记录 也就是 Infrimum 记录开始 一直向后找 只要存在总会找到 这种在数据量少的时候还好说 一旦数据多了 遍历耗
  • 高性能、可扩展、支持二次开发的企业电子招标采购系统源码

    在数字化时代 企业需要借助先进的数字化技术来提高工程管理效率和质量 招投标管理系统作为企业内部业务项目管理的重要应用平台 涵盖了门户管理 立项管理 采购项目管理 采购公告管理 考核管理 报表管理 评审管理 企业管理 采购管理和系统管理等多个
  • 【计算机毕业设计】校园体育赛事管理系统

    身处网络时代 随着网络系统体系发展的不断成熟和完善 人们的生活也随之发生了很大的变化 人们在追求较高物质生活的同时 也在想着如何使自身的精神内涵得到提升 而读书就是人们获得精神享受非常重要的途径 为了满足人们随时随地只要有网络就可以看书的要
  • 【计算机毕业设计】北关村基本办公管理系统

    在如今社会上 关于信息上面的处理 没有任何一个企业或者个人会忽视 如何让信息急速传递 并且归档储存查询 采用之前的纸张记录模式已经不符合当前使用要求了 所以 对北关村基本办公信息管理的提升 也为了对北关村基本办公信息进行更好的维护 北关村基
  • 软件测试/测试开发/全日制/测试管理丨Redis内存数据库

    Redis是一种开源 内存中的数据结构存储系统 它提供了高性能 灵活性和丰富的数据结构 以下是Redis内存数据库的基本介绍 键值存储 Redis基于键值对的存储模型 其中每个键都与一个特定的值相关联 这种简单的数据模型使其易于使用和理解
  • 图解python | 字符串及操作

    1 Python元组 Python的元组与列表类似 不同之处在于元组的元素不能修改 元组使用小括号 列表使用方括号 元组创建很简单 只需要在括号中添加元素 并使用逗号隔开即可 tup1 ByteDance ShowMeAI 1997 202
  • APP端网络测试与弱网模拟

    当前APP网络环境比较复杂 网络制式有2G 3G 4G网络 还有越来越多的公共Wi Fi 不同的网络环境和网络制式的差异 都会对用户使用app造成一定影响 另外 当前app使用场景多变 如进地铁 上公交 进电梯等 使得弱网测试显得尤为重要
  • 通俗易懂,十分钟读懂DES,详解DES加密算法原理,DES攻击手段以及3DES原理

    文章目录 1 什么是DES 2 DES的基本概念 3 DES的加密流程 4 DES算法步骤详解 4 1 初始置换 Initial Permutation IP置换 4 2 加密轮次 4 3 F轮函数 4 3 1 拓展R到48位 4 3 2
  • 电商数据api拼多多接口获取商品实时数据价格比价api代码演示案例

    拼多多商品详情接口 接口接入入口 它的主要功能是允许卖家从自己的系统中快速获取商品详细信息 通过这个接口 卖家可以提取到商品的各类数据 包括但不限于商品标题 价格 优惠价 收藏数 下单人数 月销售量等 此外 还可以获取到商品的SKU图 详情
  • 深入了解 Python MongoDB 查询:find 和 find_one 方法完全解析

    在 MongoDB 中 我们使用 find 和 find one 方法来在集合中查找数据 就像在MySQL数据库中使用 SELECT 语句来在表中查找数据一样 查找单个文档 要从MongoDB的集合中选择数据 我们可以使用 find one
  • 【计算机毕业设计】趵突泉景区的智慧导游小程序_5ztvv

    当今社会已经步入了科学技术进步和经济社会快速发展的新时期 国际信息和学术交流也不断加强 计算机技术对经济社会发展和人民生活改善的影响也日益突出 人类的生存和思考方式也产生了变化 传统趵突泉景区的智慧导游采取了人工的管理方法 但这种管理方法存
  • 面试官问,如何在十亿级别用户中检查用户名是否存在?

    面试官问 如何在十亿级别用户中检查用户名是否存在 前言 不知道大家有没有留意过 在使用一些app注册的时候 提示你用户名已经被占用了 需要更换一个 这是如何实现的呢 你可能想这不是很简单吗 去数据库里查一下有没有不就行了吗 那么假如用户数量
  • 数据库 | 面试官:一次到底插入多少条数据合适啊?.....面试连环炮

    数据库 面试官 一次到底插入多少条数据合适啊 面试连环炮 数据库插入操作的基础知识 插入数据是数据库操作中的基础 但是 我们程序员将面临随之而来的问题 如何快速有效地插入数据 并保持数据库 性能 当你向数据库中插入数据时 这些数据直接存储到
  • SpringBoot中整合MybatisPlus快速实现Mysql增删改查和条件构造器

    场景 Mybatis Plus 简称MP 是一个Mybatis的增强工具 只是在Mybatis的基础上做了增强却不做改变 MyBatis Plus支持所有Mybatis原生的特性 所以引入Mybatis Plus不会对现有的Mybatis构
  • 计算机Java项目|springboot校园台球厅人员与设备管理系统

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • MongoDB - 整合 SpringBoot 操作全流程

    目录 一 MongoDB 整合 SpringBoot 1 1 引入依赖 1 2 配置文件 1 3 集合操作 1 4 相关注解 1 5 文档操作 1 5 1 查询 1 5 2 更新 1 5 3 删除 一 MongoDB 整合 SpringBo
  • SAP ERP系统是什么?SAP好用吗?

    A公司是一家传统制造企业 公司曾先后使用过数个管理软件系统 但各部门使用的软件都是单独功能 导致企业日常管理中数据流与信息流相对独立 形成了 信息孤岛 随着公司近年业务规模的快速发展以及客户数量的迅速增加 企业原有的信息系统在销售预测及生产
  • PHP高校二手物品交易系统-计算机毕设 附源码04827

    PHP高校二手物品交易系统 目 录 摘要 1 绪论 1 1 研究背景 1 2
  • Python 使用 NoSQL 数据库的优选方案

    NoSQL 数据库因其高性能 可扩展性和灵活性而风靡一时 然而 对于 Python 程序员而言 选择合适的 NoSQL 数据库可能会令人困惑 因为有多种选择可供选择 那么 哪种 NoSQL 数据库最适合 Python 呢 2 解决方案 根据

随机推荐

  • 计算机启动过程详解

    打开电源启动机器几乎是电脑爱好者每天必做的事情 面对屏幕上出现的一幅幅启动画面 我们一点儿也不会感到陌生 但是 计算机在显示这些启动画面时都做了些什么工作呢 相信有的朋友还不是很清楚 本文就来介绍一下从打开电源到出现Windows的蓝天白云
  • opencv源码阅读之——iOS的两条接口UIImageToMat()和MatToUIImage()

    转自 https www cnblogs com panxiaochun p 5387743 html 本文为作者原创 未经允许不得转载 原文由作者发表在博客园 http www cnblogs com panxiaochun p 5387
  • 小程序微信支付申请与配置完整版操作流程

    小程序微信支付申请与配置完整版操作流程 一 申请小程序微信支付 微信支付申请分为两种情况 情况一 申请新的微信支付商户号 情况二 绑定已有微信支付商户号 注意 申请微信支付的小程序账户需要进行微信认证 注册主体为个人的小程序目前暂不支持微信
  • Excel转CSV格式

    注意 CSV文件导出来的 可以理解为 就是一个 普通的文件 但至于使用什么样的软件打开就是另一马事了 比如Excel打开后 出来 自动过滤了数字前面的0 这玩意程序控制不到 那是Excel的事情 CSV不是Excel文件切记 只不过用表格软
  • Cuda 11/10的Dockerfile

    说明 如果NVIDIA显卡不满足要求 请修改dockerfile文件配置要求或慎重使用 关于dockerfile使用请参考我的博客文章 https blog csdn net weixin 41194129 category 1021002
  • 期中总结(码猿周六下午)

    期中总结 这半个学期我们第一二节课考了试 但是 第一次 115分 第二次 110分 结果都很不理想 不过这也在情理之中 之后我们学习了 简单分治 前缀和 二分法 贪心加强 递推 但是实际上后面几题都听得云里雾里的 毕竟是基础不好 再加上码龄
  • 一元多项式求导 C语言

    设计函数求一元多项式的导数 注 x n n为整数 的一阶导数为nxn 1 输入格式 以指数递降方式输入多项式非零项系数和指数 绝对值均为不超过 1000 的整数 数字间以空格分隔 输出格式 以与输入相同的格式输出导数多项式非零项的系数和指数
  • 前端优秀插件网站汇总整理——轻松建站。。。

    1 Amaze Ui 妹子UI 中国首个html5跨屏前端框架 http amazeui org 2 WebUploader 一个简单的以HTML5为主 FLASH为辅的现代文件上传组件 http fex baidu com webuplo
  • <python爬虫之JS逆向实例-1>新浪网

    声明 本文只作学习研究 禁止用于非法用途 否则后果自负 如有侵犯了您的合法权益 请告知 我将及时更正 删除 谢谢 邮箱地址 lc1139411732 163 com 文章目录 一 项目准备 二 参数分析 三 静态调试 四 动态调试 五 堆栈
  • yml连接两个mysql数据库_SpringBoot 多数据源配置/连接两个数据库 (SpringBoot+Mysql+SqlServer)(亲测可用)...

    Boot项目原配Mysql数据库 业务需要加上sqlserver数据库 网上看了两天 趟了不少坑 其实网上帖子挺全的 我遇到的问题没有太多相关介绍 现在搞好后分享给大家 自己也做个记录 1 首先 依赖配置 按需配置重点是数据库jar包跟bo
  • 攻防世界-lottery

    得到flag要 9990000 通过抽奖的方式获得钱 基本要7个数字都相同 扫目录 依次点开 robots txt中有 git 用git下载 或者直接下载附件1 源码 然后打开api php API Application Programm
  • 使用selenium+Edge进行浏览器不显示图片操作(屏蔽图片)

    使用Edge不加载图片进行 from msedge selenium tools import Edge EdgeOptions Edge options EdgeOptions 很关键的一步 只有为True才能进行ADD Edge opt
  • LeetCode 1143. 最长公共子序列(C++)

    题目地址 力扣 题目难度 Medium 涉及知识点 动态规划 字符串匹配 分析 由于子序列不同于子串 子串必须要连续 而子序列可以不连续 假设最长子序列长度为k 那么我们如果要通过遍历的方法来暴力求解 其时间复杂度至少为O 这肯定是无法接受
  • 【华为OD机试 2023】最左侧冗余覆盖子串(C++ Java JavaScript Python)

    华为od机试题库 华为OD机试2022 2023 C Java JS Py https blog csdn net banxia frontend category 12225173 html 华为OD机试2023最新题库 更新中 C Ja
  • (fastjson)java 如何将String(字符串)与JSON互转

    一 导入依赖
  • Apple的示例SpeakHere不能运行解决

    From your error message Application windows are expected to have a root view controller at the end of application launch
  • 论文写作记录

    论文画图 在MATLAB中导出600dpi图像 导出设置dpi后 导出tif格式的图片 直接重命名为jpg格式
  • 从分层架构到微服务架构(五)之服务化架构

    从分层架构到微服务架构 是一系列介绍 Fundamentals of Software Architecture 中提到的8种架构模式的文章 这里不会事无巨细地介绍所有的细节 而是会挑选其中关键内容 更多详情请阅读原书 往期精彩 从分层架构
  • 静态的main方法为啥可以访问非静态成员

    首先第一点 静态方法中可以创建动态变量和方法 第二点 对象属于动态的 第三点 动态的可以调用调用静态的 综上 所以要在静态方法里面调用动态参数和动态的方法就可以通过创建对象来实现调用动态参数和动态的方法 https www bilibili
  • SpringBoot如何使用JDBC操作数据库呢?

    转自 SpringBoot如何使用JDBC操作数据库呢 下文笔者讲述SpringBoot中使用jdbc操作数据库的方法分享 如下所示 实现思路 1 引入相应的jar包 2 在application yml配置相应的数据库连接信息及其它属性