【java】druid and jdbctemplate
前言
本博文主要是对java中druid and jdbctemplate的一个介绍,以及记录,方便后续使用时候可以直接加载。
druid and jdbctemplate介绍
Druid和JdbcTemplate是Java中常用的数据库访问工具。
-
Druid是阿里巴巴开源的数据库连接池库,它提供了强大的监控和扩展功能,能够有效地管理和优化数据库连接。Druid支持各种常见的数据库,如MySQL、Oracle、PostgreSQL等,并且能够自动识别并适配各种数据库。
-
JdbcTemplate是Spring框架中的一个核心类,它提供了简单而强大的数据库访问功能。通过JdbcTemplate,我们可以方便地执行SQL语句,查询数据库并获取结果,以及执行数据库的更新操作。JdbcTemplate封装了JDBC的底层细节,提供了一种更简洁、更易用的方式来访问数据库。
在使用Druid和JdbcTemplate时,首先需要配置数据库连接信息,并创建对应的数据源。然后可以使用JdbcTemplate来执行各种数据库操作,如查询、插入、更新等。Druid提供了监控和统计功能,可以通过配置来开启,以便更好地了解数据库连接池的使用情况和性能状况。
总的来说,Druid和JdbcTemplate是Java中常用的数据库访问工具,它们提供了方便、高效、安全的数据库访问方式,使开发人员在使用数据库时更加简单和可靠。
示例介绍
druid.properties
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/qc?useUnicode=true&characterEncoding=UTF-8&tinyInt1isBit=false
username=root
password=
#初始化连接数
initialSize=5
#最大连接数
maxActive=10
#最大等待时间
maxWait=3000
JDBCUtils
package util;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import com.sun.xml.internal.bind.v2.model.core.ID;
import javax.sql.DataSource;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
/**
* Druid连接池的工具类
*/
public class JDBCUtils {
//1.定义成员变量DataSource
private static DataSource ds;
static {
try {
//1.加载配置文件
Properties pro=new Properties();
pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
//2.获取DataSource
ds= DruidDataSourceFactory.createDataSource(pro);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 获取连接
*/
public static Connection getConnection() throws SQLException {
return ds.getConnection();
}
/**
* 释放资源
*/
public static void close(Statement stmt,Connection conn) {
close(null,stmt,conn);
// if (stmt!=null){
// try {
// stmt.close();
// } catch (SQLException e) {
// e.printStackTrace();
// }
// }
//
// if (conn!=null){
// try {
// conn.close();//归还连接
// } catch (SQLException e) {
// e.printStackTrace();
// }
// }
}
public static void close(ResultSet rs,Statement stmt, Connection conn) {
if (rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stmt!=null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn!=null){
try {
conn.close();//归还连接
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 获取连接池方法
*/
public static DataSource getDataSource(){
return ds;
}
}
jdbcTemplateDemo
import org.junit.Test;
import org.springframework.jdbc.core.JdbcTemplate;
import util.JDBCUtils;
import util.TimeUtil;
import java.sql.Connection;
import java.util.List;
import java.util.Map;
public class JdbcTemplateDemo {
private JdbcTemplate template=new JdbcTemplate(JDBCUtils.getDataSource());
//junit单元测试,可以让方法独立执行
@Test
public void jdbcTemplateDemo(){
for (int i=0;i<4;i++){
System.out.println("begin2"+ TimeUtil.todayMsUtil());
//1.创建jdbctemplate对象
//String sql="UPDATE `test_sht3` SET `num` = 9 WHERE `id`=3";
//String sql="INSERT INTO `test_sht`( `data5`, `deal_num`) VALUES( 88,56 )";
String sql="DELETE FROM `test_sht16` WHERE `id`=5";
//2.调用方法
int count=template.update(sql);
System.out.println(count);
System.out.println("close"+TimeUtil.todayMsUtil());
}
}
@Test
public void jdbcTemplateDemo1(){
/**
* queryforMap:--Map<String,object>
* 查询结果将结果集封装为map集合,将列名作为key,将值作为value,将这条记录封装为map集合,
* 注意,这个方法查询的结果集合长度只能是1
* queryforlist:--List<Map<String,object>>
* 查询所有的结果集封装为list集合
* query:
* 查询所有记录,将其封装为bean对象的list集合
* query的参数:rowmapper
* 一般我们使用beanpropertyrowmapper实现类,可以完成数据到javabean的自动封装
* new beanpropertyrowmapper<类型>(类型.class)
* queryforobject:
* 查询结果,将结果封装为对象
* 一般用于聚合函数的查询
*
*/
for (int j=0;j<4;j++){
System.out.println("begin2"+ TimeUtil.todayMsUtil());
//1.创建jdbctemplate对象
String sql="SELECT `id`, `numberss` FROM `test_sht16` WHERE 1";
//2.调用方法
List<Map<String,Object>> list=template.queryForList(sql);
for (Map<String,Object> stringObjectMap:list){
if (stringObjectMap.get("numberss")==null){
System.out.println(stringObjectMap);
}
if (stringObjectMap.get("id").toString().equals("4")){
System.out.println("string come");
}
if (stringObjectMap.get("numberss")!=null && stringObjectMap.get("numberss").toString().equals("2")){
System.out.println("int come");
}
}
System.out.println("close"+TimeUtil.todayMsUtil());
}
}
}
具体学习链接参考
druid和jdbctemplate的jar包
链接:https://pan.baidu.com/s/1JbHIzXw51QU4B6blXEqj2w
提取码:mnfa