数据库连接池Druid
如何连接数据库目录1. 创建maven 项目命名为resume_fonteda.个人简历为例:(resume_fonted)b.默认文件配置c.项目目录2.导入maven依赖:拓展:什么是POM?POM是项目对象模型(Project Object Model)的简称,它是Maven项目中的文件,使用XML表示,名称叫做pom.xml。作用类似ant的build.xml文...
·
如何连接数据库
目录
1. 创建maven 项目
命名为resume_fonted
a.个人简历为例:(resume_fonted)
b.默认文件配置
c.项目目录
2.导入maven依赖:
拓展:
什么是POM?
POM是项目对象模型(Project Object Model)的简称,它是Maven项目中的文件,使用XML表示,名称叫做pom.xml。作用类似ant的build.xml文件,功能更强大。该文件用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。事实上,在Maven世界中,project可以什么都没有,甚至没有代码,但是必须包含pom.xml文件。
a.在pom.xml里面导入依赖:``
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
</dependency>
<dependency>
<groupId>commons-dbutils</groupId>
<artifactId>commons-dbutils</artifactId>
<version>1.7</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.62</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.13</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.17</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.28</version>
</dependency>
b.改java版本:
一个是pom.xml ,一个是setting里面的,另一个是project strcture里面的。
- 在intellij iead pom.xml.
- 注意:按f4时候要鼠标光标在代码文件夹上面,否则不会出现下图:
- 在File setting 下面:
配置MySQL文件属性
1.创建目录resoures:
2.然后在里面导入相关配置信息
数据库名称:db_resume
mysql.properties:
driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/db_resume?useSSL=false&serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF8&autoReconnect=true&failOverReadOnly=false
username=root
password=123456
initialSize=10
maxActive=20
maxWait=6000
`` 这里的密码和用户是自己的而定
里面有几个单词的意义如下:
//定义初始连接数
initialSize=0
//定义最大连接数
maxActive=20
//定义最大空闲
maxIdle=20
//定义最小空闲
minIdle=1
//定义最长等待时间
maxWait=60000
log4j.properities:
### 设置###
log4j.rootLogger = debug,stdout,D,E
### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
### 输出DEBUG 级别以上的日志到=E://logs/error.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = E://logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
### 输出ERROR 级别以上的日志到=E://logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =E://logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
实现连接java代码
DBUtil.java
package com.hc;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import org.apache.commons.dbutils.QueryRunner;
import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class DBUtil {
private static final ThreadLocal<Connection> threadLocal = new ThreadLocal<>();
private static DataSource dataSource = null;
static { //配置文件加载,只执行一次
try (InputStream is = DBUtil.class.getResourceAsStream("/mysql.properties");) {
Properties properties = new Properties();
properties.load(is);
dataSource = DruidDataSourceFactory.createDataSource(properties);
} catch (Exception e1) {
throw new RuntimeException("读取配置文件异常", e1);
}
}
public static Connection getConnection() { //获取连接
Connection conn = null;
try {
conn = threadLocal.get();//从当前线程获得conn
if (conn == null) {
conn = dataSource.getConnection();
threadLocal.set(conn);
}
} catch (Exception e) {
throw new RuntimeException("连接数据库异常", e);
}
return conn;
}
public static QueryRunner getQueryRunner(){
return new QueryRunner(dataSource);
}
public static void release(ResultSet rs, Statement stmt, Connection conn) {
try { // 建议采用这种形式来释放资源,因为finally里面的一定会被释放
if (rs != null) {
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (stmt != null) {
stmt.close();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
}
测试代码:
import org.junit.Test;
import java.sql.Connection;
import static com.hc.DBUtil.getConnection;
public class cc {
public static void main(String[] args) {
Connection conn = getConnection();
System.out.println(conn);
}
}
整个连接的总目录:
成功就点个赞吧!
更多推荐
已为社区贡献2条内容
所有评论(0)