zoukankan      html  css  js  c++  java
  • DButils

    1 连接池

    1.1 什么是连接池?

    之前jdbc步骤: 获取连接 -> 得到Statement-> 发送sql -> 关闭连接

    通讯录系统:

    CURD  四次

    问题: 获取连接对象需要消耗比较多的资源,而每次操作都要重新获取新的连接对象,执行一次操作就把连接关闭,这样连接对象的使用效率并不高!!!

    办法: 能不能让连接对象反复使用???如果可以的话,连接对象使用率提高!

    这就可以用连接池实现!!

    2 连接池工具

    2.1 DBCP连接池

    DBCP: DataBase Connection Pool

    特点:

    1Apache旗下的软件,开源连接池
    2Tomcat的服务器的连接池默认实现

    使用步骤:

    1)导入dbcpjar

    commons-dbcp-1.4.jar  核心包

    commons-pool-1.5.6.jar 辅助包

    2)创建连接池对象BasicDataSource对象

    3)设置连接参数(urluserpassworddirverClass

    4)设置连接池参数(初始连接数,最大连接数,最大等待时间)

    5)获取连接对象(getConnection() 方法)

    方式一:

    1.创建连接池对象

    BasicDataSource ds = new BasicDataSource();

    2.设置连接参数

    3.设置连接池参数

    初始连接数

    最大连接数

    超过最大连接数时,最大等待时间

    最大空闲时间

    4.获取连接

    方式二:使用配置文件加载

    1)配置文件(dbcp.properties)

    url=jdbc:mysql://localhost:3306/day19

    username=root

    password=root

    driverClassName=com.mysql.jdbc.Driver

    initialSize=5

    maxActive=8

    maxWait=3000

    maxIdle=3000

    2)程序

    1.读取配置文件 Properties 对象

    2.创建连接池对象

    BasicDataSource ds = (BasicDataSource)BasicDataSourceFactory.createDataSource(prop);

    3.获取连接

    conn.close() 释放连接(不是真正的关闭连接对象,而是把连接对象放回连接池)

    2.2 C3P0连接池

    特点:

    1)开源连接池

    2Hibernate框架,默认推荐使用C3P0作为连接池实现

    使用步骤:

    1)导入c3p0jar

    c3p0-0.9.1.2.jar 核心包

    2)创建连接池对象ComboPooledDataSource对象

    3)设置连接参数(urluserpassworddirverClass

    4)设置连接池参数(初始连接数,最大连接数,最大等待时间)

    5)获取连接对象(getConnection() 方法)

    方式一:

    ComboPooledDataSource ds = new ComboPooledDataSource();

    ds设置参数

    setInitialPoolSize();//初始化连接数

    setMaxPoolSize();//最大连接数

    setCheckoutTimeout();//最大等待时间

    setMinPoolSize(); //最小连接数

    方式二

    使用配置文件方式读取参数信息

    注意: c3p0会默认查询类路径的c3p0-config.xml文件,文件名不能错!!

    1.创建连接池对象(方式一: 使用默认配置(default-config))

    ComboPooledDataSource ds = new ComboPooledDataSource();

    2.创建连接池对象(方式二: 使用命名配置(named-config:mysql))

    ComboPooledDataSource ds = new ComboPooledDataSource("mysql ");

    3 BeanUtils工具

    3.1 BeanUtils工具的作用

    BeanUtils工具可以方便开发者对象javabean进行操作

    JavaBean规范:

    1)必须有无参的构造方法

    2)把属性进行私有化

    3)提供公开的gettersetter方法

    使用步骤:

    1)导入beanutillsjar

    commons-beanutils-1.8.3.jar 核心包

    commons-logging-1.1.3.jar 辅助包

    3.2 JavaBean操作

    1)对JavaBean的属性进行赋值

    1.使用反射创建javabean对象

    2.对javabean进行赋值

    该方法是给javabean的一个属性赋值

       参数一:需要赋值的javabean对象

       参数二: 需要赋值的属性名称

       参数三: 属性值

    2)对JavaBean的对象赋值

    拷贝整个javabean的对象(所有属性一次性拷贝)

    1.使用反射构造对象

    2.把student的属性拷贝到student2中

    参数一: 目标的javabean

    参数二: 拷贝的源javabean

    3)把Map数据赋值给JavaBean对象

    1.使用反射构造对象

    2.map数据拷贝到student2

    4 元数据的使用

    4.1 什么是元数据?

    一、数据库相关的信息:(封装到数据库元对象: DataBaseMetaData

    数据库的版本

    驱动程序的版本

    Connection.getMetaData()

    DataBaseMetaData对象

    getURL():返回一个String类对象,代表数据库的URL

    getUserName():返回连接当前数据库管理系统的用户名。

    getDatabaseProductName():返回数据库的产品名称。

    getDatabaseProductVersion():返回数据库的版本号。

    getDriverName():返回驱动驱动程序的名称。

    getDriverVersion():返回驱动程序的版本号。

    isReadOnly():返回一个boolean值,指示数据库是否只允许读操作。

    二、参数相关的信息:(封装到参数元对象:ParameterMetaData)

    参数数量

    参数类型

    PreparedStatement. getParameterMetaData()

    获得代表PreparedStatement元数据的ParameterMetaData对象。

    ParameterMetaData对象

    getParameterCount() 获得指定参数的个数

    getParameterType(int param) 获得指定参数的sql类型(驱动可能不支持)

    Parameter metadata not available for the given statement

    参数元数据对给定语句不可用

    三、结果相关的信息:(封装到结果集元对象: ResultSetMetaData)

    列数量

    列名称

    ResultSet.getMetaData()

    获得代表ResultSet对象元数据的ResultSetMetaData对象。

    ResultSetMetaData对象

    getColumnCount() 返回resultset对象的列数

    getColumnName(int column) 获得指定列的名称

    getColumnTypeName(int column) 获得指定列的类型java.sql.Types

    jdbc步骤:

    1)连接数据库,获取Connection对象  (得到DataBaseMetaData

    2)创建Statment,预编译sql语句 (得到ParameterMetaData

    3)设置参数

    4)执行sql,返回结果集 (得到ResultSetMetaData

    5)遍历结果集

    6)关闭连接

    5 DBUtls工具

    5.1 简介DBUtil工具

    DBUtilsApache的工具,是一个对jdbc的简单封装的工具。提供了一些通用的jdbc操作方法。

    5.2 使用步骤

    1)导入jar

    commons-dbutils-1.2.jar

    2)使用的API

    QueryRunner 通过此类可以执行更新操作或者查询操作。

    update(.....): 用于更新操作(DDLDML

    query(.....): 用于查询操作(DQL

    ResultSetHandler接口:用于封装查询之后的结果。

    Object handle(ResultSet rs)   用于封装数据

    常用的实现类:

    ArrayHandler 把结果集的第一行的数据封装成对象数组。

    ArrayListHandler:把结果集的每一行数据封装对象数组,把这个对象数组放入List

    BeanHandler 把结果集的第一行数据封装成javabean

    BeanListHandler: 把结果集的每一行数据封装成javabean,把这个javabean放入LIst

    ScalarHandler 把结果集的第一行第一列取出。通常用于聚合函数查询。例如(count()/max()

    如果表的字段名称和javabean的属性名称不一致时,需要自定义ResultSetHandler的实现类

    收藏的博文 地址 https://www.cnblogs.com/CQY1183344265/p/5854418.html

  • 相关阅读:
    【24点游戏】cocos2dx 源码
    『Python题库
    『Python题库
    【python安装】Windows上安装和创建python开发环境
    『Linux基础
    『Linux基础
    『Linux基础
    『Linux基础
    『Linux基础
    『Python基础-14』匿名函数 `lambda`
  • 原文地址:https://www.cnblogs.com/lldsgj/p/10802343.html
Copyright © 2011-2022 走看看