二2 数据库连接池&DBUtils
Posted 随记zsjzhxc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二2 数据库连接池&DBUtils相关的知识,希望对你有一定的参考价值。
1. 数据库连接池
基本概念
使用优点
使用方式
DBCP连接池
属性 | 描述 |
driverClassName | 数据库驱动名称 |
url | 数据库地址 |
username | 用户名 |
password | 密码 |
maxActive | 最大连接数量 |
maxIdle | 最大空闲连接 |
minIdle | 最小空闲连接 |
initialSize | 初始化连接 |
C3P0连接池
Druid连接池
public class DruidUtils {
//1.定义成员变量
public static DataSource dataSource;
//2.静态代码块
static{
try {
//3.创建属性集对象
Properties p = new Properties();
//4.加载配置文件 Druid 连接池不能够主动加载配置文件 ,需要指定文件
InputStream inputStream =
DruidUtils.class.getClassLoader().getResourceAsStream("druid.properties");
//5. 使用Properties对象的 load方法 从字节流中读取配置信息
p.load(inputStream);
//6. 通过工厂类获取连接池对象
dataSource = DruidDataSourceFactory.createDataSource(p);
} catch (Exception e) {
e.printStackTrace();
}
}
//获取连接的方法
public static Connection getConnection(){
try {
return dataSource.getConnection();
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
//释放资源
public static void close(Connection con, Statement statement){
if(con != null && statement != null){
try {
statement.close();
//归还连接
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close(Connection con, Statement statement, ResultSet resultSet){
if(con != null && statement != null && resultSet != null){
try {
resultSet.close();
statement.close();
//归还连接
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
1. DBUtils工具类
DBUtils简介
Dbutils核心功能介绍
案例相关知识
DBUtils完成 CRUD
参数 | 说明 |
Connection conn | 数据库连接对象, 自动模式创建QueryRun 可以不传 ,手动模式必须传递 |
String sql | 占位符形式的SQL ,使用 ? 号占位符 |
Object... param | Object类型的 可变参,用来设置占位符上的参数 |
ResultSetHandler 实现类 |
说明 |
ArrayHandler | 将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值 |
ArrayListHandler | 将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组在封装到List集合中。 |
BeanHandler | 将结果集中第一条记录封装到一个指定的javaBean中. |
BeanListHandler | 将结果集中每一条记录封装到指定的javaBean中,再将这些javaBean在封装到List集合中 |
ColumnListHandler | 将结果集中指定的列的字段值,封装到一个List集合中 |
KeyedHandler | 将结果集中每一条记录封装到Map<String,Object>,在将这个map集合做为另一个Map的value,另一个Map集合的key是指定的字段值。 |
MapHandler | 将结果集中第一条记录封装到了Map<String,Object>集合中,key就是字段名称,value就是字段值 |
MapListHandler | 将结果集中每一条记录封装到了Map<String,Object>集合中,key就是字段名称,value就是字段值,在将这些Map封装到List集合中。 |
ScalarHandler | 它是用于封装单个数据。例如 select count(*) from 表操作 |
方法 | 说明 |
query(String sql, handler ,Object[] param) | 自动模式创建QueryRunner, 执行查询<b |
query(Connection con,String sql,handler,Object[] param) | 手动模式创建QueryRunner, 执行查询 |
3. 数据库批处理
基本概念
实现批处理
方法 | 说明 |
void addBatch() | 将给定的 SQL 命令添加到此 Statement 对象的当前命令列表中。 通过调用方法 executeBatch 可以批量执行此列表中的命令。 |
int[] executeBatch() | 每次提交一批命令到数据库中执行,如果所有的命令都成功执行了, 那么返回一个数组,这个数组是说明每条命令所影响的行数 |
url=jdbc:mysql://127.0.0.1:3306/db5?characterEncoding=UTF-8&rewriteBatchedStatements=true
4. MySql元数据
基本概念
常用命令
select version(); //获取mysql服务器的版本信息
show status; //查看服务器的状态信息
show columns from table_name; //显示表的字段信息等,和desc table_name一样
show index from table_name; //显示数据表的详细索引信息,包括PRIMARY KEY(主键)
show databases://列出所有数据库
show tables : //显示当前数据库的所有表
select database(): //获取当前的数据库名
使用JDBC 获取元数据
元数据类 | 作用 |
DatabaseMetaData | 描述数据库的元数据对象 |
ResultSetMetaData | 描述结果集的元数据对象 |
方法说明 |
getURL() : 获取数据库的URL |
getUserName(): 获取当前数据库的用户名 |
getDatabaseProductName(): 获取数据库的产品名称 |
getDatabaseProductVersion(): 获取数据的版本号 |
getDriverName(): 返回驱动程序的名称 |
isReadOnly(): 判断数据库 |
方法说明 |
getColumnCount() : 当前结果集共有多少列 |
getColumnName(int i) : 获取指定列号的列名, 参数是整数 从1开始 |
getColumnTypeName(int i): 获取指定列号列的类型, 参数是整数 从1开始 |
以上是关于二2 数据库连接池&DBUtils的主要内容,如果未能解决你的问题,请参考以下文章
Flask:wtforms组件 & 数据库连接池 DBUtils