JDBC中的Dao设计模式

今天也是我第一次写博客,想想还是有些小激动的,但是文中可能有些不足,请指出。

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设计模式。




 


 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值