javaweb实训第四天上午——JDBC入门(4)

简介: 5.重构现在已经完成CRUD的功能,但是有些东西很不爽:   ① try -catch 关闭资源;   ② 驱动名称,url,username,password 每次都要写;–(万一数据库修改了)最好把这些东西抽取出来;

javaweb实训第四天上午——JDBC入门(3)https://developer.aliyun.com/article/1414844

5.重构

现在已经完成CRUD的功能,但是有些东西很不爽:

   ① try -catch 关闭资源;

   ② 驱动名称,url,username,password 每次都要写;–(万一数据库修改了)

最好把这些东西抽取出来;

  ③ class.forName 和 拿到连接都一样。 --抽取

   ④ 硬编码问题.

1 对于连接数据的一些参数,我们可以抽取(以后进行修改的时候方法,只需要改上面的参数就可以了)

20210602095208359.png

2 将参数抽取到一个单独的类里面(好处,其它类要使用只需修改这一份)

20210602095213955.png

3 每次操作都需要去注册驱动,得到连接

public class JDBCUtil {
  private  static String driverName = "com.mysql.jdbc.Driver";
  private  static String url = "jdbc:mysql://localhost:3306/mydb";
  private  static String userName = "root";
  private  static String password = "admin";
  private static JDBCUtil instance= null;
  Connection connection ;
  static{
try {
      //注册驱动
      Class.forName(driverName);
      instance = new JDBCUtil();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
  private JDBCUtil(){}
  public static JDBCUtil getInstance(){
    return instance;
  }
  /**
   * 拿到连接对象
   * @return
   */
  public Connection getConn(){
    try {
      return DriverManager.getConnection(url, userName, password);
    } catch (SQLException e) {
      e.printStackTrace();
    }
    return null;
  }
}

4 每次都要关闭资源(这代码没技术含量) JDBCUtil中添加关闭资源的方法

20210602095235315.png


5 参数是硬编码在代码中(我们要把它放到资源文件中去)

/**
 * 操作数据库的工具类
 * @author Administrator
 *
 */
public class JDBCUtil {
  private static JDBCUtil instance= null;
  //用作读取资源文件
  private static Properties prop = null;
  static{
    try {
      prop = new Properties();
      //去加载资源文件
      prop.load(Thread.currentThread().getContextClassLoader()
          .getResourceAsStream("jdbc.properties"));
      //注册驱动
Class.forName(prop.getProperty("driverName"));
      instance = new JDBCUtil();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
  private JDBCUtil(){}
  public static JDBCUtil getInstance(){
    return instance;
  }
  /**
   * 拿到连接对象
   * @return
   */
  public Connection getConn(){
    try {
      return  DriverManager.getConnection(prop.getProperty("url"),
            prop.getProperty("userName"), prop.getProperty("password"));
    } catch (SQLException e) {
      e.printStackTrace();
    }
    return null;
  }
  /**
   * 用来关闭资源
   */
  public void close(ResultSet rs,Statement st,Connection conn){
    try {
      if(rs!=null)rs.close();
    } catch (Exception e) {
      e.printStackTrace();
    }finally{
      try {
        if(st!=null)st.close();
      } catch (Exception e) {
        e.printStackTrace();
      }finally{
        try {
          if(conn!=null)conn.close();
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
    }
  }
}

6.课程总结

6.1重点

JDBC的理解(接口或者规范 自己没有实现,由各地数据库厂商实现)

熟练的使用JDBC完成数据库的CRUD贾琏欲执事

理解DAO层,能够熟练把代码抽成DAO层

先创建一个domain包 ,在包里面创建相应的实体类

这个包: cn.itsource.domain

这里面写域对象(Student)

在domain包的同一级,建一个dao包,这个包里面写接口:

cn.itsource.dao

接口名称: IXxxDAO / IXxxDao

在dao这个包里面再建一个包: impl 包 cn.itsource.dao.impl

这个包里面实现dao包里面的接口,这个impl包在dao包里面一层

这个包类的名称:XxxDAOImpl/XxxDaoImpl

6.2难点

1.基本没有多大的难点;回去了的时候多去敲代码实现

6.3如何掌握

1.多去敲上课老师的代码

把练习题做完

6.4 排错技巧

1.通过错误提示排除问题

2.把自己报错的信息在百度上面进行搜索

7.课后练习

1.第一题: 创建一个数据库(名称为jdbcwork)

要求:在数据库中创建一张表student(如下):


id bigint

username varchar 用户名

password varchar 密码

age int 年龄

sex boolean(bit) 性别

intro varchar 简介


2.第二题:在程序中完成对上面的数据库的CRUD

要求:实现dao层,将配置抽取出来(db.properties)

每一步实现都要有相应的注释


作业做完后注意

每一步操作一定要非常清楚,包括对于dao层的抽取,希望大家下来多理解,如果Dao暂时更理解不了的话,这部分一定要多写几次,在真实开发过程中我们对数据库的操作都会抽出一个dao层。

一定要把今天上课老师写的代码都自己多写写

8.面试题

9.扩展知识或课外阅读推荐


目录
相关文章
|
2月前
|
存储 安全 Java
从入门到精通:Java Map全攻略,一篇文章就够了!
【10月更文挑战第17天】本文详细介绍了Java编程中Map的使用,涵盖Map的基本概念、创建、访问与修改、遍历方法、常用实现类(如HashMap、TreeMap、LinkedHashMap)及其特点,以及Map在多线程环境下的并发处理和性能优化技巧,适合初学者和进阶者学习。
72 3
|
6天前
|
Java 数据库连接 数据库
springboot java.lang.ClassNotFoundException: dm.jdbc.driver.DmDriver应该如何解决
通过上述步骤,可以有效解决Spring Boot项目中遇到的 `java.lang.ClassNotFoundException: dm.jdbc.driver.DmDriver`问题。确保在项目中正确添加达梦数据库的JDBC驱动依赖,并在配置文件中正确配置数据源信息,是解决此问题的关键。通过这些方法,可以确保Spring Boot项目能够正确连接达梦数据库并正常运行。
65 31
|
27天前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
48 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
23天前
|
监控 架构师 Java
Java虚拟机调优的艺术:从入门到精通####
本文作为一篇深入浅出的技术指南,旨在为Java开发者揭示JVM调优的神秘面纱,通过剖析其背后的原理、分享实战经验与最佳实践,引领读者踏上从调优新手到高手的进阶之路。不同于传统的摘要概述,本文将以一场虚拟的对话形式,模拟一位经验丰富的架构师向初学者传授JVM调优的心法,激发学习兴趣,同时概括性地介绍文章将探讨的核心议题——性能监控、垃圾回收优化、内存管理及常见问题解决策略。 ####
|
1月前
|
监控 安全 Java
Java中的多线程编程:从入门到实践####
本文将深入浅出地探讨Java多线程编程的核心概念、应用场景及实践技巧。不同于传统的摘要形式,本文将以一个简短的代码示例作为开篇,直接展示多线程的魅力,随后再详细解析其背后的原理与实现方式,旨在帮助读者快速理解并掌握Java多线程编程的基本技能。 ```java // 简单的多线程示例:创建两个线程,分别打印不同的消息 public class SimpleMultithreading { public static void main(String[] args) { Thread thread1 = new Thread(() -> System.out.prin
|
1月前
|
Java 大数据 API
14天Java基础学习——第1天:Java入门和环境搭建
本文介绍了Java的基础知识,包括Java的简介、历史和应用领域。详细讲解了如何安装JDK并配置环境变量,以及如何使用IntelliJ IDEA创建和运行Java项目。通过示例代码“HelloWorld.java”,展示了从编写到运行的全过程。适合初学者快速入门Java编程。
|
1月前
|
存储 安全 Java
🌟Java零基础-反序列化:从入门到精通
【10月更文挑战第21天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
84 5
|
1月前
|
安全 Java 调度
Java中的多线程编程入门
【10月更文挑战第29天】在Java的世界中,多线程就像是一场精心编排的交响乐。每个线程都是乐团中的一个乐手,他们各自演奏着自己的部分,却又和谐地共同完成整场演出。本文将带你走进Java多线程的世界,让你从零基础到能够编写基本的多线程程序。
37 1
|
1月前
|
Java 数据处理 开发者
Java多线程编程的艺术:从入门到精通####
【10月更文挑战第21天】 本文将深入探讨Java多线程编程的核心概念,通过生动实例和实用技巧,引导读者从基础认知迈向高效并发编程的殿堂。我们将一起揭开线程管理的神秘面纱,掌握同步机制的精髓,并学习如何在实际项目中灵活运用这些知识,以提升应用性能与响应速度。 ####
51 3
|
2月前
|
开发框架 IDE Java
java制作游戏,如何使用libgdx,入门级别教学
本文是一篇入门级教程,介绍了如何使用libgdx游戏开发框架创建一个简单的游戏项目,包括访问libgdx官网、设置项目、下载项目生成工具,并在IDE中运行生成的项目。
63 1
java制作游戏,如何使用libgdx,入门级别教学