Data Access Object 数据访问对象
步骤:
1.新建一个dao的接口, 里面声明数据库访问规则
2.新建一个dao的实现类,具体实现早前定义的规则
3.直接使用实现
实现代码:
1.新建一个dao的接口, 里面声明数据库访问规则
UserDao.java
package com.itheima.dao; /** * 定义操作数据库的方法 */ public interface UserDao { /** * 查询所有 */ void findAll(); }2.新建一个dao的实现类,具体实现早前定义的规则
UserDaoImp.java
package com.itheima.implement; import java.sql.Connection; import java.sql.ResultSet; import java.sql.PreparedStatement; import com.itheima.dao.UserDao; import com.itheima.util.JDBCUtil; public class UserDaoImpl implements UserDao{ @Override public void findAll() { Connection conn = null; PreparedStatement st = null; ResultSet rs = null; try { //1. 获取连接对象 conn = JDBCUtil.getConn(); //2. 创建PreparedStatement对象 String sql = "select * from t_user"; ps =conn.prepareStatement(sql); rs = ps.executeQuery(); while(rs.next()){ String userName = rs.getString("username"); String password = rs.getString("password"); System.out.println(userName+"="+password); } } catch (Exception e) { e.printStackTrace(); }finally { JDBCUtil.release(conn, ps, rs); } } }3.直接使用实现
TestUserDaoImp.java
package com.itheima.test; import org.junit.Test; import com.itheima.dao.UserDao; import com.itheima.implement.UserDaoImp; public class TestUserDaoImp { /* * public static void main(String[] args) { UserDao dao = new UserDaoImp(); * dao.query(); } */ //使用junit单元测试 @Test public void testQuery() { UserDao dao = new UserDaoImp(); dao.query(); } }JDBCUtil.java
package com.itheima.util; import java.io.FileInputStream; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.Properties; public class JDBCUtil { static String driverClass = null; static String url = null; static String name = null; static String password = null; static { try { // 1.创建一个属性配置对象 Properties properties = new Properties(); //将jdbc.properties InputStream is = new FileInputStream("jdbc.properties"); /*将jdbc.properties文件放到src文件夹下用此方法 * 使用类加载器,去读取src底下的资源文件 InputStream is = JDBCUtil.class.getClassLoader().getResourceAsStream("jdbc.properties"); */ // 导入输入流 properties.load(is); // 读取属性 driverClass = properties.getProperty("driverClass"); url = properties.getProperty("url"); name = properties.getProperty("name"); password = properties.getProperty("password"); } catch (Exception e) { e.printStackTrace(); } } /** * 获取连接对象 * * @return */ public static Connection getConn() { Connection conn = null; try { // 1.注册驱动 Class.forName(driverClass); // 2.建立连接 conn = DriverManager.getConnection(url, name, password); } catch (Exception e) { e.printStackTrace(); } return conn; } /** * 释放资源 * * @param conn * @param ps * @param rs */ public static void release(Connection conn, PreparedStatement ps, ResultSet rs) { closeRs(rs); closePs(ps); 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 closePs(PreparedStatement ps) { try { if (ps != null) { ps.close(); } } catch (SQLException e) { e.printStackTrace(); } finally { ps = null; } } private static void closeConn(Connection conn) { try { if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } finally { conn = null; } } }jdbc.properties
driverClass = com.mysql.jdbc.Driver url = jdbc:mysql://localhost/user name = root password = 123456