[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.配置文件内可设置最小链接最大连接, 类似于线程池

posted @ 2020-08-22 17:11  Lzzycola  阅读(117)  评论(0编辑  收藏  举报