参考:http://blog.csdn.net/liuhenghui5201/article/details/16369773

一、

1、加载驱动--》》封装    ---》》静态代码块

2、连接数据库--》》封装    ---》》返回Connection类型

3、执行SQL语句

4、处理得到的结果集

5、关闭连接--》》封装

3、4封装到数据访问对象Dao类,1、2、5封装到DBUtils类

 private final static String URL = "jdbc:oracle:thin:@localhost:1521:orcl";
 private final static String USER = "aa";
 private final static String PWD = "aa";
 static{
     try {
         Class.forName("oracle.jdbc.driver.OracleDriver");
     } catch (ClassNotFoundException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
     }
 }

上述代码写在DBUtils类中,封装在静态代码块类似于单例形式,即只需要一次调用加载驱动

扩展:ThreadLocal类       ---绑定本地线程,常用的get( ),set( ),remove( )方法

set( T value): 将value值加入本地线程中

get( ): 从本地线程中取值

remove( ):

目的:JVM为每一个运行的线程,绑定了私有的本地实例存储空间

解决问题:多线程环境中(同步),为了解决多线程中对同一变量的访问冲突

方法:1)、可以直接创建本地线程对象,并通过泛型指定线程绑定的数据类型

private static ThreadLocal<Connection> threadLocal = new ThreadLocal<Connection>();

2)、

事务处理:批量操作

conn.setAutoComit(false);设置提交方式为手工提交

conn.commit()提交事务

出现异常,回滚 conn.rollback();

二、数据访问对象Dao    ---通常一张表对应一个Dao,命名规范 :表名Dao

1、addXxx( )    ---对应INSERT

updateXxx( )

deleteXxx( )

queryAllData( )    ---select ... from

queryById( )   --select ... from  ... where  id = ?

三、PreparedStatement接口

----表示预编译的 SQL 语句的对象。

----SQL 语句被预编译并存储在 PreparedStatement 对象中。然后可以使用此对象多次高效地执行该语句。

四、查询数据,返回结果集

1、解析方法:

将单条记录封装到一个JavaBean对象中,每一列的值对应Bean一个属性

将若干个Bean封装到List集合,返回该List

2、JavaBean  ---主要用于封装,传递数据对象,它是一个普通的java类,命名规则:表名Bean

构成:私有属性,属性的前三个字母必须小写

各属性的set/get方法,

默认构造方法

扩展:循环的两种方法

 List<MyUserBean> list = dao.queryAllData();    //创建一个数组来接收返回的数组

 Iterator<MyUserBean> it = list.iterator();     //方法1:Iterator循环,需要理解Iterator的原理
 while (it.hasNext()) {
     MyUserBean myUserBean = (MyUserBean) it.next();  //得到MyUserBean中的一条记录
     System.out.println(myUserBean.getUname());
 }

 for(MyUserBean it2 : list){                           //方法2:for循环
     System.out.println(it2.getUname());
 }

五、根据Id查询

多表连接查询:

因为多表连接查询的列是不固定的,所以,不能创建JavaBean存储单条记录,改用Map对象

将每一条记录  --》》封装到Map对象

将若干条记录对象(Map对象)  --》》封装到List列表中

返回List

ResultSetMetaData 接口:取得结果集中的元数据

六、BaseDao封装

可变长参数:              ---语法:数据类型 ... 形参名

---必须写在参数列表的最后一个且只有一个,可以当成数组使用,

查询操作在BaseDao里的封装有两种方案:

1)、查询后返回ResultSet让子类自己解析结果集

2)、根据项目需求,封装成某种特定数据类型

七、单值封装

java系列-JDBC的封装的更多相关文章

  1. java的jdbc简单封装

    在学了jdbc一段时间后感觉自己写一个简单的封装来试试,于是參考的一些资料就写了一下不是多好,毕竟刚学也不太久 首先写配置文件:直接在src下建立一个db.properties文件然后写上内容 < ...

  2. java系列--JDBC连接oracle

    <oracle开发实战经典><oracle DBA从入门到精通> JDBC连接数据库 JNDI连接池 oracle.jdbc.driver.OracleDriver 其实就是一 ...

  3. Java通过JDBC 进行Dao层的封装

    前言 前面有一章节,我专门讲解了Java通过JDBC 进行MySQL数据库操作,这主要讲解了MySQL数据库的连接和简单的操作,但是在真正的Java项目中,我们要不断的和数据库打交道,为了提高数据库操 ...

  4. java:Oracle(Jdbc的封装)和HTML(登录,注册,个人信息界面)

    1.Oracle Jdbc的封装: public class TestJdbc { // 把jdbc需要的属性,全部私有化 private static final String DRIVER = & ...

  5. Java基础系列1:Java基本类型与封装类型

    Java基础系列1:Java基本类型与封装类型 当初学习计算机的时候,教科书中对程序的定义是:程序=数据结构+算法,Java基础系列第一篇就聊聊Java中的数据类型. 本篇聊Java数据类型主要包括两 ...

  6. Java的JDBC操作

    Java的JDBC操作 [TOC] 1.JDBC入门 1.1.什么是JDBC JDBC从物理结构上来说就是java语言访问数据库的一套接口集合,本质上是java语言根数据库之间的协议.JDBC提供一组 ...

  7. Java系列笔记(2) - Java RTTI和反射机制

    目录 前言 传统的RTTI 反射 反射的实现方式 反射的性能 反射与设计模式 前言 并不是所有的Class都能在编译时明确,因此在某些情况下需要在运行时再发现和确定类型信息(比如:基于构建编程,),这 ...

  8. Java使用Jdbc操作MySql数据库(一)

    这个示例是Java操作MySql的基本方法. 在这个示例之前,要安装好MySql,并且配置好账户密码,创建一个logininfo数据库,在数据库中创建userinfo数据表.并且在表中添加示例数据. ...

  9. 【转】O'Reilly Java系列书籍建议阅读顺序(转自蔡学庸)

    Learning Java the O'Reilly's Way (Part I) Java 技术可以说是越来越重要了,不但可以用在计算机上,甚至连电视等家电用品,行动电话.个人数字助理(PDA)等电 ...

随机推荐

  1. Windows API 之 CreateFile

    Creates or opens a file or I/O device. The most commonly used I/O devices are as follows: file, file ...

  2. 微信小程序实例教程(一)

    序言 开始开发应用号之前,先看看官方公布的「小程序」教程吧!(以下内容来自微信官方公布的「小程序」开发指南) 本文档将带你一步步创建完成一个微信小程序,并可以在手机上体验该小程序的实际效果.这个小程序 ...

  3. 快速部署Python应用:Nginx+uWSGI配置详解

    在PHP里,最方便的就是deployment了,只要把php文件丢到支持PHP的路径里面,然后访问那个路径就能使用了:无论给主机添加多少PHP应用,只要把目录改好就没你的事了,完全不用关心php-cg ...

  4. Django之路:QuerySet API,后台和表单

    一.Django QuerySet API Django模型中我们学习了一些基本的创建和查询.这里专门讲以下数据库接口相关的接口(QuerySet API),当然你也可以选择暂时跳过这节.如果以后用到 ...

  5. WebClient 访问间歇性返回403解决方案

    说明:前段时间做的一个项目莫名的返回403的错误,这种情况也多大是程序员最不喜欢的了,没办法先来分析一下错误信息.之前的代码如下: WebClient webclient = new WebClien ...

  6. PHP获取POST方式的XML数据

    今天做微信支付开发,微信服务器回调的时候,会发送XML数据到我的服务器,用以往的POST,GET是获取不到的 百度了一下,应该是 $file_in = file_get_contents(" ...

  7. 过滤字符串html标签方法

    过滤字符串html标签方法,如果输入的过滤标签为“*”,那么给字符串加上p标签 public static string noTagHtml(string str, string tagname) { ...

  8. wireshark 使用技巧

      Wireshark使用技巧-GeoIP显示IP地理位置     在使用Wireshark时,有的时候需要知道抓取的报文中某个IP地址的具体地理位置,笨一点的方法是将IP地址复制,然后通过一些软件或 ...

  9. 2015浙江财经大学ACM有奖周赛(一) 题解报告

    2015浙江财经大学ACM有奖周赛(一) 题解报告 命题:丽丽&&黑鸡 这是命题者原话. 题目涉及的知识面比较广泛,有深度优先搜索.广度优先搜索.数学题.几何题.贪心算法.枚举.二进制 ...

  10. Quartz总结(四):动态修改定时器二

    前文:http://www.cnblogs.com/LiuChunfu/p/5598806.html 提到了一种动态修改定时器的方法, 其本质就是在job方法中注入Schedular的对象,从Sche ...