java系列-JDBC的封装
参考: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的封装的更多相关文章
- java的jdbc简单封装
在学了jdbc一段时间后感觉自己写一个简单的封装来试试,于是參考的一些资料就写了一下不是多好,毕竟刚学也不太久 首先写配置文件:直接在src下建立一个db.properties文件然后写上内容 < ...
- java系列--JDBC连接oracle
<oracle开发实战经典><oracle DBA从入门到精通> JDBC连接数据库 JNDI连接池 oracle.jdbc.driver.OracleDriver 其实就是一 ...
- Java通过JDBC 进行Dao层的封装
前言 前面有一章节,我专门讲解了Java通过JDBC 进行MySQL数据库操作,这主要讲解了MySQL数据库的连接和简单的操作,但是在真正的Java项目中,我们要不断的和数据库打交道,为了提高数据库操 ...
- java:Oracle(Jdbc的封装)和HTML(登录,注册,个人信息界面)
1.Oracle Jdbc的封装: public class TestJdbc { // 把jdbc需要的属性,全部私有化 private static final String DRIVER = & ...
- Java基础系列1:Java基本类型与封装类型
Java基础系列1:Java基本类型与封装类型 当初学习计算机的时候,教科书中对程序的定义是:程序=数据结构+算法,Java基础系列第一篇就聊聊Java中的数据类型. 本篇聊Java数据类型主要包括两 ...
- Java的JDBC操作
Java的JDBC操作 [TOC] 1.JDBC入门 1.1.什么是JDBC JDBC从物理结构上来说就是java语言访问数据库的一套接口集合,本质上是java语言根数据库之间的协议.JDBC提供一组 ...
- Java系列笔记(2) - Java RTTI和反射机制
目录 前言 传统的RTTI 反射 反射的实现方式 反射的性能 反射与设计模式 前言 并不是所有的Class都能在编译时明确,因此在某些情况下需要在运行时再发现和确定类型信息(比如:基于构建编程,),这 ...
- Java使用Jdbc操作MySql数据库(一)
这个示例是Java操作MySql的基本方法. 在这个示例之前,要安装好MySql,并且配置好账户密码,创建一个logininfo数据库,在数据库中创建userinfo数据表.并且在表中添加示例数据. ...
- 【转】O'Reilly Java系列书籍建议阅读顺序(转自蔡学庸)
Learning Java the O'Reilly's Way (Part I) Java 技术可以说是越来越重要了,不但可以用在计算机上,甚至连电视等家电用品,行动电话.个人数字助理(PDA)等电 ...
随机推荐
- springMVC下载文件前修改文件名字
很多时候,为了方便,下载文件其实就直接写了一个文件在服务器上面的路径,然后直接点击一个这个地址,浏览器就自然而然的开始下载了. 但是这次项目需要在文件下载之前修改文件的名字,也就是说,服务器上文件的名 ...
- location对象的属性和方法应用(解析URL)
本文将与大家分享下location对象使用属性和方法来解析URL的实例,感兴趣的朋友可以参考下,希望对你有所帮助 location对象提供了很多属性和方法用来解析URL. 复制代码代码如下: &l ...
- ref和out,以及一般方法的引用参数和值参数寻解
对与ref和out的区别,我相信很多人都知道,这里我简单罗列下: 1.首先ref和out两种类型的参数都是可以将方法内对参数的修改传递到方法外面 2.ref参数需要在传递之前初始化,out不需要,ou ...
- BZOJ 1196 二分答案+并查集
http://www.lydsy.com/JudgeOnline/problem.php?id=1196 题目大意:n个城市,m-1条路,每条路有一级公路和二级公路之分,你要造n-1条路,一级公路至少 ...
- virtualbox, vt-s, rmmod kvm-intel
http://blog.sina.com.cn/s/blog_4e7b97f00100fltu.html装完后,去下个jdk,坑爹的Oracle非要让老子注册,试了几次都没有成功,密码不合格拉,邮箱已 ...
- CentOS 修改Mysql的root密码
1.知道密码 第一次登陆(无密码) mysqladmin -u root password NEWPASSWORD 修改过密码 mysqladmin -u root -p 'oldpassword' ...
- ide编码害死人
1.从网上复制代码的时候不要直接复制代码到ide中(MyEclipse,Eclipse)中这样在一般的情况下就没问题,但是在有编码规则的时候需要特别的小心,建议先复制到本地的txt文件中,然后在复制到 ...
- ajax编程**
ajax 编程 *step1获得 XmlHttpRequest 对象.该对象由浏览器提供,但是该类型并没有标准化.ie 和其它浏览器不同,其它浏览器都支持该类型,而 ie 不支持. function ...
- Ubuntu 12.04 中文输入法
Ubuntu 12.04 中文输入法 [日期:2012-07-28] 来源:Linux社区 作者:lqhbupt [字体:大 中 小] Ubuntu上的输入法主要有小小输入平台(支持拼音/二笔/ ...
- Sping中的IOC四种注解的简单记录
@Component 通用注解,不推荐使用,要用的话,任何类的头上都能使用,但是这个类到底是干嘛用得就不知道了. @Controller 控制层使用,也就是MVC中的C,主要的时候使用的时候注意配合@ ...