JavaWeb学习-JDBC系列-8-基于DBUtils工具类的CRUD练习

2024-06-11 11:08

本文主要是介绍JavaWeb学习-JDBC系列-8-基于DBUtils工具类的CRUD练习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前面我们封装了一个用于连接数据库和关闭资源的DBUtils的类,可以减少很多重复的代码。这个类,提供了连接数据库和关闭资源的两个静态方法。再次复习下这个类中加载properties文件,为什么要使用静态代码块,也就是static{},因为我们想,这个DBUtils类一加载到JVM虚拟机就里面执行加载解析propertes文件操作。这个技巧,我们之前在Selenium自动化中写driver的初始化也用上了。

1.数据表准备

为了我们下一篇的练习,这里我给这个student表新增一个password字段,也就是学生密码,方便我们后面文章来做登录练习。

执行sql语句或者小海豚上图形界面操作。

alter table student add pwd char(20);

我这里随机给当前已有学生添加密码

2.查询练习

这个我们在前面一篇文章的练习之后,把查询的结果集封装成Student对象,这里新加了一个字段,所以,我们的Student.java里面也需要新加一个private String password 和set get方法。

package demo;import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;import org.junit.Test;import com.anthony.utils.DBUtils;public class CURD {@Testpublic void testSelect() {Connection conn = null;Statement stmt = null;ResultSet rs = null;try {conn = DBUtils.getConnection();stmt = conn.createStatement();rs = stmt.executeQuery("SELECT * FROM student");List<Student> list = new ArrayList<Student>();while(rs.next()) {Student s = new Student();s.setName(rs.getString("Name"));s.setId(rs.getInt("ID"));s.setGender(rs.getString("Gender"));s.setAge(rs.getInt("Age"));s.setPassword(rs.getString("pwd"));// 把student对象添加到集合中list.add(s);}//遍历集合for (Student student : list) {System.out.println(student.toString());}} catch (Exception e) {e.printStackTrace();} finally {DBUtils.close(conn, stmt, rs);}}
}

测试结果:


Student [Id=192101, Name=Tom, Gender=male, Age=19, password=123]
Student [Id=192102, Name=Lucy, Gender=female, Age=18, password=456]
Student [Id=192103, Name=Dniel, Gender=male, Age=20, password=111]
Student [Id=192104, Name=Sunny, Gender=female, Age=18, password=2222]
Student [Id=192105, Name=Anthony, Gender=male, Age=23, password=123456]

3.插入练习

这里我直接贴单元测试代码

@Test
public void testInsert() {Connection conn = null;Statement stmt = null;try {conn = DBUtils.getConnection();stmt = conn.createStatement();int i = stmt.executeUpdate("INSERT INTO student VALUES ('192106','Lisi','male','22','333')");if (i > 0) {System.out.println("插入成功");}} catch (Exception e) {e.printStackTrace();} finally {DBUtils.close(conn, stmt, null);}
}

4.更新练习

这里,我把Anthony的年龄从23改成18.

        @Testpublic void testUpdate() {Connection conn = null;Statement stmt = null;try {conn = DBUtils.getConnection();stmt = conn.createStatement();int i = stmt.executeUpdate("UPDATE student SET Age='18' WHERE Name='Anthony'");if (i > 0) {System.out.println("更新成功");}} catch (Exception e) {e.printStackTrace();} finally {DBUtils.close(conn, stmt, null);}}

刷新一下小海豚,或者执行上面查询的用例。

5.删除练习

这里我把Tom这行数据删除

        @Testpublic void testDelete() {Connection conn = null;Statement stmt = null;try {conn = DBUtils.getConnection();stmt = conn.createStatement();int i = stmt.executeUpdate("DELETE FROM student WHERE Name='Tom'");if (i > 0) {System.out.println("删除成功");}} catch (Exception e) {e.printStackTrace();} finally {DBUtils.close(conn, stmt, null);}}

结果Tom被删除

这篇关于JavaWeb学习-JDBC系列-8-基于DBUtils工具类的CRUD练习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1050992

相关文章

Spring Boot整合Redis注解实现增删改查功能(Redis注解使用)

《SpringBoot整合Redis注解实现增删改查功能(Redis注解使用)》文章介绍了如何使用SpringBoot整合Redis注解实现增删改查功能,包括配置、实体类、Repository、Se... 目录配置Redis连接定义实体类创建Repository接口增删改查操作示例插入数据查询数据删除数据更

Java Lettuce 客户端入门到生产的实现步骤

《JavaLettuce客户端入门到生产的实现步骤》本文主要介绍了JavaLettuce客户端入门到生产的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目录1 安装依赖MavenGradle2 最小化连接示例3 核心特性速览4 生产环境配置建议5 常见问题

Java使用Swing生成一个最大公约数计算器

《Java使用Swing生成一个最大公约数计算器》这篇文章主要为大家详细介绍了Java使用Swing生成一个最大公约数计算器的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下... 目录第一步:利用欧几里得算法计算最大公约数欧几里得算法的证明情形 1:b=0情形 2:b>0完成相关代码第二步:加

Java 的ArrayList集合底层实现与最佳实践

《Java的ArrayList集合底层实现与最佳实践》本文主要介绍了Java的ArrayList集合类的核心概念、底层实现、关键成员变量、初始化机制、容量演变、扩容机制、性能分析、核心方法源码解析、... 目录1. 核心概念与底层实现1.1 ArrayList 的本质1.1.1 底层数据结构JDK 1.7

Java Map排序如何按照值按照键排序

《JavaMap排序如何按照值按照键排序》该文章主要介绍Java中三种Map(HashMap、LinkedHashMap、TreeMap)的默认排序行为及实现按键排序和按值排序的方法,每种方法结合实... 目录一、先理清 3 种 Map 的默认排序行为二、按「键」排序的实现方式1. 方式 1:用 TreeM

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

Java中Redisson 的原理深度解析

《Java中Redisson的原理深度解析》Redisson是一个高性能的Redis客户端,它通过将Redis数据结构映射为Java对象和分布式对象,实现了在Java应用中方便地使用Redis,本文... 目录前言一、核心设计理念二、核心架构与通信层1. 基于 Netty 的异步非阻塞通信2. 编解码器三、

SpringBoot基于注解实现数据库字段回填的完整方案

《SpringBoot基于注解实现数据库字段回填的完整方案》这篇文章主要为大家详细介绍了SpringBoot如何基于注解实现数据库字段回填的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解... 目录数据库表pom.XMLRelationFieldRelationFieldMapping基础的一些代

一篇文章彻底搞懂macOS如何决定java环境

《一篇文章彻底搞懂macOS如何决定java环境》MacOS作为一个功能强大的操作系统,为开发者提供了丰富的开发工具和框架,下面:本文主要介绍macOS如何决定java环境的相关资料,文中通过代码... 目录方法一:使用 which命令方法二:使用 Java_home工具(Apple 官方推荐)那问题来了,

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node