创建Dao接口,用impl类实现对数据的增删改查

大家在JAVA的学习过程中都知道DAO是一个为数据库或其他持久化机制提供了抽象接口的对象,在不暴露数据库实现细节的前提下提供了各种数据操作,然后在impl类中实现对DAO的具体操作。

放一个经典的DAO练习:

实现对一个用户表的数据进行增删改查以及分页功能

user类:

public class User {
		private String username;
		public String getUsername() {
			return username;
		}
		public void setUsername(String username) {
			this.username = username;
		}
		public String getPassword() {
			return password;
		}
		public void setPassword(String password) {
			this.password = password;
		}
		public String getPhone() {
			return phone;
		}
		public void setPhone(String phone) {
			this.phone = phone;
		}
		private String password;
		private String phone;
		
}

UserDao类:

import java.util.List;

public interface UserDao {
/**
 * 增删改查方法
 */
	public void register(String username,String password,String phone);
	public void delete(String username); 
	public void update(String username,String password,String phone); 
	public List<User> ChaKan(String username); 
	public List<User> FenYe(int star,int end);
}
UserDaoImpl类:

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class UserDaoImpl implements UserDao {
		Connection conn=null;
		PreparedStatement ps=null;
	@Override
	/**
	 * 删除方法
	 */
	public void delete(String username) {
		// TODO Auto-generated method stub
		JdbcUtils.forName();
		conn =JdbcUtils.getConn();
		String sql="DELETE FROM USER WHERE USERNAME=?";
		try {
			ps=conn.prepareStatement(sql);
			ps.setString(1,username);
			ps.executeUpdate();
			JdbcUtils.close(ps, conn);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	@Override
	/**
	 * 更新方法
	 */
	public void update(String password, String phone,String username) {
		// TODO Auto-generated method stub
		JdbcUtils.forName();
		conn =JdbcUtils.getConn();
		String sql="UPDATE USER SET PASSWORD=?,PHONE=? WHERE USERNAME=?";
		try {
			ps=conn.prepareStatement(sql);
			ps.setString(1,password);
			ps.setString(2, phone);
			ps.setString(3, username);
			ps.executeUpdate();
			JdbcUtils.close(ps, conn);	
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}		
	}
	@Override
	/**
	 * 查询方法
	 * return list
	 */
	public List<User> ChaKan(String username) {
		// TODO Auto-generated method stub
		JdbcUtils.forName();
		conn =JdbcUtils.getConn();
		List<User> list=new ArrayList<>();
		
		String sql="SELECT *FROM USER WHERE USERNAME=?";
		try {
			User ur=new User();
			ps=conn.prepareStatement(sql);
			ps.setString(1,username);
//			ps.setString(2, phone);
//			ps.setString(3, username);
			ResultSet rs=ps.executeQuery();
			while(rs.next()){
				ur.setUsername(rs.getString(1));
				ur.setPhone(rs.getString(2));
				ur.setPassword(rs.getString(3));
				list.add(ur);
			}
			JdbcUtils.close(ps, conn);
		} catch (SQLException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return list;
	}
	@Override
	/**
	 * 分页功能
	 */
	public List<User> FenYe(int star,int end) {
		// TODO Auto-generated method stub
		JdbcUtils.forName();
		conn =JdbcUtils.getConn();
		List<User> list=new ArrayList<>();
		
		String sql="SELECT *FROM USER limit ?,?";
		try {
			ps=conn.prepareStatement(sql);
			ps.setInt(1, star);
			ps.setInt(2,end );
			ResultSet rs=ps.executeQuery();
			while(rs.next()){
				User ur=new User();
				ur.setUsername(rs.getString(1));
				ur.setPhone(rs.getString(3));
				ur.setPassword(rs.getString(2));
				list.add(ur);
			}
			JdbcUtils.close(ps, conn);
		} catch (SQLException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return list;
	}
	@Override
	public void register(String username, String password, String phone) {
		// TODO Auto-generated method stub
		JdbcUtils.forName();
		conn =JdbcUtils.getConn();
		String sql="INSERT INTO USER VALUES(?,?,?)";
		try {
			ps=conn.prepareStatement(sql);
			ps.setString(1,username);
			ps.setString(2,password);
			ps.setString(3, phone);
			ps.executeUpdate();
			JdbcUtils.close(ps, conn);		
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
测试类:

import java.util.List;

public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		UserDao ur=new UserDaoImpl();
//		ur.register("管理员D", "12345678", "10086");//注册功能测试完成
//		ur.delete("管理员A");//删除功能测试完成
//		ur.update("0000", "121313131","管理员B");//删除功能测试完成
				//查询功能测试完成
//		List<User> list=ur.ChaKan("管理员B");
//		for(User s:list){
//			System.out.print(s.getUsername()+" ");
//			System.out.print(s.getPassword()+" ");
//			System.out.print(s.getPhone()+" ");
//			System.out.println();
//		}
//		分页功能测试完成
		List<User> list=ur.FenYe(0, 3);	
		for(User l:list){
			System.out.print(l.getUsername()+" ");
			System.out.print(l.getPassword()+" ");
			System.out.print(l.getPhone()+" ");
			System.out.println();
		}
		System.out.println("success");
	}

}

直接用的话缺少一个JdbcUtils类,里面封装了加载数据库驱动和连接以及关闭数据库的方法。

运行效果截图:

分页功能:

在这里插入图片描述
查询功能:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值