1. 程式人生 > >Dao設計模式java

Dao設計模式java

Data Access object

我們要在資料庫中加入一種訪問更為方便的物件,它有訪問資料庫的各種方法,它是一個介面 宣告規則

準備

將架包拷入專案下新建的lib資料夾中 並匯入
將我們寫好的工具類加入src下的包中
將我們的properties檔案放入專案下或者src下

編寫

第一步:建立dao
如果我要編寫一個操縱一個表,那麼我就用這個表名力命名一個Dao介面 比如:studentDao

public interface StudentDao{
}

第二步:編寫Dao
我們將需要操縱表的方法都寫在介面中,宣告訪問規則

void findAll();  
//這裡可多寫幾個方法

第三步:編寫體格實現Dao的類
也就是編寫方法

我們最後用的時候是會很方便的。

全程式碼小例
Dao

public interface UserDao {
	/**
	 * 根據id去更新具體的使用者名稱
	 * @param id
	 * @param name
	 */
	void update(int id , String name);
	
	void delete(int id);
	/**
	 * 執行新增
	 * @param userName
	 * @param password
	 */
void insert(String userName , String password); /** * 查詢所有 */ void findAll(); /** * 登入方法 * @param username * @param password */ void login(String username , String password); }
public class UserDaoImpl implements UserDao{

	@Override
	public void findAll() {
		Connection conn = null;
Statement st = null; ResultSet rs = null; try { conn = JDBCUtil.getConn(); st = conn.createStatement(); String sql = "select * from t_user"; rs = st.executeQuery(sql); 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, st, rs); } } @Override public void login(String username, String password) { Connection conn = null; Statement st = null; ResultSet rs = null; try { //1. 獲取連線物件 conn = JDBCUtil.getConn(); //2. 建立statement物件 String sql = "select * from t_user where username=? and password=?"; //預先對sql語句執行語法的校驗,? 對應的內容,後面不管傳遞什麼進來,都把它看成是字串。 PreparedStatement ps = conn.prepareStatement(sql); //? 對應的索引從 1 開始。 ps.setString(1, username); ps.setString(2, password); rs = ps.executeQuery(); if(rs.next()){ System.out.println("登入成功"); }else{ System.out.println("登入失敗"); } } catch (Exception e) { e.printStackTrace(); }finally { JDBCUtil.release(conn, st, rs); } } @Override public void insert(String userName, String password) { Connection conn = null; PreparedStatement ps = null; try { conn = JDBCUtil.getConn(); String sql = "insert into t_user values(null , ? , ?)"; ps = conn.prepareStatement(sql); //給佔位符賦值 從左到右數過來,1 代表第一個問號。 ps.setString(1, userName); ps.setString(2, password); int result = ps.executeUpdate(); if(result>0){ System.out.println("新增成功"); }else{ System.out.println("新增失敗"); } } catch (SQLException e) { e.printStackTrace(); }finally{ JDBCUtil.release(conn, ps); } } @Override public void delete(int id) { Connection conn = null; PreparedStatement ps = null; try { conn = JDBCUtil.getConn(); String sql = "delete from t_user where id = ?"; ps = conn.prepareStatement(sql); //給佔位符賦值 從左到右數過來,1 代表第一個問號, 永遠你是1開始。 ps.setInt(1, id); int result = ps.executeUpdate(); if(result>0){ System.out.println("刪除成功"); }else{ System.out.println("刪除失敗"); } } catch (SQLException e) { e.printStackTrace(); }finally{ JDBCUtil.release(conn, ps); } } @Override public void update(int id, String name) { Connection conn = null; PreparedStatement ps = null; try { conn = JDBCUtil.getConn(); String sql = "update t_user set username=? where id =?"; ps = conn.prepareStatement(sql); //給佔位符賦值 從左到右數過來,1 代表第一個問號, 永遠你是1開始。 ps.setString(1, name); ps.setInt(2, id); int result = ps.executeUpdate(); if(result>0){ System.out.println("更新成功"); }else{ System.out.println("更新失敗"); } } catch (SQLException e) { e.printStackTrace(); }finally{ JDBCUtil.release(conn, ps); } } }