zoukankan      html  css  js  c++  java
  • [JavaEE基础] JDBC

    前言: 本文主要讲述JDBC的基本开发步骤,以及简单知识点,不会涉及其他或底层乱七八糟的,用于给笔者梳理知识体系与总结    本文数据库类型为MySQL

    一.什么是JDBC:

      Java Database Connectivity: 简称JDBC  简单地说就是使用Java对数据库进行操作

    二.如何操作

      1.连接问题: 使用 MySQL的connetion.jar包进行操作

        i.使用反射加载驱动, Class.forName("com.mysql.jdbc.Driver");

        ii.通过加载好的驱动获取连接: Connetion connect = DriverManager.getConnetion("URL","USER","PASSWORD");

        ps:使用反射的时候会加载该类信息,而类信息中的静态块会使用DriverManager 里的静态方法 往驱动管理类内传一个 new Driver() 的实例,然后再使用驱动管理类获取连接,至于

    为什么使用反射而不是直接new 出来是因为如果实例化出来了就会对这个类产生一个具体的依赖,只要换驱动就得改代码,而使用反射就只用在配置文件里改驱动和url就好了,目的还是为了解耦

      2.操作问题: 使用java.sql 里的各种类往已经建立好的connection内传送数据,以此来对数据库进行操作

        i.PreparedStatement 该类是笔者目前使用的类,使用?在sql语句里进行占位,然后传送参数进行操作,防止sql注入

         该类的方法: setObject() 这个用于传参数,当然还有其他的, executeUpdate() 用于执行DML语句 返回类型为 int 值是该语句对数据库影响的行数 executeQuery() 用于执行DQL语句 返回值为ResultSet类也就是一个结果集,使用next()方法后 接收一行的数据, 值得注意的是 使用完毕后不能往回取,用了就是用了 getString() 等进行操作

        ii.使用 close()方法 对 连接 语句类 结果集 进行关闭

    三.开发步骤

      1. 分为三层: dao层 service层 view层

        dao层对数据库进行直接操作

        service层不允许直接触碰数据库 而是对dao层提供的方法对数据库进行间接的操作,然后实现各种业务逻辑

        view层是用户使用层,里面有mian方法

        用户在view层进行要求和数据的传入,service层使用dao层提供的方法为view层需要的业务进行实现,数据提供

      2.一般来说JDBC的包有:

        1.entity包: 用于存放数据库对于Java的实体类,是一种映射,由数据库列映射为该类的属性 使用get/set方法进行操作

        2.utils包 : 存放各种类 如: JDBCUtil 连接 的操作工具   ,  ServiceUtil 事务的操作工具

        3.dao包: 存放Dao层的类,如BaseDao 里面有基础的查询方法 基础的增删改方法 可以当作父类  , xxxDao 接口 用于规范Dao的实体类 , 里面还有个包 放xxxDaoImpl 继承基础Dao然后实现Dao接口

        4.service包: 存放service层的类,xxxService 接口 规范业务层实现类,同样有个实现类包

        5.view包: 放视觉层的类,用户使用的类只有这个类有main方法入口

    四.Commons DbUtils的使用方法:

      1.DML操作:只用写SQL语句

      2.DQL操作:可以把结果转为List Array Set等集合

      使用QueryRunner 的实体类进行下列方法的使用

      查询方法:query(String sql, ResultSetHandler rsh, Object… params) 

        i.单行单列结果: 使用ScalarHandler 进行转化

        ii.单行多列结果: 使用BeanHandler 进行转化

        iii.多行多列结果: 使用BeanListHandler 进行转化

      增删改方法:update(String sql, Object… params)

    五.Druid数据库连接池

      1.将properties配置文件当作参数传入DruidDataSourceFactory.createDataSource()方法内 强转 为DruidDataSource后获取一个DruidDataSource的实例

      2.将上方获得的实例调用getConnection()方法

      3.配置文件内可设置最小链接最大连接, 类似于线程池

  • 相关阅读:
    莫队模板
    CF600E Lomsat gelral
    JZOJ 捕老鼠
    JZOJ 4896. 【NOIP2016提高A组集训第16场11.15】兔子
    JZOJ 4895【NOIP2016提高A组集训第16场11.15】三部曲
    双端队列xLIS问题
    最大K段和
    你真的了解ES6的promise吗?
    JS对象和数组深浅拷贝总结②
    当前页码删除唯一数据后加载前一页内容
  • 原文地址:https://www.cnblogs.com/Lzzycola/p/13546330.html
Copyright © 2011-2022 走看看