maven项目连接数据库基本查询步骤和封装
数据库连接并打印输出内容
相关代码:
//数据库驱动加载
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);
}
}
}
调用封装好的数据库方法使用

智能推荐
django 项目连接多个数据库
修改项目的 settings 配置 在 settings.py 中配置需要连接的多个数据库连接串 DATABASES = { ‘default’: { ‘ENGINE’: ‘django.db.backends.mysql’, ‘NAME’: ‘app01’, # 使用数据库的名...
web、Java项目连接Oracle数据库
参考博客链接:https://blog.csdn.net/qq_39231769/article/details/99675894 (此为MySQL数据库) 没学过Java EE,不了解这种语言是怎么的原理和情况。本次尝试使用eclipse,但是不是for java developers,而是第二个for Javaee developers(名字可能有些不一样)但是图标一样就好。 懒得截图,有细节...
maven mybatis 连接数据库
数据库版本:MySQL8.0.19 目录结构: pom.xml文件: domain->address.java文件和dao->IAddressDao.java接口 mybatis主配置文件: IAddressDao.xml配置文件 Test测试类:...
solr连接数据库查询
参考链接:http://www.cnblogs.com/xbgfy/articles/5623501.html 接下来进行solr连接数据库,生成索引,以及查询方法。 数据库建表语句: 1 2 3 4 5 6 7 8 9 10 11 12 13 1、将数据库驱动包放入solr项目工程中(我用的mysql,使用jar包mysql-connector-java-5.1.18-bin.jar...
猜你喜欢
Python+Selenium+Autolt选择本地文件上传至网站
如果网站有上传文件的功能,selenium不提供对本地元素的定位,如何使用python选择本地文件进行上传呢 可以使用Autolt工具上传文件: 1、下载网址:https://www.autoitscript.com/site/autoit/downloads/ 2、点击“Downlad ZIP”下载 3、解压缩下载的ZIP文件 4、打开脚本编辑器文件夹,有一个SciTE....
数据结构系列之一-线性表
数据结构系列--线性表 慧子和她的3D 慧子和她的3D 暑期工作搞不下去,不如趁着现在整块时间搞编程。学习资料书《大话数据结构》,前面两章的铺垫感性知识,看看过,从第三章开始正餐。 01 — 线性表 线性表:零个或多个数据元素的有限序列。用数学语言表达: ...
Linux系统的远程操作练习
目录 一、将虚拟机Ubuntu系统的网络连接设置为“桥接模式”,并配置Ubuntu的IP、网关参数 二、在win10系统下用putty登录ubuntu系统 三、VNC server VNC viewer 思考 一、将虚拟机Ubuntu系统的网络连接设置为“桥接模式”,并配置Ubuntu的IP、网关参数 1.打开虚拟机,进入设置 点击网络适配器,选择桥...
ORACLE----TimeStamp(时间戳)自动更新
之前对id的自增长进行了设置,原以为时间戳的更新也类似,使用序列之类的,但最终发现跟序列没半毛钱关系。触发器是肯定要用的,但编写脚本也是需要的。 (1)创建触发器 图2中,我们要选择事件(即例子中的INSERT,UPDATE),触发时间(即INSERT,UPDATE事件的前或后,例子中是before),列(例子中为MODIFIED_DATE,为TimeStamp类型),新旧值(为系统默认值OLD和...
