初学数据库(1)

121 阅读2分钟

「这是我参与2022首次更文挑战的第18天,活动详情查看:2022首次更文挑战」。

熟悉掌握数据库的基本使用

熟悉掌握JDBC对数据的增、删、改、查操作

熟悉掌握关联表的创建与操作,内连接,左连接,右连接

一、创建实体类和数据库,实体表

1、创建一个实体类

image.png 2、创建数据库和对应的表

image.png  

二、下载数据库驱动包

8.0 下载地址:dev.mysql.com/downloads/c…

image.png

三、加入驱动包

1、在WEB-INF下面,创建一个文件夹lib,然后把驱动包copy到这个文件夹里面。

2、导入lib文件夹:

image.png 选择到lib文件夹路径

image.png

image.png 创建lib包成功

image.png

3、重启服务器,out目录下面自动生成lib文件夹,就表示引用成功,如果没有,你那么把out目录删除掉,让tomcat重新编译部署

image.png

四、创建查询

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…

image.png  

然后在项目中引用这个包。

注意:新引用包后,需要在重新引入

image.png