之前写代码,凡是牵扯到数据库连接的,尤其是项目中的DAO层,每写一个方法都要重复步骤:加载数据库驱动,建立连接……使得代码十分的繁琐,又很浪费时间,写了一个连接数据库的工具类,以便以后使用,只要这样写好了以后任何地方只要连接数据库都可以使用这个模板!
这里给你带来的就是推荐的连接方式!!!
1.目录结构
在src/main/java下创建一个包也就是用来存放工具类
的这个类实现了读取数据库的封装。
2.DBUtils类代码
package cn.tedu.utils;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
import com.alibaba.druid.pool.DruidDataSource;
public class DBUtils {
private static DruidDataSource ds;
static {
// 创建读取*.properties配置文件的对象
Properties p = new Properties();
/*
* 获取文件的输入流,通过反射的方式得到文件的输入流 这种写法会自动去,src/main/resources文件目录下查找
*/
InputStream ips = DBUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");
try {
p.load(ips);
} catch (Exception e) {
e.printStackTrace();
}
String url = p.getProperty("db.url");
String username = p.getProperty("db.username");
String password = p.getProperty("db.password");
String driver = p.getProperty("db.driver");
// 获取数据连接
// Connection conn = DriverManager.getConnection(url, username, password);
// 创建数据连接池对象
ds = new DruidDataSource();
// 设置数据连接信息
ds.setDriverClassName(driver);
ds.setUrl(url);
ds.setUsername(username);
ds.setPassword(password);
// 设置初始连接数据
ds.setInitialSize(3);
// 设置最大连接量
ds.setMaxActive(5);
}
public static Connection getConn() throws SQLException {
// 从连接池中获取连接对象,抛异常
Connection conn = ds.getConnection();
return conn;
}
}
THUtils类代码
package cn.tedu.utils;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletResponse;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver;
public class THUtils {
private static TemplateEngine te;
static {
// 创建模板解析器
//使用该解析器对象可以直接去main/resources目录下找资源
ClassLoaderTemplateResolver r = new ClassLoaderTemplateResolver();
// 设置字符集
r.setCharacterEncoding("utf-8");
// 创建模板引擎
te = new TemplateEngine();
//引擎对象和解析器关联
te.setTemplateResolver(r);
}
public static void write(String fileName,
Context context,HttpServletResponse response) throws IOException {
//将模板和Context容器数据整合到一个新的html
String html = te.process(fileName, context);
//把得到的html返回给浏览器
response.setContentType("text/html;charset=utf-8");
PrintWriter pw = response.getWriter();
pw.print(html);
pw.close();
}
}
3.然后我们在src/main/resources下创建properties配置文件
代码**记得将需要使用的数据库名称和的密码改成你自己的
**:
db.driver=com.mysql.cj.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/newdb3?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true
db.username=root
db.password=123456
db.maxActive=10
db.initialSize=2
4.然后我们就可以每次都在控制器类中使用以下代码实现跟数据库的连接!
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import cn.tedu.utils.DBUtils;
public class XxxDao {
public void insert(Xxx xxx) {
try (Connection conn = DBUtils.getConn();) {
//数据库操作语句
} catch (SQLException e) {
e.printStackTrace();
}
}