「这是我参与2022首次更文挑战的第18天,活动详情查看:2022首次更文挑战」。
熟悉掌握数据库的基本使用
熟悉掌握JDBC对数据的增、删、改、查操作
熟悉掌握关联表的创建与操作,内连接,左连接,右连接
一、创建实体类和数据库,实体表
1、创建一个实体类
2、创建数据库和对应的表
二、下载数据库驱动包
8.0 下载地址:dev.mysql.com/downloads/c…
三、加入驱动包
1、在WEB-INF下面,创建一个文件夹lib,然后把驱动包copy到这个文件夹里面。
2、导入lib文件夹:
选择到lib文件夹路径
创建lib包成功
3、重启服务器,out目录下面自动生成lib文件夹,就表示引用成功,如果没有,你那么把out目录删除掉,让tomcat重新编译部署
四、创建查询
package com.hwadee.train.servlet.dao;\
\
import com.hwadee.train.servlet.entity.User;\
import com.hwadee.train.servlet.utils.C3p0Utils;\
import org.apache.commons.dbutils.QueryRunner;\
import org.apache.commons.dbutils.handlers.BeanHandler;\
\
import java.sql.*;\
\
\
public class UserDao {\
\
\
\
public User findByNameAndPwd(String username, String password){\
User user = null;
// 1、设置连接信息:\
// MySQL 8.0 以下版本 - JDBC 驱动名及数据库 URL\
// final String JDBC_DRIVER = "com.mysql.jdbc.Driver";\
// final String DB_URL = "jdbc:mysql://localhost:3306/train01";\
\
// MySQL 8.0 以上版本 - JDBC 驱动名及数据库 URL\
final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";\
//MySQL 8.0 以上版本不需要建立 SSL 连接的,需要显示关闭。\
//allowPublicKeyRetrieval=true 允许客户端从服务器获取公钥。\
final String DB_URL = "jdbc:mysql://localhost:3306/train01?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";\
// 数据库的用户名与密码,需要根据自己的设置\
final String USER = "root";\
final String PASS = "admin";\
\
// 注册 JDBC 驱动\
try {\
Class.forName(JDBC_DRIVER);\
\
// 打开链接\
Connection conn = DriverManager.getConnection(DB_URL,USER,PASS);\
//实例化Statement对象;\
Statement stmt = conn.createStatement();\
String sql;\
sql = "SELECT id, username,password,sex,birthday,email,hobby,note " +\
"FROM user " +\
"where username='"+username+"' and password='"+password+"'";\
// 执行查询\
//使用ResultSet 接收返回结果\
ResultSet rs = stmt.executeQuery(sql);\
\
while(rs.next()){\
// 通过字段检索\
int id = rs.getInt("id");\
String dbName = rs.getString("username");\
String dbPassword = rs.getString("password");\
String sex = rs.getString("sex");\
Date birthday = rs.getDate("birthday");\
String email = rs.getString("email");\
String hobby = rs.getString("hobby");\
String note = rs.getString("note");\
\
user=new User();\
user.setId(id);\
user.setUsername(dbName);\
user.setPassword(dbPassword);\
user.setSex(sex);\
user.setBirthday(birthday);\
user.setEmail(email);\
user.setHobby(hobby);\
user.setNote(note);\
}\
\
//关闭连接信息\
rs.close();\
stmt.close();\
conn.close();\
} catch (ClassNotFoundException | SQLException e) {\
e.printStackTrace();\
}\
return user;\
}\
\
\
// 使用DBUtils和c3p0工具包\
public User findByNameAndPwd2(String username,String password){\
try {\
String sql = "SELECT id, username,password,sex,birthday,email,hobby,note " +\
"FROM user " +\
"where username=? and password=?"; //这里使用?占位符\
QueryRunner runner = new QueryRunner(C3p0Utils.getDataSource());\
return (User) runner.query(sql,new BeanHandler(User.class),username,password);\
} catch (SQLException throwables) {\
throwables.printStackTrace();\
}\
return null;\
}\
}
五、DBUtils工具包
通过上面的连接查询发现,这种方式查询很麻烦,所以,我们使用apache下的一个小巧的JDBC轻量级封装的工具包DBUtils。
DBUtils工具的核心是:
org.apache.commons.dbutils.QueryRunner类和
org.apache.commons.dbutils.ResultSetHandler接口。
QueryRunner类简化了执行SQL语句的代码,它与ResultSetHandler组合在一起就能完成大部分的数据库操作,大大的减少了编码量。
下载地址:
commons.apache.org/proper/comm…
然后在项目中引用这个包。
注意:新引用包后,需要在重新引入