JDBC----Dao模式(一)
阿新 • • 發佈:2018-11-27
Dao模式:
1. 新建一個dao的介面, 裡面宣告資料庫訪問規則.
2. 新建一個dao的實現類,具體實現早前定義的規則.
3. 直接使用實現.
程式碼如下:
UserDao:
package com.test.dao; /** * 定義操作資料庫的方法 * <p>Title: UserDao</p> * <p>Description: </p> * <p>Company: www.itcast.cn</p> * @version 1.0 */ public interface UserDao { //查詢 void findAll(); }
UserDaoImpl:
package com.test.dao.impl; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import com.test.dao.UserDao; import com.test.util.JDBCUtil; public class UserDaoImpl implements UserDao { /** * 查詢 * <p>Title: findAll</p> * <p>Description: </p> * @see com.test.dao.UserDao#findAll() */ Connection connection = null; Statement statement = null; ResultSet resultSet = null; @Override public void findAll() { try { connection = JDBCUtil.getConn(); statement = connection.createStatement(); String sql ="select * from user"; resultSet = statement.executeQuery(sql); while(resultSet.next()){ String username = resultSet.getString("username"); String password = resultSet.getString("password"); System.out.println("username="+username+",password="+password); } } catch (Exception e) { // TODO: handle exception }finally{ JDBCUtil.close(connection, resultSet, statement); } } }
JunitTest:
package com.test.example;
import org.junit.Test;
import com.test.dao.UserDao;
import com.test.dao.impl.UserDaoImpl;
public class JunitTest {
//查詢
@Test
public void testFindAll(){
UserDao dao = new UserDaoImpl();
dao.findAll();
}
}
JDBCUtil:
package com.test.util; import java.io.FileInputStream; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; public class JDBCUtil { static String driverClass = null; static String url = null; static String name = null; static String password = null; //讀取jdbc.properties static{ try { //1.建立一個屬性配置物件 Properties properties = new Properties(); //1.對應檔案位於工程根目錄 //InputStream is = new FileInputStream("jdbc.properties"); //2.使用類載入器,讀取drc下的資原始檔 對應檔案位於src目錄底下 建議使用 InputStream is = JDBCUtil.class.getClassLoader().getResourceAsStream("jdbc.properties"); //2.匯入輸入流,抓取異常 properties.load(is); //3.讀取屬性 driverClass = properties.getProperty("driverClass"); url = properties.getProperty("url"); name = properties.getProperty("name"); password = properties.getProperty("password"); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } /** * 註冊驅動 建立引數 * <p>Title: close</p> * <p>Description: </p> * @param connection * @param resultSet * @param statement */ public static Connection getConn(){ Connection connection = null; //2. 建立連線 引數一: 協議 + 訪問的資料庫 , 引數二: 使用者名稱 , 引數三: 密碼。 try { //Class.forName(driverClass);可寫可不寫 //Class.forName(driverClass); connection = DriverManager.getConnection(url, name, password); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return connection; } /** * 釋放資源 * <p>Title: close</p> * <p>Description: </p> * @param connection * @param resultSet * @param statement */ public static void close(Connection connection,ResultSet resultSet,Statement statement){ closeRS(resultSet); closeSt(statement); closeConn(connection); } public static void close(Connection connection,Statement statement){ closeSt(statement); closeConn(connection); } private static void closeRS(ResultSet resultSet){ try { if(resultSet !=null){ resultSet.close(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { resultSet = null; } } private static void closeSt(Statement statement){ try { if(statement !=null){ statement.close(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { statement = null; } } private static void closeConn(Connection connection){ try { if(connection !=null){ connection.close(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { connection = null; } } }
jdbc.properties:
driverClass=com.mysql.jdbc.Driver
url = jdbc:mysql://localhost/jdbc
name = root
password = root
資料庫:
執行結果: