Java 直接使用JDBC操作数据库

news/2024/9/23 6:45:56/

        直接使用JDBC操作数据库

java">package com.wzb.JDBCExercise20240922;import com.wzb.Pojo20240922.User;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;public class JDBCExercise {// 通过Mybatis可以便捷地操作数据库,但是Java语言操作数据库实际上只有一种方式:JDBC// JDBC(Java DataBase Connectivity):其就是使用Java语言操作关系型数据库的一套API// Java提供官方定义的操作关系型数据库的规范(接口)// 各个厂商实现这个接口,提供对应的数据库驱动jar包// 程序员使用接口(JDBC)操作数据库,但是真正执行的代码是驱动jar包的实现类// 直接使用JDBC程序操作数据库// 1.注册驱动// 2.获取连接对象// 3.执行SQL语句,返回执行结果// 4.处理执行的结果// 5.释放资源public void testJdbc() throws ClassNotFoundException, SQLException {// 1.注册驱动Class.forName("com.mysql.cj.jdbc.Driver");// 2.获取数据库连接String url = "jdbc:mysql://127.0.0.1:3306/springboot";String username = "root";String password = "123456";Connection connection = DriverManager.getConnection(url, username, password);// 3.执行SQL语句// 获取操作SQL的对象Statement statement = connection.createStatement();String selectSql = "select * from user";// SQL查询的结果将封装到ResultSet对象中,需要在ResultSet对象中处理数据ResultSet rs = statement.executeQuery(selectSql);// 创建集合,用于存储User对象List<User> userList = new ArrayList<>();// 4.处理SQL执行的结果// 循环读取rs中从SQL返回的数据,只要还有数据,就继续读取while (rs.next()) {// 取出一行记录中id、name、age、gender、phone下的数据int id = rs.getInt("id");String name = rs.getString("name");short age = rs.getShort("age");short gender = rs.getShort("gender");String phone = rs.getString("phone");// 将一行记录中的数据封装到User对象中User user = new User(id, name, age, gender, phone);// 将User对象加入到集合中userList.add(user);}// 5.释放资源statement.close();connection.close();rs.close();// 使用集合for (User user : userList) {System.out.println(user);}}// 使用原始的JDBC存在的问题:// 1.数据库连接的驱动、连接、登录全部都硬编码在Java代码中// 2.查询结果的解析及其对象的封装十分繁琐// 3.每一次查询数据库都需要获取连接,操作完成之后需要释放连接,多次连接、释放;导致浪费资源// Mybatis如何解决原始JDBC的问题:// 1.将数据库连接的四要素(驱动、连接、用户名、密码),全部配置在springboot默认的配置文件(application.properties)// 2.查询结果的解析及其封装全部由Mybatis完成,无需手动编写// 3.Mybatis中使用了数据库的连接池技术,避免了频繁地创建连接、销毁连接带来的资源浪费// 在使用Mybatis时,最重要的两点:// 1.正确的配置application.properties数据库连接配置文件// 驱动类名称、数据库连接的URL、登录数据库的用户和密码// 2.正确的合理的Mapper接口}


http://www.ppmy.cn/news/1529194.html

相关文章

Wireshark学习使用记录

wireshark 是一个非常好用的抓包工具&#xff0c;使用 wireshark 工具抓包分析&#xff0c;是学习网络编程必不可少的一项技能。 原理 Wireshark使用的环境大致分为两种:一种是电脑直连互联网的单机环境&#xff0c;另外一种就是应用比较多的互联网环境&#xff0c;也就是连接…

基尔霍夫衍射理论

一、矢量理论到标量理论 前提条件:介质同时具有线性、各向同性、均匀性且无色散。 结论:电场和磁场的所有分量的行为完全相同,可由单一的一个标量波动方程描述,标量理论可以完全准确的代替矢量理论。 若介质不具备上述前提,则用标量理论来表征矢 量理论就会引入误差。 …

C语言 | Leetcode C语言题解之第430题扁平化多级双向链表

题目&#xff1a; 题解&#xff1a; /* // Definition for a Node. class Node { public:int val;Node* prev;Node* next;Node* child; }; */#define INIT_CAPACITY 4class Solution { public:struct c_stack{Node** array;int top;int capacity;};//创建栈struct c_stack* St…

@EnableScheduling 和 @Scheduled 实现定时任务的任务延期问题

前言 在复盘 ieg 一面看到定时任务阻塞的问题时&#xff0c;研究了下 EnableScheduling 的源码&#xff0c;觉得可以单开一篇文章讲一讲 本文主要讲述了使用 EnableScheduling 可能出现的线程阻塞导致定时任务延期的问题&#xff0c;也顺便解释了动态定时任务源码上的实现 引…

MySQL RANGE 分区规则

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云/阿里云/华为云/51CTO&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互…

yarn : 无法加载文件 C:\Users\Rog\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本

yarn : 无法加载文件 C:\Users\Rog\AppData\Roaming\npm\yarn.ps1&#xff0c;因为在此系统上禁止运行脚本 设置命令行窗口默认以管理员身份运行&#xff0c;在此基础上输入以下代码&#xff0c;应该就好使了&#xff0c;切记&#xff0c;以下代码才是关键&#xff0c;我基本上…

浏览器插件利器--allWebPluginV2.0.0.20-stable版发布

allWebPlugin简介 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品&#xff0c;致力于将浏览器插件重新应用到所有浏览器。它将现有ActiveX控件直接嵌入浏览器&#xff0c;实现插件加载、界面显示、接口调用、事件回调等。支持Chrome、Firefo…

计算机毕业设计Python深度学习垃圾邮件分类检测系统 朴素贝叶斯算法 机器学习 人工智能 数据可视化 大数据毕业设计 Python爬虫 知识图谱 文本分类

基于朴素贝叶斯的邮件分类系统设计 摘要&#xff1a;为了解决垃圾邮件导致邮件通信质量被污染、占用邮箱存储空间、伪装正常邮件进行钓鱼或诈骗以及邮件分类问题。应用Python、Sklearn、Echarts技术和Flask、Lay-UI框架&#xff0c;使用MySQL作为系统数据库&#xff0c;设计并实…