A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

JDBC高级
JDBC事务的概念:
        把扣钱和收钱绑定到一起,要么同时成功,要么同时失败.
        如:银行转账
准备工作:       
        创建数据库和表
        事务管理的API
        Connection来管理事务
JDBC事务管理测试类:
事务管理核心思想:
        业务逻辑的操作要使用同一个Connection对象
事务管理的核心操作步骤:
        业务逻辑的操作
完成转账案例:
                //导入数据库jar包,创建lib文件
                //创建测试类@Test
                //修改配置文件
                //定义对象
                //获得连接                (获得连接的对象conn)
                //开启事务                (conn.setAutoCommit(false)自动提交)
        ---业务逻辑操作---
                //编写SQL
                //预编译SQL                (获得pstmt对象)
                //设置参数                (setString/Int)       
                //执行SQL                (executeUpdate)
        ---业务逻辑操作---
                //提交事务
                //回滚事务(catch)conn.rollback(),捕捉异常
连接池的概述:
        装有连接的容器,使用时,从连接池中获取,使用完后把连接放回池子.
为什么学习连接池:
        连接的创建和销毁耗费时间,提升程序运行效率
自定义连接池:
        DataSource是连接池的接口.使用接口实现类完成的构造(new对象).
        创建一个List集合,存放连接对象,(集合中添加连接)初始化连接,获得连接remove
        实现步骤:
                //引入jar包和自定义工具类JDBCUtils
                //编写一个类实现DataSource接口
                //
                //从连接池中获得连接的方法(重写getConnection)
       
        测试连接池步骤:
                //@Test
                //定义对象
                //从连接池中获取try/catch
                //
(了解)自定义连接池的问题:
        1. 使用接口实现类完成的构造(new对象),不方便程序的扩展
        2. 自己定义了方法归还连接,使用者还得记住你自己定义的方法.
高可用:
高性能:
面向接口的编程思想:
        public void asd(List list){}
设计模式:装饰者模式,技能的拔高.
接口a:        实现类b(实现接口a)
                增强类c(实现接口a)
自定义连接池解决方法:
        增强一个类中的方法:
                1.采用继承的方式
                        最简单的方式
                        使用条件:必须能够控制这个类的构造,即知道被继承的这个类是谁.
                2.采用装饰者模式
                        使用条件:增强的类和被增强的类实现相同的接口,即实现类和包装类实现相同的接口
                                         在增强的类中获得被增强的类的引用
                3.动态代理的方式
自定义连接池解决代码:
        为了简化编程(重写Connection的所有方法),提供一个模板类,
        增强Connection的close方法
        //实现Connection接口
        //构造方法传过来Connection


开源网站:开源中国,github,码云
数据库连接池只管连接,别的步骤都一样.
配置文件用#注释
★★Druid开源连接池:
        阿里旗下开源连接产品.
        1.手动设置数据库连接的参数
        2.配置方式设置参数
                key是人家设定好的
        //引入jar包:mysql和Druid,Buildpath一下
        //@Tset
        //定义对象
        //创建配置文件对象Properties
        //加载load配置文件
        //根据配置文件,创建连接池
        DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
        //获得连接conn
        //编写SQL
        //预编译
        //设置参数
        //执行SQL
        //遍历
        //释放资源
       
★★C3P0开源连接池:
                配置文件的方式:按照它提供的规范设置使用.
                //导包Build path下
                //创建配置文件,命名为c3p0-config.xml,修改参数(数据库名),放到src下
                //创建连接池ComboPooledDataSource dataSource=new ComboPooledDataSource()
                //从连接池(dataSource)中获得连接
                       
★★改写工具类:
                一个应用只创建一次连接池就行了.
                步骤:       
                        //创建连接池ComboPooledDataSource
                        //获得连接的方法
                        //获得连接池的方法
                        //释放资源方法


JDBC的工具类:DBUtils               
        DButils为web阶段用到的,封装JDBC,抽取成工具类,简化代码.
DBUtils的API:
        QueryRunner对象,核心运行类
★★QueryRunner qr =new QueryRunner(DataSource);
                qr.query 查询操作
                qr.update增删改操作
DBUtils的增删改操作步骤:update
        @Test
        //创建核心类QueryRunner,传入连接池
                QueryRunner qr = new QueryRunner(JDBCUtils2.getDataSource());
        //qr.update();
                qr.update("insert into user values (null,?,?)","ddd",1000);
DBUtils的查询操作步骤:query
        1.查询表中的多条记录,把每条记录封装成一个对象,放进一个List集合.
        2.查询一条记录,直接使用这个封装记录的对象.
       
如果实体类中的属性和表中属性名称不一致;
表中列名和结果集中列名有关;

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马