DAO模式
来源:互联网 发布:vb里布尔型数据 编辑:程序博客网 时间:2024/05/22 17:27
什么是DAO
DAO是Data Access Object数据访问接口...
数据访问..故明思异就是与数据库打交道...
是夹在业务逻辑与数据库资源中间...
在B/S体系结构中,一般将应用分为
l 表示层
l 业务逻辑层 调用封装的底层代码来实现对功能的操作
l 数据持久层 访问数据库的操作
对持久层的封装,就可以运用数据访问对象模式(DAO ,Data Access Object),它将从数据源(广义)获取与操纵数据的方法进行抽象.
DAO的功能:
1. DAO用来封装Data Source的..就可以把Driver. URL. username, passpword这一些放在DAO中2. DAO也是把对数据库的操作全部封装在里面..
比如说你要你要插入一个新的用户..那么.在DAO中我们只需要提供一个insertUser(User user)这一个方法就可以了..具体的操作是在DAO中实现的...
那么对于要调用DAO的时候.我们只要知道insertUser(User)是用来插入一个新的用户...而不需要知道是如何实现的..
DAO模式的核心是数据访问对象类DAO和数据传输对象类DTO(Data Transfer Object),
l 数据访问对象类封装了常用的操作,例如Update,remove,Create操作
l 数据传输对象类实现了java.io.Serialable接口,包含数据属性和数据的set/get操作(类似JavaBean)
数据传输对象类DTO:
public class UserDTO implements java.io.Serializable {
//fields----------------------------------------
private java.lang.Integer userId;
private java.lang.String username;
private java.lang.String password;
~~~get和set方法~~~
}
数据访问对象类DAO:
public class UserDAO{
public void createUser(UserDTO user) {
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
Class.forName(Driver);
con = DriverManager.getConnection(theurl, username, password);
String sql = "insert into user(userId,username,password) values ("
+ user.getUserId() + ","
+ "'" + user.getUsername() + "'" + ","
+ "'" + user.getPassword() + "'"
+ ")";
stmt = con.createStatement();
stmt.execute(sql);
}
catch (Exception sqlex1) {
sqlex1.printStackTrace();
}
finally {
if (con != null){
try {
con.close();
}
catch (SQLException sqlex2){
sqlex2.printStackTrace();
}
}
}
}
}
数据传输对象类DTO:
public class UserDTO implements java.io.Serializable {
//fields----------------------------------------
private java.lang.Integer userId;
private java.lang.String username;
private java.lang.String password;
~~~get和set方法~~~
}
数据访问对象类DAO:
public class UserDAO{
public void createUser(UserDTO user) {
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
Class.forName(Driver);
con = DriverManager.getConnection(theurl, username, password);
String sql = "insert into user(userId,username,password) values ("
+ user.getUserId() + ","
+ "'" + user.getUsername() + "'" + ","
+ "'" + user.getPassword() + "'"
+ ")";
stmt = con.createStatement();
stmt.execute(sql);
}
catch (Exception sqlex1) {
sqlex1.printStackTrace();
}
finally {
if (con != null){
try {
con.close();
}
catch (SQLException sqlex2){
sqlex2.printStackTrace();
}
}
}
}
}
- dao--2.dao模式
- DAO模式
- DAO模式
- DAO模式
- DAO模式
- Dao模式
- DAO模式
- dao模式
- DAO模式
- DAO模式
- DAO模式
- DAO模式
- DAO模式
- DAO模式
- DAO模式
- DAO模式
- DAO模式
- dao模式
- Skype For Peace - 免费为全球年轻人打造更好的教育机会和就业前景
- c++中tr1::bind和tr1::function讲解
- C语言中输入输出格式控制
- 【第9天】道歉不仅仅是认错
- SQL执行计划查看
- DAO模式
- 配置hadoop 使用fair scheduler调度器
- 动态内存分配
- 工具条加载图标不显示问题
- php5.3终于支持require_once("/classes/class.php");了
- 冒泡排序
- 爱是永久相思情
- ecshop实现鼠标滑过小图切换大图功能
- 感谢贺老师出题 输入一个数,倒序输出