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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© CHNing 初级黑马   /  2018-5-21 15:53  /  700 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

JDBC事务
        Connection类
                Connection对象起到管理事务的作用
                        commit()                        提交事务
                        rollback()                        回滚事务
                        setAutocommit(boolean)        设置是否自动提交,false 实现开始事务效果
                        (自动提交后,执行一条语句提交一次)
                        注意:提交事务和回滚事务必须保证事务在同一个Connection对象下
        高性能:
                代码复用:把一些重用性很高的代码抽取出来
                程序解耦合:相互依赖小
        连接池
                装连接对象的容器,需要连接时从连接池中获取,使用完成后在还给连接池。
                链接对象创建和销毁非常耗费时间。
        DataSource
                DriverManager替代类,提供标准的Connection对象
                1.编写一个类实现DataSource接口
                        javax.sql.DataSource
                2.重写getConnection方法
                        创建一个连接池容器(List集合,可以随意改变集合大小)
                3.重写归还连接方法
        装饰者模式
                把指定类装饰,给这个类添加额外的功能。
                1.增强类和被增强类实现相同接口
                2.增强类获得被增强类的引用(为了保留被增强类原有功能)(一般在构造中获取被增强类的引用)
                3.在增强类方法中执行被增强类中的方法,然后在添加增强类代码
        模板类
                如果被增强类方法太多,就需要一个模板类。
                1.模板类和被增强类实现同一个接
                2.增强类继承模板类,重写方法。
                模板类没添加增强方法,只是把被增强类中的方法原封不动实现一遍
        Druid开源连接池使用:
                阿里旗下的开源连接池产品
                DruidDataSource类
                        setDruidClassName(String)                加载驱动
                        setUrl(Stirng)                                                设置连接对象
                        setUsername(String)                                设置用户名
                        setPassword(String)                                设置密码
                一般不会这么用
                配置文件配置Druid
                        DruidDataSourceFactory类
                        DataSource createDataSource(Properties)
                配置文件格式:
                        driverClassName=数据库驱动路径        (默认根据URL判断数据库类型)
                        url=连接mysql路径
                        username=mysql用户名
                        password=mysql密码
                        initialSize=初始化链接几个对象
                        maxActive=最大链接数量
                        maxIdle=最大空闲链接
                        minIdle最小空闲链接
                        maxWait=超时等待事件单位
                配置文件中,url、username、password必须保证全小写
        C3P0连接池
                核心类:ComboPooledDataSource
                        设置属性
                                setDriverClass()                加载驱动
                                setJdbcUrl()                        链接字符串
                                setUser()                        设置mysql用户
                                setPassword()                设置mysql密码
                配置文件方式:重要
                        C3P0支持XML(c3p0-config.xml)、properties
                        XML格式:
                                1.添加w3cp0-config根节点
                                2.添加默认配置default-config
                                        property
                                        DriverClass
                                        jdbcUrl
                                        user
                                        password


        DBUtils工具类
                对JDBC的一个简单封装
                QueryRunner核心类
                        构造方法:
                                QueryRunner(DataSource ds)
                                QueryRunner()
                        方法:
                                int update(String sql,Object ... params)                        更新操作
                                update(Connection conn,String sql,Object ... params)
                                T query(Connection conn,String sql,Object ...params)         查询操作
                        常用执行SQL:                                
                                int update(String sql,Object ... params)
                                T query(String sql,ResultSetHandler rsh,Object ...params)
                        常用执行事务CRUD(以后还会学简单了解):
                                QueryRunner()因为事务必须保证是同一个Connection对象,所以每次都需要传连接对象
                        方法:
                                int updarte (Connection conn,String sql,Object ...params)
                                T query (Connection conn ,String sql,ResultSetHandler rsh,Object ...params)
                                因为事务执行时,必须保证是同一个Connnection对象(传入Connection对象),提交时必须也用传入的Connectin对象才可以        
        DBUtils
                ResultSetHandler
                        实现类:
                                ArrayHandler和ArrayListHandler
                ArrayHandler
                        将一条记录封装到一个数组当中,Object[]
                Object数组:
                        一行中,每列数据是一个Object对象,根据查询结果的列为准
                ArrayListHandler
                        将多条记录封装到List中,每个List对象是一个Object[]
                BeanHandler和BeanListHandler
                        封装数据中,根据实体类对象中setxxx方法决定根据数据库字段封装到实体类中
                        实体类属性根据setxxx/getxxx方法决定,不是根据属性决定
                BeanHandler
                        将一条记录封装到JavaBean中
                        实体类 query(....BeanHandler<实体类>(实体类.class)...)
                BeanListHandler
                        多条记录封装到JavaBean
                        List<实体类> query(...BeanListHandler<实体类>(实体类.class)...)
                MapHandler
                        一条记录装到Map集合中,key是列,value是列对应的值
                        Map<String(列),Object(值)>
                        MapListHandler
                        多条记录装到Map集合中
                ColumnListHandler
                        构造:
                                ColumnListHandler("列名")
                        List<Object> query(..new ColumnListHandler("列") ...)
                        数据中的某列封装到List集合中
                ScalerHandler
                        单个值封装
                        注意:如果count(*)查询,返回的数据是long类型,Object一定强转成Long
                        Object query(...new ScalerHandler()..)
                XML
                        比HTML更严格
                        允许用户自定义标签
                        作用:传输和存储数据、软件配置文件
        XML语法:
                        1.XML文档声明
                                        出现在第一行第一列位置
                                        <?xml 属性名=属性值 属性名=属性值?>
                                        属性:
                                                        version=""                //必须有,版本号                                一般1.0
                                                        encoding                        字符集
                                                        standalone                描述XML文档是否依赖其他文件                yes/no
                        2.注释
                                        eclipse注释快捷 键:Ctrl+Shift+?/
                        3.元素
                                        大小写敏感
                                        属性名必须加 “”
                                        名称中不能包含冒号 :
                                        元素标签必须关闭
                        4.属性
                                        属性命名规范和元素一致
                        5.特殊字符和CDATA区
                                        <![CDATA[  ... 所有内容原意输出   ]]>
                                        XML解析
                                        DOM解析
                                                        一次性将文档加载到内存,形成树形结构解析
                                                        缺点:如果文档特别大,容易导致内存溢出
                                                        优点:可以对XML进行增删改操作
                                        SAX解析
                                                        缺点:不能对文档进行增删改操作
                                                        优点:如果文档特别打,不会导致内存溢出
                                                        针对两种DOM和SAX 的解析工具
                        DOM4J 开源组织提供一套XML解析的API
                        Pull 关于安卓的XML解析
                        JAXP :SUN公司提供的一套XML的解析的API.
                        JDOM :开源组织提供了一套XML的解析的API-jdom.
                        DOM4J解析
                                        1. 导入DOM4Jjar包
                                        2. 创建解析器
                                        3. 获得文档的根节点Document
                                        4. 查找子节点
                        所有节点、属性、内容都可用NODE(节点)表示
                        节点:Node
                        元素:Element
                        文档:Document
                        SAXReader DOM4J解析器
                                        Read(“XML文件路径”)
                                        Document
                                                        getRootElement() //获取根节点
                                                        Document element(String) //获取当前节点下指定元素
                                        Element
                                                        getText() 获取元素下文本
                                                        attributeValue(String attriName)根据元素属性名获取值
                                                        element() 获取子节点
                                                        elements() 获取子节点下所有节点
                                                        elements(String eleName) 获取指定名称子节点
                                                        getName() 获取当前标签
                                                        getPath() 获取当前标路径
                        XPath 表达式
                                        导入jaxen的jar包,DOM4J支持jaxen  jar包
                                        List<T> document.selectNodes(String xpath(XPath表达式))
                                        Node document.selectSingleNode(String xpath);
                        XML约束
                                        用来规范XML写法,出现那些标签,不能出现那些标签,标签出现次数…..
                                        XML的约束种类及区别
                        DTD : 约束字符串
                        DTD语法:
                        内部DTD
                                        <!DOCTYPE persons []>
                        外部DTD
                        本地DTD
                                        <!DOCTYPE persons SYSTEM “*.dtd”>
                        网络DTD
                                        <!DOCTYPE persons PUBLIC “////” “*.dtd”>
                        元素
                                        <!ELEMENT 元素名称 元素类型>
                                                        EMPTY
                                                        ANY
                        子元素
                                        是否有序使用,逗号,  |  表示或者
                                        出现次数
                                                        ?: 0次或1次
                                                        +:1次或多次
                                                        *:0次或多次
                        PCDATA
                                        普通字符串
                        属性
                                        <!ATTLIST 元素名称 属性名称 属性类型 属性约束>
                                        属性的类型
                                                        ID类型:表示属性值需要时唯一的
                                                        CDATA类型:普通的字符串
                                                        Schema : Schema有比DTD更加强大的语义和语法约束
                                                        Schema支持名称空间
                                                                        *.xsd是Schema文档        名称空间:一个XML可以到多个名称空间,每个名称空间有一个别名,有一个名称空间没有别名(代表默认名称空间)。






0 个回复

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