当前位置: 移动技术网 > IT编程>开发语言>Java > maven项目连接数据库基本查询步骤和封装

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

2020年08月10日  | 移动技术网IT编程  | 我要评论
数据库连接并打印输出内容相关代码://数据库驱动加载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(); 

在这里插入图片描述

对数据库连接封装

新建一个jdbc.properties文件,文件存放数据库连接相应内容,下次登录数据库修改文件对应内容即可
在这里插入图片描述

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);
    }
} 

封装:

在这里插入图片描述

调用:

在这里插入图片描述

对数据库读取内容封装

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

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;
    }
} 

在这里插入图片描述

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

相关代码:

 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);
		}
		
	}

} 

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

在这里插入图片描述

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

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网