JDBC 17_针对customers表的查询操作

news/2024/5/18 22:43:38 标签: jdbc

目录结构

 

建立jdbc.properties

user=root
password=123456
url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC
driverClass=com.mysql.cj.jdbc.Driver

导入驱动,connector-java....

创建JDBCUtil.java工具类

package com.geng.util;

import javax.xml.transform.Result;
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

public class JDBCUtils {
    public static Connection getConnection(){
        Connection conn = null;
        try {
            InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties");
            Properties pros = new Properties();
            pros.load(is);

            String user = pros.getProperty("user");
            String password = pros.getProperty("password");
            String url = pros.getProperty("url");
            String driverClass = pros.getProperty("driverClass");

            Class.forName(driverClass);

            conn = DriverManager.getConnection(url, user, password);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return conn;
    }

    public static void closeResource(Connection conn, PreparedStatement ps, ResultSet resultSet){
        try {
            if(resultSet != null)
                resultSet.close();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        try {
            if(ps != null)
                ps.close();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        try {
            if(conn != null)
                conn.close();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }
}

创建查询测试类

package com.geng.query;

import com.geng.bean.Customer;
import com.geng.util.JDBCUtils;
import org.junit.jupiter.api.Test;

import java.sql.*;

public class testQuery {
    @Test
    public void test1(){
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet resultSet = null;
        try {
            conn = JDBCUtils.getConnection();
            String sql = "select id, name, email, birth from customers where id = ?";
            ps = conn.prepareStatement(sql);
            ps.setObject(1, 1);
            resultSet = ps.executeQuery();

            if(resultSet.next()){
                int id = resultSet.getInt(1);
                String name = resultSet.getString(2);
                String email = resultSet.getString(3);
                Date date = resultSet.getDate(4);

                Customer customer = new Customer(id, name, email, date);
                System.out.println(customer);
            }
        } catch (Exception throwables) {
            throwables.printStackTrace();
        } finally {
            JDBCUtils.closeResource(conn, ps, resultSet);
        }
    }
}

 把接收的数据封装成一个对象接收,体现了ORM思想

ORM思想:
一个数据库表对应一个Java类;
一条记录对应一个Java对象;
一个字段对应一个Java类中的属性。

Customer类

package com.geng.bean;

import java.sql.Date;

public class Customer {
    private int id;
    private String name;
    private String email;
    private Date date;

    public Customer() {
    }

    public Customer(int id, String name, String email, Date date) {
        this.id = id;
        this.name = name;
        this.email = email;
        this.date = date;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }

    @Override
    public String toString() {
        return "Customer{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", email='" + email + '\'' +
                ", date=" + date +
                '}';
    }
}

执行效果:


http://www.niftyadmin.cn/n/827747.html

相关文章

Java基础 反射

初识反射 代码举例: Person类 其中,属性:name,构造器:只含name的构造器,方法:showNation,都是私有的 package com.geng.java;public class Person {private String name;public …

使用 Hashtable 集合(一)

一、Hashtable概述 Hashtable集合中的元素以Key/Value方式存在。Key用来快速查找;Value用于存储对应于Key的值。值得注意的是Key和Value均为object类型。二、对Hashtable操作 对Hashtable操作包括: 1)添加集合元素 2)检索集…

JDBC_2 获取数据库的连接

获取数据库 重点是“方式五”,其他的知道为什么这么迭代就可以了。 方式一 思路:driver,url,info,connection 实例化一个Driver对象,用这个对象的connect方法返回一个Connection对象,然后这…

5.2.5 引用对象类型库

5.2.5 引用对象类型库 在早先的ASP版本中,在脚本中使用对象或组件时,组件内定义的公共常数(如果有的话)在ASP里将不再有效。这意味着我们需要自己声明它们(或等价物)并指定相应的值。 例如&#xff0…

JDBC_3 使用PreparedStatement实现CRUD操作

添加 读取配置文件中的4个基本信息;加载驱动;获取连接;预编译sql语句,返回PreparedStatement的实例;填充占位符;执行操作;资源的关闭。Testpublic void testInsert(){Connection conn null;Pr…

生成的RSS中没有author,这是一个小BUG

今天发现在一些RSS阅读器里查看DOTTEXT时&#xff0c;所有的文章都没有作者。经研究才发现是因为有些RSS阅读器不支持<dc:creator>作者姓名</dc:creator>他们只认识&#xff1a;<author>作者姓名</author> 修改一下RSS的生成部分&#xff1a;Dottext.F…

win10搜索框灰色无法输入关闭

这个问题困扰了我好久&#xff0c;网上的方式都试过了没有用&#xff0c;求解~~~

SQLite3的Shell(1)

sqlite3.exe是SQLite访问数据库的一个工具&#xff0c;使用命令行的形式。Shell的命令分为两种&#xff0c;第一是Shell本身的命令&#xff0c;以点开头。第二是用来管理当前数据库的SQL命令&#xff0c;以分号结束。其中Shell本身的命令分以下几种&#xff1a;控制数据的显示模…