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();
对数据库连接封装
新建一个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