JDBC结合DAO模式的简单实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kuangdacaikuang/article/details/82945292

JDBC结合DAO模式的简单实现

1. 配置文件

jdbc.properties

在这里插入图片描述

2. 与MySQL服务器连接的封装

JDBCUtil

package zhouyu05;

import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

public class JDBCUtil {
	
	static String driverString = null;
	static String urlString = null;
	static String user = null;
	static String password = null;
	
	//读取配置文件
	static {
		try {
			Properties prop = new Properties();
			//创建在src文件下
			InputStream inputStream = JDBCUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");
			prop.load(inputStream);
			driverString = prop.getProperty("driverString");
			urlString = prop.getProperty("urlString");
			user = prop.getProperty("user");
			password = prop.getProperty("password");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public static Connection getConn(String databaseName) {
		Connection conn = null;
		try {
			//1. 注册驱动--可以省略
			//静态代码块,类似类加载,一上来就执行
			//DriverManager.registerDriver(new com.mysql.jdbc.Driver());
			//可以省略,文档有解释,调用getConnection时系统会处理
			//Class.forName(driverString);
			//2. 建立连接
			String url = urlString +databaseName;
			conn = DriverManager.getConnection(url,user,password);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return conn;
	}
	
	public static void release(ResultSet rs, Statement st, Connection conn) {
		closeRs(rs);
		closeSt(st);
		closeConn(conn);
	}
	
	private static void closeRs(ResultSet rs) {
		try {
			if (rs != null) {
				rs.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			rs = null;
		}
	}
	
	private static void closeSt(Statement st) {
		try {
			if (st != null) {
				st.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			st = null;
		}
	}
	
	private static void closeConn(Connection conn) {
		try {
			if (conn != null) {
				conn.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			conn = null;
		}
	}
}

在这里插入图片描述

3. 声明interface

在这里插入图片描述

4. 实现implements

在这里插入图片描述

package zhouyu05;

import zhouyu05.JDBCUtil;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;

public class UserDaoImpl implements UserDao {
	@Override
	public void findAll() {
	
	}
	
	@Override
	public void login(String username, String password) {
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		try {
			conn = zhouyu05.JDBCUtil.getConn("zhouyu05");
			//3. 创建statement,和数据库打交道
			String sql = "select *from t_user where username=? and password=?";
			ps = conn.prepareStatement(sql);
			ps.setString(1, username);
			ps.setString(2,password);
			rs = ps.executeQuery();
			//6. 遍历查询结果
			while (rs.next()) {
				String name = rs.getString("username");
				String word = rs.getString("password");
				System.out.println(name +"---" + word);
			}
		} catch (Exception execption) {
			execption.printStackTrace();
		} finally {
			JDBCUtil.release(rs,ps,conn);
		}
	}
	
	@Override
	public void insert(String username, String password) {
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		try {
			conn = zhouyu05.JDBCUtil.getConn("zhouyu05");
			//3. 创建statement,和数据库打交道
			String sql = "insert into t_user values(null,?,?);";
			ps = conn.prepareStatement(sql);
			ps.setString(1, username);
			ps.setString(2,password);
			int result = ps.executeUpdate();
			if (result > 0) {
				System.out.println("插入成功");
			} else {
				System.out.println("插入失败");
			}
		} catch (Exception execption) {
			execption.printStackTrace();
		} finally {
			JDBCUtil.release(rs,ps,conn);
		}
	}
	
	@Override
	public void delete(int id) {
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		try {
			conn = zhouyu05.JDBCUtil.getConn("zhouyu05");
			//3. 创建statement,和数据库打交道
			String sql = "delete from t_user where id = ?";
			ps = conn.prepareStatement(sql);
			ps.setInt(1, id);
			int result = ps.executeUpdate();
			if (result > 0) {
				System.out.println("删除成功");
			} else {
				System.out.println("删除失败");
			}
		} catch (Exception execption) {
			execption.printStackTrace();
		} finally {
			JDBCUtil.release(rs,ps,conn);
		}
	}
	
	@Override
	public void update(int id, String name) {
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		try {
			conn = zhouyu05.JDBCUtil.getConn("zhouyu05");
			//3. 创建statement,和数据库打交道
			String sql = "update t_user set username = ? where id = ?";
			ps = conn.prepareStatement(sql);
			ps.setString(1, name);
			ps.setInt(2, id);
			int result = ps.executeUpdate();
			if (result > 0) {
				System.out.println("更新成功");
			} else {
				System.out.println("更新失败");
			}
		} catch (Exception execption) {
			execption.printStackTrace();
		} finally {
			JDBCUtil.release(rs,ps,conn);
		}
	}
}

5. 测试Test

在这里插入图片描述

package zhouyu05;

import org.junit.Test;

public class TestUserDaoImpl {
	
	@Test
	public void testFindAll() {
		UserDao dao = new UserDaoImpl();
		dao.findAll();
	}
	
	@Test
	public void testLogin() {
		UserDao dao = new UserDaoImpl();
		dao.login("admin","13838338888");
	}
	
	@Test
	public void testInsert() {
		UserDao dao = new UserDaoImpl();
		dao.insert("zhouyu","15718804712");
	}
	
	@Test
	public void testDelete() {
		UserDao dao = new UserDaoImpl();
		dao.delete(3);
	}
	
	@Test
	public void testUpdate() {
		UserDao dao = new UserDaoImpl();
		dao.update(2,"wangwu");
	}
}

猜你喜欢

转载自blog.csdn.net/kuangdacaikuang/article/details/82945292