【浅学 JDBC】

news/2025/2/21 4:52:45/

浅学JDBC 笔记记录

  • 一、
    • 1. JDBC的概念
    • 2. JDBC快速入门
      • 2.1 DriverManager
      • 2.2 Connection
      • 2.3 Statement
      • 2.4 ResultSet
    • 3. JDBC入门案例使用
      • 3.1 查询所有学生信息
      • 3.2 根据id查询学生信息&&新增学生信息&&修改学生信息&&删除学生信息

一、

1. JDBC的概念

在这里插入图片描述

2. JDBC快速入门

import java.sql.*;public class JDBCDemo01 {public static void main(String[] args) throws ClassNotFoundException, SQLException {//1. 导入jar包   此处使用maven依赖引入//2. 注册驱动// 此步骤可以跳过 源码中已经填充// Class.forName("com.mysql.jdbc.Driver");//3. 获取连接Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/db8", "root", "root");//4. 获取执行者对象Statement stat = con.createStatement();//5. 执行sql语句,并且接受sql语句返回结果String sql="select * from account";ResultSet rs = stat.executeQuery(sql);//6.处理结果while (rs.next()){System.out.println(rs.getInt("id")+"\t"+rs.getString("name")+"\t"+rs.getString("money"));}//7.释放相关资源con.close();stat.close();rs.close();}
}

上面使用的类进行详解

2.1 DriverManager

在这里插入图片描述
在这里插入图片描述

2.2 Connection

在这里插入图片描述

2.3 Statement

在这里插入图片描述

2.4 ResultSet

在这里插入图片描述

3. JDBC入门案例使用

数据准备

create database db1;
use db1;
#创建Student表
create table student(id int primary key auto_increment,name varchar(20),age int,birthday Date
);
#添加数据
insert into student values (null,'张三',23,'1999-09-23'),(null,'李四',24,'1998-08-10'),(null,'王五',25,'1996-06-06')
,(null,'赵六',26,'1994-10-20');

实体类

package domain;import java.util.Date;public class Student {private Integer id;private String name;private Integer age;private Date birthday;public Student() {}public Student(Integer id, String name, Integer age, Date birthday) {this.id = id;this.name = name;this.age = age;this.birthday = birthday;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}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 Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}@Overridepublic String toString() {return "domain.Student{" +"id=" + id +", name='" + name + '\'' +", age=" + age +", birthday=" + birthday +'}';}
}

3.1 查询所有学生信息

dao:
public interface StudentDao {ArrayList<Student> findAll();}
daoImpl:
public class StudentDaoImpl implements StudentDao{//查询所有学生信息@Overridepublic ArrayList<Student> findAll() {ArrayList<Student> list=new ArrayList();Connection con =null;Statement statement =null;ResultSet resultSet =null;try {//1.注册驱动Class.forName("com.mysql.jdbc.Driver");//2.获取连接con = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1", "root", "root");//3.获取执行者对象statement = con.createStatement();//4.执行sql语句。并且接受返回的结果集String sql="select * from student";resultSet = statement.executeQuery(sql);//5.处理结果集while (resultSet.next()){Integer id=resultSet.getInt("id");String name=resultSet.getString("name");Integer age=resultSet.getInt("age");Date date=resultSet.getDate("birthday");//封装Student对象Student student=new Student(id,name,age,date);//将Student保存到集合对象list.add(student);}} catch (Exception e) {e.printStackTrace();}finally {if (con!=null){try {con.close();} catch (SQLException e) {e.printStackTrace();}}if (statement!=null){try {statement.close();} catch (SQLException e) {e.printStackTrace();}}if (resultSet!=null){try {resultSet.close();} catch (SQLException e) {e.printStackTrace();}}}return list;}
}
service:
public interface StudentService {//查询所有学生信息ArrayList<Student> findAll();}
serviceImpl:
public class StudentServiceImpl implements StudentService{private StudentDao dao=new StudentDaoImpl();@Overridepublic ArrayList<Student> findAll() {return dao.findAll();} }
controller:
package controller;import domain.Student;
import org.junit.Test;
import service.StudentService;
import service.StudentServiceImpl;import java.util.ArrayList;
public class StudentController {private StudentService  service=new StudentServiceImpl();@Testpublic void findAll(){ArrayList<Student> list = service.findAll();for (Student student:list){System.out.println(student);}}
}

成功:
在这里插入图片描述

3.2 根据id查询学生信息&&新增学生信息&&修改学生信息&&删除学生信息

dao:

package dao;import domain.Student;import java.util.ArrayList;/**Dao层接口*/public interface StudentDao {//查询所有学生信息ArrayList<Student> findAll();//条件查询,根据id获取学生信息Student findById(Integer id);//新增学生信息int insert(Student stu);//修改学生信息int update(Student stu);//删除学生信息int delete(Integer id);
}

daoImpl:

package dao;import domain.Student;import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
public class StudentDaoImpl implements StudentDao{//查询所有学生信息@Overridepublic ArrayList<Student> findAll() {ArrayList<Student> list=new ArrayList();Connection con =null;Statement statement =null;ResultSet resultSet =null;try {//1.注册驱动Class.forName("com.mysql.jdbc.Driver");//2.获取连接con = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1?useSSL=false", "root", "root");//3.获取执行者对象statement = con.createStatement();//4.执行sql语句。并且接受返回的结果集String sql="select * from student";resultSet = statement.executeQuery(sql);//5.处理结果集while (resultSet.next()){Integer id=resultSet.getInt("id");String name=resultSet.getString("name");Integer age=resultSet.getInt("age");Date date=resultSet.getDate("birthday");//封装Student对象Student student=new Student(id,name,age,date);//将Student保存到集合对象list.add(student);}} catch (Exception e) {e.printStackTrace();}finally {if (con!=null){try {con.close();} catch (SQLException e) {e.printStackTrace();}}if (statement!=null){try {statement.close();} catch (SQLException e) {e.printStackTrace();}}if (resultSet!=null){try {resultSet.close();} catch (SQLException e) {e.printStackTrace();}}}return list;}//条件查询,根据id获取学生信息@Overridepublic Student findById(Integer id) {Student student=new Student();Connection con =null;Statement statement =null;ResultSet resultSet =null;try {//1.注册驱动Class.forName("com.mysql.jdbc.Driver");//2.获取连接con = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1?useSSL=false", "root", "root");//3.获取执行者对象statement = con.createStatement();//4.执行sql语句。并且接受返回的结果集String sql="select * from student where id='"+id+"'";resultSet = statement.executeQuery(sql);//5.处理结果集while (resultSet.next()){Integer sid=resultSet.getInt("id");String name=resultSet.getString("name");Integer age=resultSet.getInt("age");Date date=resultSet.getDate("birthday");//封装Student对象student=new Student(sid,name,age,date);}} catch (Exception e) {e.printStackTrace();}finally {if (con!=null){try {con.close();} catch (SQLException e) {e.printStackTrace();}}if (statement!=null){try {statement.close();} catch (SQLException e) {e.printStackTrace();}}if (resultSet!=null){try {resultSet.close();} catch (SQLException e) {e.printStackTrace();}}}return student;}//新增学生信息@Overridepublic int insert(Student stu) {Connection con =null;Statement statement =null;int result=0;try {//1.注册驱动Class.forName("com.mysql.jdbc.Driver");//2.获取连接con = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1?useSSL=false", "root", "root");//3.获取执行者对象statement = con.createStatement();//4.执行sql语句。并且接受返回的结果集Date birthday = stu.getBirthday();SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");String date = sdf.format(birthday);String sql="insert into student values('"+stu.getId()+ "','"+stu.getName()+"','"+stu.getAge()+"','"+date+"')";result = statement.executeUpdate(sql);//5.处理结果集} catch (Exception e) {e.printStackTrace();}finally {if (con!=null){try {con.close();} catch (SQLException e) {e.printStackTrace();}}if (statement!=null){try {statement.close();} catch (SQLException e) {e.printStackTrace();}}}return result;}//修改学生信息@Overridepublic int update(Student stu) {Connection con =null;Statement statement =null;int result=0;try {//1.注册驱动Class.forName("com.mysql.jdbc.Driver");//2.获取连接con = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1?useSSL=false", "root", "root");//3.获取执行者对象statement = con.createStatement();//4.执行sql语句。并且接受返回的结果集Date birthday = stu.getBirthday();SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");String date = sdf.format(birthday);String sql="update student set  id='"+stu.getId()+"',name='"+stu.getName()+"',age='"+stu.getAge()+"',birthday='"+date+"' where id='"+stu.getId()+"'";result = statement.executeUpdate(sql);//5.处理结果集} catch (Exception e) {e.printStackTrace();}finally {if (con!=null){try {con.close();} catch (SQLException e) {e.printStackTrace();}}if (statement!=null){try {statement.close();} catch (SQLException e) {e.printStackTrace();}}}return result;}//删除学生信息@Overridepublic int delete(Integer id) {Connection con =null;Statement statement =null;int result=0;try {//1.注册驱动Class.forName("com.mysql.jdbc.Driver");//2.获取连接con = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1?useSSL=false", "root", "root");//3.获取执行者对象statement = con.createStatement();//4.执行sql语句。并且接受返回的结果集String sql="delete from student where id='"+id+"'";result = statement.executeUpdate(sql);} catch (Exception e) {e.printStackTrace();}finally {if (con!=null){try {con.close();} catch (SQLException e) {e.printStackTrace();}}if (statement!=null){try {statement.close();} catch (SQLException e) {e.printStackTrace();}}}return result;}
}

service:

package service;import domain.Student;import java.util.ArrayList;public interface StudentService {//查询所有学生信息ArrayList<Student> findAll();//条件查询,根据id获取学生信息Student findById(Integer id);//新增学生信息int insert(Student stu);//修改学生信息int update(Student stu);//删除学生信息int delete(Integer id);
}

serviceImpl:

package service;import dao.StudentDao;
import dao.StudentDaoImpl;
import domain.Student;import java.util.ArrayList;public class StudentServiceImpl implements StudentService{private StudentDao dao=new StudentDaoImpl();@Overridepublic ArrayList<Student> findAll() {return dao.findAll();}@Overridepublic Student findById(Integer id) {return dao.findById(id);}@Overridepublic int insert(Student stu) {return dao.insert(stu);}@Overridepublic int update(Student stu) {return dao.update(stu);}@Overridepublic int delete(Integer id) {return dao.delete(id);}
}

controller:

package controller;import com.sun.xml.internal.bind.v2.model.core.ID;
import domain.Student;
import org.junit.Test;
import service.StudentService;
import service.StudentServiceImpl;import java.util.ArrayList;
import java.util.Date;public class StudentController {private StudentService  service=new StudentServiceImpl();//查询所有学生信息@Testpublic void findAll(){ArrayList<Student> list = service.findAll();for (Student student:list){System.out.println(student);}}//条件查询,根据id获取学生信息@Testpublic void findById(){Student student=service.findById(1);System.out.println(student);}//新增学生信息@Testpublic void insert(){Student student=new Student(5,"李薇",88,new Date());int result = service.insert(student);if (result!=0){System.out.println("添加成功");}else {System.out.println("添加失败");}}//修改学生信息@Testpublic void update(){Student stu = service.findById(5);stu.setName("李兔兔");int result = service.update(stu);if (result!=0){System.out.println("更新成功");}else {System.out.println("更行失败");}}//删除学生信息@Testpublic void delete(){int result = service.delete(5);if (result!=0){System.out.println("删除成功");}else {System.out.println("删除失败");}}
}

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

相关文章

中国生物科技公司【Advanced Biomed】申请纳斯达克IPO上市

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 猛兽财经获悉&#xff0c;总部位于台湾台南的生物科技公司【Advanced Biomed】近期已向美国证券交易委员会&#xff08;SEC&#xff09;提交招股书&#xff0c;申请在纳斯达克IPO上市&#xff0c;股票代码为&#xff08;AD…

基于SSM的服装设计供需系统设计与实现

摘 要&#xff1a;作为服装设计的重要形式之一&#xff0c;服装具有显著的审美性&#xff0c;是人类情感表达不可忽视的代表形态。但在新时期背景下&#xff0c;随着服装设计的进一步优化&#xff0c;服装设计创新融合强度也随之增强。本文就服装设计供需系统进行深入探究。 服…

从入门到精通38万字超详细的Java面试题八股文知识点全面汇总

从入门到精通38万字超详细的Java面试题&八股文&知识点全面汇总 点击下方链接获取文档: 从入门到精通38万字超详细的Java面试题&八股文&知识点全面汇总 目录&#xff1a; 1、Java基础&框架&容器面试题 ​ 1.1 Java基础面试题 ​ 1.2 java容器面试题…

八、(重点)视图集ModelViewSet自定义action路由routers

上一章&#xff1a; 七、Django DRF框架GenericAPIView--搜索&排序&分页&返回值_做测试的喵酱的博客-CSDN博客 下一章&#xff1a; 九、DRF生成API文档_做测试的喵酱的博客-CSDN博客 一、视图集ModelViewSet与ReadOnlyViesSet ModelViewSet视图集 与 ReadOnly…

Emacs之git操作(一百零五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

REST风格 -- SpringMVC入门保姆级教程(四)

文章目录 前言四、REST风格1.了解REST风格2.REST风格写法一般步骤3.REST风格快速开发4.REST风格中的注解5. 案例&#xff1a;基于REST风格页面数据交互 总结 前言 为了巩固所学的知识&#xff0c;作者尝试着开始发布一些学习笔记类的博客&#xff0c;方便日后回顾。当然&#…

Linux更改SSH端口,并解决SSHD服务重启失败的问题

环境&#xff1a;Linux Centos 7 1.进入sshd配置文件&#xff1a;vi /etc/ssh/sshd_config 2、找到“#Port 22”这行&#xff0c;删掉注释符#&#xff0c;将端口改为&#xff08;想要变成的端口号 如&#xff1a;2022&#xff09;&#xff1a; 3.重启sshd服务&#xff1a; sy…

iPad触屏笔哪个牌子好用?Apple Pencil的平替笔

从无纸化的广泛使用&#xff0c;电容笔成为无纸化中不可替代的一部分。但由于原装电容笔的昂贵&#xff0c;市面上的电容笔品牌众多&#xff0c;不知如何下手&#xff0c;今天给大家推荐几款好用又平价的Apple Pencil平替笔。顺便给不知道如何挑选电容笔的小伙伴科普一下电容笔…