JavaWeb学习笔记-04jdbc工具类
Posted Moon&&Dragon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaWeb学习笔记-04jdbc工具类相关的知识,希望对你有一定的参考价值。
jdbc工具类
1、项目结构
一个web项目结构如下图:
实体类(简单的类)----com.moon.pojo
数据访问对象(Data access object)-----com.moon.dao
控制器(servlet业务):请求,转发,重定向------com.moon.controller
工具类:MD5加密,邮件处理,短信处理,验证码,数据库访问工具类------com.moon.util数据
项目的流程:
一、modules
1、java文件---->.class文件
2、包含所有的资源文件(css,html,js,图片)
二、加载到artifacts
- WEB-INF
- classes:package下面的class文件和一些资源(db.properties)
- Lib:驱动包(mysql)
三、Tomcat服务器会加载和运行第二步传递过来的文件
2、数据库配置文件
数据库的url地址:
- 5.5版本:jdbc:mysql://localhost:3306
- 8.0版本:jdbc:mysql://localhost:3306?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false
创建配置文件:
我一般把数据库配置文件**放在resources目录下**,方便项目读取到配置文件
在resources目录下新建**
db-config.properties
**propties文件内容如下:
driverClassName=com.mysql.cj.jdbc.Driver user=root password=19981104 url=jdbc:mysql://localhost:3306/cloudMusic?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=UTC
url连接到之前创建好的cloudmusic数据库
3、通过maven添加数据库驱动依赖
在maven的配置文件pom.xml中,添加数据库驱动依赖
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.23</version> </dependency>
注意:如果maven下载不下来,也**可以手动导入数据库驱动包**
4、书写数据库工具类
书写数据库连接工具类
/**
* @author 晓龙
* @version 1.8.271
* @ProtectName cloudMusic_v1
* @ClassName JdbcConnection
* @Description 初始化数据库连接,获得数据库连接对象
* @createTime 2021年05月03日 12:41:00
*/
public class JdbcConnection {
/**
* 数据源配置
*/
private String driverClassName = null;
private String user = null;
private String password = null;
private String url = null;
/**
* 单例模式
*/
private JdbcConnection() {
}
private static volatile JdbcConnection jc = null;
/**
* 公开方法:获得数据库连接
*
* @return 返回连接对象
* @throws SQLException
*/
public synchronized static Connection getConnection() throws SQLException {
if (jc == null) {
jc = new JdbcConnection();
}
return jc.connection();
}
/**
* 公开方法:关闭数据库
*
* @param con 数据库连接对象
* @param state 数据库操作对象
* @param res 数据库结果集
*/
public static void close(Connection con, PreparedStatement state, ResultSet res) {
try {
if (con != null) {
con.close();
}
} catch (SQLException throwables) {
throwables.printStackTrace();
} finally {
try {
if (state != null) {
state.close();
}
} catch (SQLException throwables) {
throwables.printStackTrace();
} finally {
try {
if (res != null) {
res.close();
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
}
/**
* 初始化连接
*
* @return
* @throws SQLException
*/
private Connection connection() throws SQLException {
// 初始化数据库驱动
initJdbcDriver();
return DriverManager.getConnection(url, user, password);
}
/**
* 初始化数据库驱动
*/
private void initJdbcDriver() {
// 获得配置文件
InputStream config = JdbcConnection.class.getClassLoader()
.getResourceAsStream("xFrameConfig.properties");
// 读取文件
initJdbcConfig(config, new Properties());
try {
// 加载驱动
Class.forName(driverClassName);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
/**
* 读取配置文件
*
* @param config 配置文件
* @param prop Properties对象
*/
private void initJdbcConfig(InputStream config, Properties prop) {
try {
// 加载配置文件
prop.load(config);
// 读取配置文件并赋值
driverClassName = prop.getProperty("driverClassName");
user = prop.getProperty("user");
password = prop.getProperty("password");
url = prop.getProperty("url");
} catch (IOException e) {
e.printStackTrace();
}
}
}
数据库操作工具
/**
* @author 晓龙
* @version 1.8.271
* @ProtectName cloudMusic_v1
* @ClassName JdbcUtil
* @Description 数据库工具类,通过JdbcConnection获取连接,
* 对外只放出结果集对象,
* 封装数据库连接对象和数据库操作对象
* @createTime 2021年05月03日 12:53:00
*/
public class JdbcUtil {
/**
* 操作对象,SQL和连接对象
*/
private static String SQL = null;
private static Connection con = null;
private static PreparedStatement state = null;
private JdbcUtil() {
}
/**
* 公开方法:设置sql
*/
public static void SQL(String sql) {
SQL = sql;
// 获得操作对象
getState();
}
private static void getState() {
try {
// 获得操作对象
con = JdbcConnection.getConnection();
state = con.prepareStatement(SQL);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
/**
* 公开方法:提交查询,返回结果集
*/
public static ResultSet query(Object... el) throws SQLException {
if (state != null) {
// 遍历传参,进行赋值
for (int i = 0; i < el.length; i++) {
state.setObject(i + 1, el[i]);
}
// 提交返回结果
return state.executeQuery();
}
return null;
}
/**
* 公开方法:提交修改,返回boolean
*/
public static boolean update(Object... el) throws SQLException {
if (state != null) {
// 遍历传参,进行赋值
for (int i = 0; i < el.length; i++) {
state.setObject(i + 1, el[i]);
}
// 如果成功,返回true
if (state.executeUpdate() > 0) {
return true;
}
}
return false;
}
/**
* 公开方法:关闭连接
*/
public static void close(ResultSet res) {
// 只对外部放出了ResultSet,所以内部关闭连接对象和操作对象
JdbcConnection.close(con, state, res);
}
}
以上是关于JavaWeb学习笔记-04jdbc工具类的主要内容,如果未能解决你的问题,请参考以下文章