android dao设计模式,DAO设计模式

该博客介绍了如何使用Java实现对person表的增删改查操作,包括DAO接口定义、具体实现及DAO工厂类。代码示例中展示了通过PreparedStatement进行SQL操作,并利用DataBaseConnection类连接和关闭数据库。
摘要由CSDN通过智能技术生成

PersonDAO.java

package cn.mldn.lxh.dao ;

import java.util.* ;

import cn.mldn.lxh.vo.* ;

// 规定出了操作person表在此项目里的全部方法

public interface PersonDAO

{

// 增加操作

public void insert(Person person) throws

Exception ;

// 修改操作

public void update(Person person) throws

Exception ;

// 删除操作

public void delete(String id) throws Exception

;

// 按ID查询操作

public Person queryById(String id) throws

Exception ;

// 查询全部

public List queryAll() throws Exception ;

// 模糊查询

public List queryByLike(String cond) throws

Exception ;

}

PersonDAOImpl.java

package cn.mldn.lxh.dao.impl ;

import java.sql.* ;

import java.util.* ;

import cn.mldn.lxh.vo.* ;

import cn.mldn.lxh.dbc.* ;

import cn.mldn.lxh.dao.* ;

// 此类需要完成具体的数据库操作,需要JDB代码

public class PersonDAOImpl implements PersonDAO

{

// 增加操作

public void insert(Person person) throws

Exception

{

String sql = "INSERT INTO

person (id,name,password,age,email) VALUES (?,?,?,?,?)" ;

PreparedStatement pstmt = null

;

DataBaseConnection dbc = null

;

// 下面是针对数据库的具体操作

try

{

//

连接数据库

dbc = new

DataBaseConnection() ;

pstmt =

dbc.getConnection().prepareStatement(sql) ;

pstmt.setString(1,person.getId())

;

pstmt.setString(2,person.getName())

;

pstmt.setString(3,person.getPassword())

;

pstmt.setInt(4,person.getAge())

;

pstmt.setString(5,person.getEmail())

;

//

进行数据库更新操作

pstmt.executeUpdate()

;

pstmt.close()

;

}

catch (Exception e)

{

throw new

Exception("操作出现异常") ;

}

finally

{

//

关闭数据库连接

dbc.close()

;

}

}

// 修改操作

public void update(Person person) throws

Exception

{

String sql = "UPDATE person SET

name=?,password=?,age=?,email=? WHERE id=?" ;

PreparedStatement pstmt = null

;

DataBaseConnection dbc = null

;

// 下面是针对数据库的具体操作

try

{

//

连接数据库

dbc = new

DataBaseConnection() ;

pstmt =

dbc.getConnection().prepareStatement(sql)

; pstmt.setString(1,person.getName())

;

pstmt.setString(2,person.getPassword())

;

pstmt.setInt(3,person.getAge())

;

pstmt.setString(4,person.getEmail())

;

pstmt.setString(5,person.getId())

;

//

进行数据库更新操作

pstmt.executeUpdate()

;

pstmt.close()

;

}

catch (Exception e)

{

throw new

Exception("操作出现异常") ;

}

finally

{

//

关闭数据库连接

dbc.close()

;

}

}

// 删除操作

public void delete(String id) throws

Exception

{

String sql = "DELETE FROM

person WHERE id=?" ;

PreparedStatement pstmt = null

;

DataBaseConnection dbc = null

;

// 下面是针对数据库的具体操作

try

{

//

连接数据库

dbc = new

DataBaseConnection() ;

pstmt =

dbc.getConnection().prepareStatement(sql)

; pstmt.setString(1,id)

;

//

进行数据库更新操作

pstmt.executeUpdate()

;

pstmt.close()

;

}

catch (Exception e)

{

throw new

Exception("操作出现异常") ;

}

finally

{

//

关闭数据库连接

dbc.close()

;

}

}

// 按ID查询操作

public Person queryById(String id) throws

Exception

{

Person person = null ;

String sql = "SELECT

id,name,password,age,email FROM person WHERE id=?" ;

PreparedStatement pstmt = null

;

DataBaseConnection dbc = null

;

// 下面是针对数据库的具体操作

try

{

//

连接数据库

dbc = new

DataBaseConnection() ;

pstmt =

dbc.getConnection().prepareStatement(sql)

; pstmt.setString(1,id)

;

//

进行数据库查询操作

ResultSet rs

= pstmt.executeQuery() ;

if(rs.next())

{

//

查询出内容,之后将查询出的内容赋值给person对象

person

= new Person() ;

person.setId(rs.getString(1))

;

person.setName(rs.getString(2))

;

person.setPassword(rs.getString(3))

;

person.setAge(rs.getInt(4))

;

person.setEmail(rs.getString(5))

;

}

rs.close()

;

pstmt.close()

;

}

catch (Exception e)

{

throw new

Exception("操作出现异常") ;

}

finally

{

//

关闭数据库连接

dbc.close()

;

}

return person ;

}

// 查询全部

public List queryAll() throws Exception

{

List all = new ArrayList()

;

String sql = "SELECT

id,name,password,age,email FROM person" ;

PreparedStatement pstmt = null

;

DataBaseConnection dbc = null

;

// 下面是针对数据库的具体操作

try

{

//

连接数据库

dbc = new

DataBaseConnection() ;

pstmt =

dbc.getConnection().prepareStatement(sql)

; //

进行数据库查询操作

ResultSet rs

= pstmt.executeQuery() ;

while(rs.next())

{

//

查询出内容,之后将查询出的内容赋值给person对象

Person

person = new Person() ;

person.setId(rs.getString(1))

;

person.setName(rs.getString(2))

;

person.setPassword(rs.getString(3))

;

person.setAge(rs.getInt(4))

;

person.setEmail(rs.getString(5))

;

//

将查询出来的数据加入到List对象之中

all.add(person)

;

}

rs.close()

;

pstmt.close()

;

}

catch (Exception e)

{

throw new

Exception("操作出现异常") ;

}

finally

{

//

关闭数据库连接

dbc.close()

;

}

return all ;

}

// 模糊查询

public List queryByLike(String cond) throws

Exception

{

List all = new ArrayList()

;

String sql = "SELECT

id,name,password,age,email FROM person WHERE name LIKE ? or email

LIKE ?" ;

PreparedStatement pstmt = null

;

DataBaseConnection dbc = null

;

// 下面是针对数据库的具体操作

try

{

//

连接数据库

dbc = new

DataBaseConnection() ;

pstmt =

dbc.getConnection().prepareStatement(sql) ; //

设置模糊查询条件

pstmt.setString(1,"%"+cond+"%")

;

pstmt.setString(2,"%"+cond+"%")

;

//

进行数据库查询操作

ResultSet rs

= pstmt.executeQuery() ;

while(rs.next())

{

//

查询出内容,之后将查询出的内容赋值给person对象

Person

person = new Person() ;

person.setId(rs.getString(1))

;

person.setName(rs.getString(2))

;

person.setPassword(rs.getString(3))

;

person.setAge(rs.getInt(4))

;

person.setEmail(rs.getString(5))

;

//

将查询出来的数据加入到List对象之中

all.add(person)

;

}

rs.close()

;

pstmt.close()

;

}

catch (Exception e)

{

throw new

Exception("操作出现异常") ;

}

finally

{

//

关闭数据库连接

dbc.close()

;

}

return all ;

}

};

DAOFactory.java

package cn.mldn.lxh.factory ;

import cn.mldn.lxh.dao.* ;

import cn.mldn.lxh.dao.impl.* ;

public class DAOFactory

{

public static PersonDAO

getPersonDAOInstance()

{

return new PersonDAOImpl()

;

}

};

DataBaseConnection.java

package cn.mldn.lxh.dbc ;

import java.sql.* ;

// 主要功能就是连接数据库、关闭数据库

public class DataBaseConnection

{

private final String DBDRIVER =

"oracle.jdbc.driver.OracleDriver" ;

private final String DBURL =

"jdbc:oracle:thin:@localhost:1521:MLDN" ;

private final String DBUSER = "scott" ;

private final String DBPASSWORD = "tiger" ;

private Connection conn = null ;

public DataBaseConnection()

{

try

{

Class.forName(DBDRIVER)

;

this.conn =

DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD)

; }

catch (Exception e)

{

}

}

// 取得数据库连接

public Connection getConnection()

{

return this.conn ;

}

// 关闭数据库连接

public void close()

{

try

{

this.conn.close()

;

}

catch (Exception e)

{

} }

};

Person.java

package cn.mldn.lxh.vo ;

// 值对象,包含属性,setter,getter方法

public class Person

{

private String id ;

private String name ;

private String password ;

private int age ;

private String email ;

// 生成getter、setter方法

public void setId(String id)

{

this.id = id ;

}

public void setName(String name)

{

this.name = name ;

}

public void setPassword(String password)

{

this.password = password

;

}

public void setAge(int age)

{

this.age = age ;

}

public void setEmail(String email)

{

this.email = email ;

}

public String getId()

{

return this.id ;

}

public String getName()

{

return this.name ;

}

public String getPassword()

{

return this.password ;

}

public int getAge()

{

return this.age ;

}

public String getEmail()

{

return this.email ;

}

};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值