2024年Web前端最新使用JDBC完成分类表CRUD的操作,2024年最新一名毕业三年的女程序媛面试头条经验

最后

其实前端开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

这里再分享一个复习的路线:(以下体系的复习资料是我从各路大佬收集整理好的)

《前端开发四大模块核心知识笔记》

最后,说个题外话,我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在IT学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。

e.printStackTrace();

}

}

if (conn!=null) {

try {

conn.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

编写测试类 TestUtils.java

package cn.jayvee.test;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import org.junit.Test;

import cn.jayvee.jdbc.JDBCUtils_V1;

/**

  • 测试工具类

  • @author Jayvee

  • @date 2019-5-12 下午4:38:54

  • @version V1.0

*/

public class TestUtils {

/**

  • 根据id查询用户信息

*/

@Test

public void testFindUserById() {

Connection conn = null;

ResultSet rs = null;

PreparedStatement pstmt = null;

try {

// 1.获取链接

conn = JDBCUtils_V1.getConnection();

// 2.编写sql语句

String sql = “select * from student where id=?”;

// 3.获取执行sql语句对象

pstmt = conn.prepareStatement(sql);

// 4.设置参数(1表示第一个问号,2表示第一个问号的值是2)

pstmt.setInt(1, 2);

// 5.执行查询操作

rs = pstmt.executeQuery();

// 6.处理结果集

while (rs.next()) {

// rs.getString(2)表示获取这条数据的第二列的数据

// rs.getString(“age”)表示获取这条数据中age字段的之

System.out.print(rs.getString(2) + “----” + rs.getString(“age”));

}

// 释放资源放在这里不可行!

} catch (SQLException e) {

e.printStackTrace();

} finally {

// 7.释放资源

JDBCUtils_V1.release(conn, pstmt, rs);

}

}

}

数据库数据

运行结果

使用 Properties 配置文件


开发中获得链接的四个参数(驱动、URL、用户名、密码)通常都存在在配置文件中,方便后期维护,程序如果需要更换数据库,只需要修改配置文件即可。

通常情况下,我们习惯使用 properties 文件,此文件我们将作如下要求:

1. 文件位置:任意,建议src下。

2. 文件名称:任意,扩展名为 properties 。

3. 文件内容:一行一组数据,格式是“ key = value ”。

a)key 命名自定义,不能带有空格,如果是多个单词,习惯使用点分隔。例如“ jdbc.driver ”

b)value值不支持中文,不能带有空格,如果需要使用非英文字符,将进行 Unicode 转换。

项目练习

在 src 目录下创建一个 db.properties 配置文件。

文件内编写如下配置(具体情况具体改)

driver=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/dbtest?useUnicode=true&characterEncoding=utf8

username=root

password=123456

加载配置文件:ResourceBundle 对象

我们在V2版本中使用JDK提供的工具类 ResourceBundle 加载 properties 文件,ResourceBundle 提供 getBundle() 方法用于只提供 properties 文件即可,之后使用 getString(key) 通过 key 获得 value的值。

编写代码案例

创建一个JDBCUitls_V2.java 工具类

编写内容

package cn.jayvee.jdbc;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.ResourceBundle;

/**

  • 提供获取链接和资源的方法

  • @author Jayvee

  • @date 2019-5-12 下午4:22:24

  • @version V1.0

*/

public class JDBCUtils_V2 {

private static String driver;

private static String url;

private static String username;

private static String password;

/**

  • 静态代码块加载配置文件信息

*/

static{

// 加载配置文件

ResourceBundle bundle = ResourceBundle.getBundle(“db”);

driver = bundle.getString(“driver”);

url = bundle.getString(“url”);

username = bundle.getString(“username”);

password = bundle.getString(“password”);

}

/**

  • 获取链接方法

  • @return

*/

public static Connection getConnection(){

Connection conn = null;

try {

Class.forName(driver);

conn = DriverManager.getConnection(url,username,password);

} catch (Exception e) {

e.printStackTrace();

}

return conn;

}

/**

  • 释放资源

  • @param conn

  • @param pstmt

  • @param rs

*/

public static void release(Connection conn,PreparedStatement pstmt,ResultSet rs){

if(rs!=null){

try {

rs.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

if (pstmt!=null) {

try {

pstmt.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

if (conn!=null) {

try {

conn.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

编写 TestUtils.java 文件

package cn.jayvee.test;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import javax.management.RuntimeErrorException;

import org.junit.Test;

import cn.jayvee.jdbc.JDBCUtils_V1;

import cn.jayvee.jdbc.JDBCUtils_V2;

/**

  • 测试工具类

  • @author Jayvee

  • @date 2019-5-12 下午4:38:54

  • @version V1.0

*/

public class TestUtils {

/**

  • 添加用户信息方法

*/

@Test

public void testAdd(){

Connection conn = null;

PreparedStatement pstmt = null;

try {

// 1.获取连接

conn = JDBCUtils_V2.getConnection();

// 2.编写 sql 语句

String sql = “insert into student values(null,?,?)”;

// 3.获取执行sql语句对象

pstmt = conn.prepareStatement(sql);

// 4.设置参数

pstmt.setString(1, “wangjiawei”);

pstmt.setString(2, “25”);

// 5.执行插入操作

int row = pstmt.executeUpdate();

if (row>0) {

System.out.println(“添加成功!”);

}else{

System.out.println(“添加失败!”);

}

} catch (Exception e) {

throw new RuntimeException(e);

}finally{

// 6.释放资源

JDBCUtils_V2.release(conn, pstmt, null);

}

}

/**

  • 根据id查询用户信息

*/

public void testFindUserById() {

Connection conn = null;

ResultSet rs = null;

PreparedStatement pstmt = null;

try {

// 1.获取链接

conn = JDBCUtils_V1.getConnection();

// 2.编写sql语句

String sql = “select * from student where id=?”;

// 3.获取执行sql语句对象

pstmt = conn.prepareStatement(sql);

// 4.设置参数(1表示第一个问号,2表示第一个问号的值是2)

pstmt.setInt(1, 2);

// 5.执行查询操作

rs = pstmt.executeQuery();

// 6.处理结果集

while (rs.next()) {

// rs.getString(2)表示获取这条数据的第二列的数据

// rs.getString(“age”)表示获取这条数据中age字段的之

System.out.print(rs.getString(2) + “----” + rs.getString(“age”));

}

// 释放资源放在这里不可行!

} catch (SQLException e) {

e.printStackTrace();

} finally {

// 7.释放资源

JDBCUtils_V1.release(conn, pstmt, rs);

}

}

}

加载配置文件:Properties 对象

对应 properties 文件的处理,开发中也会使用 Properties 对象将进行,在V3版本中,我们将采用加载 properties 文件获得流,然后使用 properties 对象进行处理。

创建一个JDBCUitls_V3.java 工具类

编写内容

package cn.jayvee.jdbc;

import java.io.IOException;

import java.io.InputStream;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

/**

  • 提供获取链接和资源的方法

  • @author Jayvee

  • @date 2019-5-12 下午4:22:24

  • @version V1.0

*/

public class JDBCUtils_V3 {

private static String driver;

private static String url;

private static String username;

private static String password;

/**

  • 静态代码块加载配置文件信息

*/

static {

try {

// 1.通过当前类获取类加载器

ClassLoader classLoader = JDBCUtils_V3.class.getClassLoader();

// 2.通过类加载器的方法获取一个输入流

InputStream is = classLoader.getResourceAsStream(“db.properties”);

// 3.创建一个properties对象

java.util.Properties props = new java.util.Properties();

// 4.加载输入流

props.load(is);

// 5.获取相关参数的值

driver = props.getProperty(“driver”);

url = props.getProperty(“url”);

username = props.getProperty(“username”);

password = props.getProperty(“password”);

} catch (IOException e) {

e.printStackTrace();

}

}

/**

  • 获取链接方法

  • @return

*/

public static Connection getConnection() {

Connection conn = null;

try {

Class.forName(driver);

conn = DriverManager.getConnection(url, username, password);

} catch (Exception e) {

e.printStackTrace();

}

return conn;

}

/**

  • 释放资源

  • @param conn

  • @param pstmt

  • @param rs

*/

public static void release(Connection conn, PreparedStatement pstmt,

ResultSet rs) {

if (rs != null) {

try {

rs.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

if (pstmt != null) {

try {

pstmt.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

if (conn != null) {

try {

conn.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

在 TestUtils.java 中编写删除方法

package cn.jayvee.test;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import javax.management.RuntimeErrorException;

import org.junit.Test;

import cn.jayvee.jdbc.JDBCUtils_V1;

import cn.jayvee.jdbc.JDBCUtils_V2;

import cn.jayvee.jdbc.JDBCUtils_V3;

/**

  • 测试工具类

  • @author Jayvee

  • @date 2019-5-12 下午4:38:54

  • @version V1.0

*/

public class TestUtils {

/**

  • 根据id删除信息

*/

@Test

public void testDeleteById(){

Connection conn = null;

PreparedStatement pstmt = null;

try {

// 1.获取连接

conn = JDBCUtils_V3.getConnection();

// 2.编写 sql 语句

String sql = “delete from student where id=?”;

// 3.获取执行sql语句对象

pstmt = conn.prepareStatement(sql);

// 4.设置参数

pstmt.setInt(1, 3);

// 5.执行删除操作

int row = pstmt.executeUpdate();

if (row>0) {

System.out.println(“删除成功!”);

}else{

System.out.println(“删除失败!”);

}

} catch (Exception e) {

throw new RuntimeException(e);

}finally{

// 6.释放资源

JDBCUtils_V3.release(conn, pstmt, null);

}

}

/**

  • 添加用户信息方法

*/

public void testAdd(){

Connection conn = null;

PreparedStatement pstmt = null;

文末

如果30岁以前,可以还不知道自己想去做什么的话,那30岁之后,真的觉得时间非常的宝贵,不能再浪费时间在一些碎片化的事情上,比如说看综艺,电视剧。一个人的黄金时间也就二,三十年,不能过得浑浑噩噩。所以花了基本上休息的时间,去不断的完善自己的知识体系,希望可以成为一个领域内的TOP。

同样是干到30岁,普通人写业务代码划水,榜样们深度学习拓宽视野晋升管理。

这也是为什么大家都说30岁是程序员的门槛,很多人迈不过去,其实各行各业都是这样都会有个坎,公司永远都缺的高级人才,只用这样才能在大风大浪过后,依然闪耀不被公司淘汰不被社会淘汰。

269页《前端大厂面试宝典》

包含了腾讯、字节跳动、小米、阿里、滴滴、美团、58、拼多多、360、新浪、搜狐等一线互联网公司面试被问到的题目,涵盖了初中级前端技术点。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

前端面试题汇总

JavaScript

throw new RuntimeException(e);

}finally{

// 6.释放资源

JDBCUtils_V3.release(conn, pstmt, null);

}

}

/**

  • 添加用户信息方法

*/

public void testAdd(){

Connection conn = null;

PreparedStatement pstmt = null;

文末

如果30岁以前,可以还不知道自己想去做什么的话,那30岁之后,真的觉得时间非常的宝贵,不能再浪费时间在一些碎片化的事情上,比如说看综艺,电视剧。一个人的黄金时间也就二,三十年,不能过得浑浑噩噩。所以花了基本上休息的时间,去不断的完善自己的知识体系,希望可以成为一个领域内的TOP。

同样是干到30岁,普通人写业务代码划水,榜样们深度学习拓宽视野晋升管理。

这也是为什么大家都说30岁是程序员的门槛,很多人迈不过去,其实各行各业都是这样都会有个坎,公司永远都缺的高级人才,只用这样才能在大风大浪过后,依然闪耀不被公司淘汰不被社会淘汰。

269页《前端大厂面试宝典》

包含了腾讯、字节跳动、小米、阿里、滴滴、美团、58、拼多多、360、新浪、搜狐等一线互联网公司面试被问到的题目,涵盖了初中级前端技术点。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

前端面试题汇总

JavaScript

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值