idea里面mysql数据库统一配置文件和存放到集合中读取出来详细步骤

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 统一配置可以方便后期代码的维护,比如更改mysql的密码或者什么就可以直接在资源配置文件里面更改就好,不用到代码里面去更改了。

前言:

为什么要用统一资源配置文件?


答:统一配置可以方便后期代码的维护,比如更改mysql的密码或者什么就可以直接在资源配置文件里面更改就好,不用到代码里面去更改了。


文件位置:要放到src下,是一级文件


文件图片例子:



一、配置文件例子(src一级文件下)

第一行的低版本的mysql就把.cj去掉

第二行最后面那个javafx对应的是自己要连接的数据库

第三第四行对应自己的MySQL数据库账号密码

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/javafx
username=root
password=root756

二、在类里面进行读取配置文件和定义一个给别的类的连接方法 (属于util工具包的)

package com.woody.util;
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;
public class DbUtil {
    //1、定义3个静态变量,为了接收和存放读取出来的文件配置信息 
    private static String a ;
    private static String b ;
    private static String c ;
    //2、写一个静态代码块,里面负责读取配置文件和注册驱动
    static {
        //2.1、绑定配置文件
       InputStream in = DbUtil.class.getClassLoader().getResourceAsStream("dp.properties");
       //2.2、创建键值对集合 
        Properties properties = new Properties();
        try {
            //2.3、配置文件放到键值对集合中去读取 
            properties.load(in);
            //2.4、get读取出来的文件再放到全局静态变量里面去赋值给a b c 
            a= properties.getProperty("url");
            b= properties.getProperty("username");
            c= properties.getProperty("password");
            //2.5、注册驱动
            Class.forName(properties.getProperty("driver"));
        } catch (ClassNotFoundException | IOException e) {
            e.printStackTrace();
        }
    }
    //3、定义获取数据库的静态连接方法,为了给外界调用
    public static Connection getConnection(){
        Connection connection = null;  //3.1初始化一下
        try {
            connection = DriverManager.getConnection(a,b,c);  //3.2获取数据库的连接,这是主要的!!!!!!!!
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return connection;
    }
    //4、定义一个关闭资源方法  
    public static void closeAll(ResultSet rs, PreparedStatement ps,Connection conn){
        //判断后关闭资源
        if (rs !=null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (ps !=null){
            try {
                ps.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (conn !=null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

配置已完成

===============================================


接下来的步骤就是对数据库中的数据进行获取存放到集合里面


三、建立一个属性封装类(属于bean包的),进行封装的属性要与数据库中的数据类型和名字都要对应


这是我个人的数据库中表的内容图片


代码例子:

package com.woody.bean;
/**
 * 这个类用来充当数据库信息和集合的中介。
 * 这是根据数据库的information表数据生成的列名
 * id id
 * name 名字
 * sex 性别
 * sge 年龄
 * birthday 生日
 * education  学历
 * emotion 情感状况
 * height 身高
 * weight 体重
 * constellation 星座
 * hobby 爱好
 * nucleic_acid 核酸时间
 */
public class BeInformation {
    private int id;
    private String name;
    private String sex;
    private int age;
    private String birthday;
    private String education;
    private String emotion;
    private int height;
    private int weight;
    private String constellation;
    private String hobby;
    private String nucleic_acid;
    //快捷键生成的无参构造方法
    public BeInformation() {
    }
    //有参构造方法
    public BeInformation(int id, String name, String sex, int age, String birthday, String education, String emotion, int height, int weight, String constellation, String hobby, String nucleic_acid) {
        this.id = id;
        this.name = name;
        this.sex = sex;
        this.age = age;
        this.birthday = birthday;
        this.education = education;
        this.emotion = emotion;
        this.height = height;
        this.weight = weight;
        this.constellation = constellation;
        this.hobby = hobby;
        this.nucleic_acid = nucleic_acid;
    }
    //快捷键生成的set和get方法
    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 getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getBirthday() {
        return birthday;
    }
    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }
    public String getEducation() {
        return education;
    }
    public void setEducation(String education) {
        this.education = education;
    }
    public String getEmotion() {
        return emotion;
    }
    public void setEmotion(String emotion) {
        this.emotion = emotion;
    }
    public int getHeight() {
        return height;
    }
    public void setHeight(int height) {
        this.height = height;
    }
    public int getWeight() {
        return weight;
    }
    public void setWeight(int weight) {
        this.weight = weight;
    }
    public String getConstellation() {
        return constellation;
    }
    public void setConstellation(String constellation) {
        this.constellation = constellation;
    }
    public String getHobby() {
        return hobby;
    }
    public void setHobby(String hobby) {
        this.hobby = hobby;
    }
    public String getNucleic_acid() {
        return nucleic_acid;
    }
    public void setNucleic_acid(String nucleic_acid) {
        this.nucleic_acid = nucleic_acid;
    }
//快捷键生成的toString方法
    @Override
    public String toString() {
        return "BeInformation{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                ", age=" + age +
                ", birthday='" + birthday + '\'' +
                ", education='" + education + '\'' +
                ", emotion='" + emotion + '\'' +
                ", height=" + height +
                ", weight=" + weight +
                ", constellation='" + constellation + '\'' +
                ", hobby='" + hobby + '\'' +
                ", nucleic_acid='" + nucleic_acid + '\'' +
                '}';
    }
}

四、建立一个把数据库具体数据放到集合里面的类(属于dao包的), 这需要用到上一个属性封装类充当存放的中介

package com.woody.Test.JDBC;
import com.woody.bean.BeInformation;
import com.woody.util.DbUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
/**
 * 这个类的作用就是数据库的信息放到属性封装类中,充当中继器再放到集合里面
 * 步骤:
 * 数获取连接数据库方法--->定义sql语句--->connection.prepareStatement发送sql语句到数据库--->ResultSet接收数据库--->ResultSet遍历并一个个获取出来并赋值
 * new实现封装类并set发送上一步赋值的---->再全部放到集合里面--->finally执行关闭集合的方法--->本方法的最后一个括号前return集合
 *
 *测试:方法外建立一个main方法,1.new本类自己-->调用这个定义的方法---->输出
 */
public class BeInformationDao {
      //1.创建一个List集合方法<属性封装类>  方法名
    public List<BeInformation> queryAlla() {
        //2.new一个ArrayList集合 <属性封装类>,
        ArrayList<BeInformation> beInformationList  = new ArrayList<>();
        //3.获取自己写好的连接方法!!!!!!!!!!!!!!!!!!!!!!
        Connection connection = DbUtil.getConnection();
        //4.定义要执行的sql语句
        String sql = "select * from information ";
        //5.发送格式化
        PreparedStatement ps = null;
        //6.接收格式化
        ResultSet rs = null;
        try {
            //7.发送sql语句到数据库(固定的)
            ps= connection.prepareStatement(sql);
            //8.接受数据库的返回信息
            rs=ps.executeQuery();
            //9.遍历接收的数据
            while (rs.next()){
                //10.接受到的用数据类型get方法获取数据库表里面的信息并赋值(括号里面的是数据库表中对应的数据)
                int id = rs.getInt("id");
                String name = rs.getString("name");
                String sex = rs.getString("sex");
                int age = rs.getInt("age");
                String birthday = rs.getString("birthday");
                String education = rs.getString("education");
                String emotion = rs.getString("emotion");
                int height = rs.getInt("height");
                int weight = rs.getInt("weight");
                String constellation = rs.getString("constellation");
                String hobby = rs.getString("hobby");
                String nucleic_acid = rs.getString("nucleic_acid");
                //11.把上面赋值的再set传给属性封装类里面
                BeInformation beInformation = new BeInformation();//实现自己定义的中继器bean
                beInformation.setId(id);
                beInformation.setName(name);
                beInformation.setSex(sex);
                beInformation.setAge(age);
                beInformation.setBirthday(birthday);
                beInformation.setEducation(education);
                beInformation.setEmotion(emotion);
                beInformation.setHeight(height);
                beInformation.setWeight(weight);
                beInformation.setWeight(weight);
                beInformation.setConstellation(constellation);
                beInformation.setHobby(hobby);
                beInformation.setNucleic_acid(nucleic_acid);
                //12.属性封装最终放到集合里面
                beInformationList.add(beInformation);
            }
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }finally {
            //.13调用工具类里面的关闭资源方法(自己写的方法)
            DbUtil.closeAll(rs,ps,connection);
        }
         //14.return第12步的集合
        return beInformationList;
    }
    //输出测试,只是为了测试,可以不用这个main方法
    public static void main(String[] args) {
        BeInformationDao b = new BeInformationDao();
        List<BeInformation> queryAlla = b.queryAlla();
        System.out.println(queryAlla);
    }
}

运行结果:

[BeInformation{id=1, name='洛洛', sex='男生', age=18, birthday='5月27号', education='本科',

emotion='单身', height=188, weight=76, constellation='双子座', hobby='打怪兽', nucleic_acid='2022.11.10'}, BeInformation{id=2, name='晶晶', sex='女生', age=20, birthday='12月12号', education='本科', emotion='单身', height=170, weight=55, constellation='射手座', hobby='看剧', nucleic_acid='2022.11.11'}, BeInformation{id=3, name='赵云', sex='男生', age=24, birthday='11月9号', education='研究生', emotion='单身', height=185, weight=76, constellation='天蝎座', hobby='打野', nucleic_acid='2022.11.12'}]

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
关系型数据库 MySQL Java
【IDEA】java后台操作mysql数据库驱动常见错误解决方案
【IDEA】java后台操作mysql数据库驱动常见错误解决方案
102 0
|
1月前
|
NoSQL 关系型数据库 MySQL
2024Mysql And Redis基础与进阶操作系列(4-2)作者——LJS[含MySQL非空、唯一性、PRIMARY KEY、自增列/自增约束举例说明等详解步骤及常见报错问题对应的解决方法]
24MySQL非空、唯一性、PRIMARY KEY、自增列/自增约束举例说明等详解步骤及常见报错问题对应的解决方法(4-2) 学不会你来砍我!!!
|
22天前
|
数据库连接 数据库 数据安全/隐私保护
数据库连接池的配置文件
我们首先要确认连接池需要哪些配置信息,根据经验,一个数据库连接池至少要有一下几个必须的配置。首先是必须由用户指定的几项配置,也就是数据库驱动、数据库连接的url、用户名和密码。然后是可以由连接池自己默认指定的几项配置,这些配置一般有:连接池初始大小,连接池最大大小,健康检查开始时间,健康检查间隔时间,以及连接超时时间。这些配置信息我们可以将其写进一个properties文件里,这个文件我们命名为pool.properties,处于项目的resource目录下。在创建数据库连接池时我们需要将这些配置信息读进内存里。
|
24天前
|
Linux 数据库 数据安全/隐私保护
GBase 数据库 加密客户端---数据库用户口令非明文存放需求的实现
GBase 数据库 加密客户端---数据库用户口令非明文存放需求的实现
|
26天前
|
关系型数据库 MySQL 数据库
GBase 数据库如何像MYSQL一样存放多行数据
GBase 数据库如何像MYSQL一样存放多行数据
|
1月前
|
NoSQL 安全 关系型数据库
2024Mysql And Redis基础与进阶操作系列(6)作者——LJS[含MySQL 多表之一对一/多;多对多;多表联合查询等详解步骤及常见报错问题所对应的解决方法]
MySQL 多表之一对一/多;多对多;多表联合之交叉连接;内连接;左、右、外、满、连接;子查询及关键字;自连接查询等详解步骤及常见报错问题所对应的解决方法
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
102 3
|
1月前
|
SQL NoSQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(5)作者——LJS[含MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页等详解步骤及常见报错问题所对应的解决方法]
MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页、INSERT INTO SELECT / FROM查询结合精例等详解步骤及常见报错问题所对应的解决方法
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。
本文介绍了在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。内容涵盖准备工作、下载源码、编译安装、配置服务、登录设置及实践心得,帮助读者根据需求选择最适合的安装方法。
91 2
|
1月前
|
SQL NoSQL 关系型数据库