您的位置:首页 > 其它

JDBC中的Dao设计模式

2015-09-17 10:19 507 查看
今天也是我第一次写博客,想想还是有些小激动的,但是文中可能有些不足,请指出。Dao设计模式的全称是data access object,DAO模式通过对业务层提供数据抽象层接口。DAO的好处就是提供给用户的接口只有DAO的接口,所以如果用户想添加数据,只需要调用create函数即可,不需要数据库的操作,这样减少了对数据库操作代码,使代码不那么混乱。废话不多说了,直接上代码。
<span style="font-size:18px;">//User对象类
public class User {
private int id;
private Date birthday;
private String name;
private float momeny;
public float getMomeny() {
return momeny;
}
public void setMomeny(float momeny) {
this.momeny = momeny;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}

}</span>
<pre name="code" class="java"><span style="font-size:18px;">//UserDao接口
public interface UserDao {
/**
* 添加用户信息
* @param user
* @return
*/
public int addUser(User user);
/**
* 删除用户信息
* @param user
* @return
*/
public int deleteUser(User user);
/**
* 根据用户Id查询用户信息
* @param id
* @return
*/
public User queryUserById(int id);
public List<User> queryUserForList(String name);

/**
* 根据Id来更新用户信息
* @param newInfo
* @param id
* @return
*/
public int updateUser(User newInfo,int id);
}</span>
<span style="font-size:18px;">/**
* Connection连接类,创建和销毁
* @author Smile
*
*/
public final class ConnCreate {
static{
try {
Class.forName("com.mysql.jdbc.Driver");

} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
/**
* 连接类
* @param url 数据库的url
* @param user  数据库的用户名
* @param pwd   数据库的密码
* @return
*/
public static Connection getConnection(String url,String user,String pwd){
Connection conn=null;
try {
conn=DriverManager.getConnection(url,user,pwd);

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;

}
/**
* 释放资源
* @param conn
* @param stmt
* @param rs
* @throws SQLException
*/
public static void close(Connection conn,PreparedStatement stmt,ResultSet rs)throws SQLException{
if(conn!=null){
conn.close();
}
if(stmt!=null){
stmt.close();
}
if(rs!=null){
rs.close();
}
}
}</span>
<span style="font-size:18px;">public class UserDaoImpl implements UserDao {
private Connection conn=null;
public UserDaoImpl(Connection conn){
this.conn = conn;
}

@Override
public int addUser(User user) {
PreparedStatement stmt=null;
int result=0;

try {
String sql="insert into user_tb(id,name,birthday,momeny)values(?,?,?,?)";
stmt=conn.prepareStatement(sql);
stmt.setInt(1, user.getId());
stmt.setString(2, user.getName());
stmt.setDate(3, user.getBirthday());
stmt.setFloat(4, user.getMomeny());
result=stmt.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
ConnCreate.close(null, stmt, null);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

return result;
}

@Override
public int deleteUser(User user) {
PreparedStatement stmt=null;
int result=0;

try {
String sql="delete from user_tb where id=?";
stmt=conn.prepareStatement(sql);
stmt.setInt(1, user.getId());
result=stmt.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
ConnCreate.close(null, stmt, null);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

return result;
}

@Override
public User queryUserById(int id) {
PreparedStatement stmt=null;
ResultSet rs=null;
User user=null;
String sql="slect *from user_db where id=?";
try {
stmt=conn.prepareStatement(sql);
stmt.setInt(1, id);
rs=stmt.executeQuery();
if(rs.next()){
user=new User();
user.setId(rs.getInt(1));
user.setName(rs.getString(2));
user.setBirthday(rs.getDate(3));
user.setMomeny(rs.getFloat(4));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
try {
ConnCreate.close(null, stmt, rs);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return user;
}

@Override
public List<User> queryUserForList(String name) {
// TODO Auto-generated method stub
return null;
}

@Override
public int updateUser(User newInfo, int id) {
PreparedStatement stmt=null;
int result=0;

try {
String sql="update user_db set moeny=?where id=?";
stmt=conn.prepareStatement(sql);
stmt.setFloat(1, newInfo.getMomeny());
stmt.setInt(2, id);
result=stmt.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return 0;
}

}</span>
<span style="font-size:18px;">/**
* 测试类
* @author Smile
*
*/
public class UserDaoTest {

public static void main(String[] args) {
addUser();
}

public static  void addUser(){
Connection conn=ConnCreate.getConnection("jdbc:mysql://localhost:3306/user", "root", "8080");
UserDao dao = new UserDaoImpl(conn);
User user=new User();
user.setId(1);
user.setName("张三");
user.setBirthday(null);
user.setMomeny(2443);
int result=dao.addUser(user);
System.out.println("信息录入"+(result>0?"成功":"失败"));
}
}</span>
以上就是一个简单的Dao设计模式。

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: