欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

maven项目连接数据库基本查询步骤和封装

程序员文章站 2022-07-10 18:40:41
数据库连接并打印输出内容相关代码://数据库驱动加载Class.forName("com.mysql.jdbc.Driver");System.out.println("数据库驱动加载成功");//数据库连接Connection con= DriverManager.getConnection("jdbc:mysql://localhost:3306/book?useSSL=false","root","123456");System.out.println("数据库连接成功");//数据...

数据库连接并打印输出内容

相关代码:

//数据库驱动加载
Class.forName("com.mysql.jdbc.Driver");
System.out.println("数据库驱动加载成功");
//数据库连接
Connection con=  DriverManager.getConnection("jdbc:mysql://localhost:3306/book?useSSL=false","root","123456");
System.out.println("数据库连接成功");
//数据库查询语句,查询表内相应内容
PreparedStatement pst = con.prepareStatement("select * from t_mysql_boys");
ResultSet rs = pst.executeQuery();
while (rs.next()) {
//打印表内容
		System.out.println(rs.getInt("id")+"::"+rs.getString("boyName")+"::"+rs.getString("userCP"));
	}
//关闭流
rs.close();
pst.close();
con.close(); 

maven项目连接数据库基本查询步骤和封装

对数据库连接封装

新建一个jdbc.properties文件,文件存放数据库连接相应内容,下次登录数据库修改文件对应内容即可
maven项目连接数据库基本查询步骤和封装

Java 读取 .properties 配置文件的几种方式

Java 开发中,需要将一些易变的配置参数放置再 XML 配置文件或者 properties 配置文件中。然而 XML 配置文件需要通过 DOM 或 SAX 方式解析,而读取 properties 配置文件就比较容易。
介绍几种读取方式:

1、基于ClassLoder读取配置文件

注意:该方式只能读取类路径下的配置文件,有局限但是如果配置文件在类路径下比较方便。**

1     Properties properties = new Properties();
2     // 使用ClassLoader加载properties配置文件生成对应的输入流
3     InputStream in = PropertiesMain.class.getClassLoader().getResourceAsStream("config/config.properties");
4     // 使用properties对象加载输入流
5     properties.load(in);
6     //获取key对应的value值
7     properties.getProperty(String key); 

2、基于 InputStream 读取配置文件(我写的时候用的方法)

注意:该方式的优点在于可以读取任意路径下的配置文件

1     Properties properties = new Properties();
2     // 使用InPutStream流读取properties文件
3     BufferedReader bufferedReader = new BufferedReader(new FileReader("E:/config.properties"));
4     properties.load(bufferedReader);
5     // 获取key对应的value值
6     properties.getProperty(String key); 

3、通过 java.util.ResourceBundle 类来读取,这种方式比使用 Properties 要方便一些

通过 ResourceBundle.getBundle() 静态方法来获取(ResourceBundle是一个抽象类),这种方式来获取properties属性文件不需要加.properties后缀名,只需要文件名即可

1    properties.getProperty(String key);
2     //config为属性文件名,放在包com.test.config下,如果是放在src下,直接用config即可  
3     ResourceBundle resource = ResourceBundle.getBundle("com/test/config/config");
4     String key = resource.getString("keyWord"); 

相关代码:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
//加载驱动和链接数据库类
public class QuDong {
    //	加载驱动
    private static String driver;
    private static String url;
    private static String userName;
    private static String password;
    static {
        Properties p = new Properties();
        try {
            //读取文件
            p.load(new BufferedReader(new FileReader("jdbc.properties")));
            //读取文件内容(键值对)
            driver = p.getProperty("mysql.driver");
            url = p.getProperty("mysql.url");
            userName = p.getProperty("mysql.userName");
            password = p.getProperty("mysql.password");
            Class.forName(driver);
            System.out.println("加载驱动成功");
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    //Connection 与特定数据库的连接(会话)。在连接上下文中执行 SQL 语句并返回结果。
    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(url,userName,password);
    }
} 

封装:

maven项目连接数据库基本查询步骤和封装

调用:

maven项目连接数据库基本查询步骤和封装

对数据库读取内容封装

设计一个属性类,对应数据库表列名相应内容

public class ShuXing {
    private  int id;
    private  String boyName;
    private int userCP;

    public ShuXing(int id, String boyName, int userCP) {
        this.id = id;
        this.boyName = boyName;
        this.userCP = userCP;
    }

    public ShuXing() {
    }

    public int getId() {
        return id;
    }

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

    public String getBoyName() {
        return boyName;
    }

    public void setBoyName(String boyName) {
        this.boyName = boyName;
    }

    public int getUserCP() {
        return userCP;
    }

    public void setUserCP(int userCP) {
        this.userCP = userCP;
    }

    @Override
    public String toString() {
        return "ShuXing{" +
                "id=" + id +
                ", boyName='" + boyName + '\'' +
                ", userCP=" + userCP +
                '}';
    }
} 

封装读取数据库内容相关代码:

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

public class ChuLi<T> {
    public List<T> chuLi(String str,Class clz) throws InstantiationException {
    	 List<T> list = new ArrayList<T>();
        Connection con;
        {
            try {
                //调用数据库
                con = QuDong.getConnection();
                //查询数据库内容
                PreparedStatement pst = con.prepareStatement(str);
                //获得数据库内容
                ResultSet rs = pst.executeQuery();
                T t;
                while (rs.next()) {
                    //通过反射获得一个类实例对象
                    t = (T) clz.newInstance();
                    //获得属性集合
                    Field[] fields = clz.getDeclaredFields();
                    for (Field field : fields) {
                        //获得设置私有属性权限
                        field.setAccessible(true);
                        //赋值
                        field.set(t,rs.getObject(field.getName()));
                        //关闭设置私有属性
                        field.setAccessible(false);
                    }
                    list.add(t);
                }
                rs.close();
                pst.close();
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }
		return list;
    }
} 

maven项目连接数据库基本查询步骤和封装

通过封装好的类进行调用连接数据库并打印相应内容

相关代码:

 import java.sql.SQLException;
import java.util.List;


public class Demo extends ChuLi<ShuXing>{
	public List<ShuXing> list() throws InstantiationException {
		return super.chuLi("select * from t_mysql_boys",ShuXing.class);
	}
	public static void main(String[] args) throws SQLException, InstantiationException {
		Demo demo = new Demo();
		List<ShuXing> list = demo.list();
		for (ShuXing user : list) {
			System.out.println(user);
		}
		
	}

} 

调用封装好的数据库方法使用

maven项目连接数据库基本查询步骤和封装

本文地址:https://blog.csdn.net/weixin_48776050/article/details/107894961