dao層 接口 package com.qu.dao; public interface ILoginDAO { /** * 模擬用戶登陸 * 驗證用戶名 密碼是否正確 * select * from from login where username=? and password=? */ boolean isLogin(String username,String password); }
dao層 實現類 package com.qu.dao.impl; import com.qu.dao.ILoginDAO; import com.qu.util.DButil; import sun.security.pkcs11.Secmod; import java.util.List; import java.util.Map; public class LoginDAOImpl implements ILoginDAO{ @Override public boolean isLogin(String username, String password) { String sql="select * from login where username=? and password=?"; List<Map<String, Object>> list = DButil.executeQuery(sql, username, password); return list.size()>0; } }
工具類 package com.qu.util; import com.sun.xml.internal.ws.api.ha.StickyFeature; import java.sql.*; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class DButil { static{ try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } } /** * 得到鏈接 */ public static Connection getConnection(){ try { return DriverManager.getConnection("jdbc:mysql://localhost:3306/user?characterEncoding","root","root"); } catch (SQLException e) { e.printStackTrace(); } return null; } /** * 增刪改的通用工具類 * @param sql * @param args * @return */ public static boolean executeUpdate(String sql,Object... args){ Connection conn=null; PreparedStatement ps=null; try { conn = getConnection(); ps = conn.prepareStatement(sql); for (int i=0;i<args.length;i++){ ps.setObject(i+1,args[i]); } int i = ps.executeUpdate(); return i>0; } catch (SQLException e) { e.printStackTrace(); } finally { close(conn,ps,null); } return false; } /** * 查詢通用工具類 * @param sql * @param args * @return */ public static List<Map<String,Object>> executeQuery(String sql,Object... args){ Connection conn=null; ResultSet rs=null; PreparedStatement ps=null; try { conn = DButil.getConnection(); ps = conn.prepareStatement(sql); /** * 有參數 */ for (int i=0;i<args.length;i++){ ps.setObject(i+1,args[i]); } /* 執行*/ rs = ps.executeQuery(); /* 須要將全部數據都存放到List 中 每一行 用一個map存放*/ List<Map<String,Object>> list=new ArrayList<>(); /* 獲取全部列數*/ int count = ps.getMetaData().getColumnCount(); while(rs.next()){ Map<String,Object> map=new HashMap<>(); //一行一個map接收 for (int i=1;i<=count;i++){ String name = rs.getMetaData().getColumnLabel(i); map.put(name,rs.getObject(1)); } /*將每行的map存放到List中*/ list.add(map); } return list; } catch (SQLException e) { e.printStackTrace(); }finally { close(conn,ps,rs); } return null; } /** * 關閉的通用方法 */ private static void close(Connection conn,PreparedStatement ps,ResultSet rs){ try { if (rs!=null){ rs.close(); } if (ps!=null){ ps.close(); } if(conn!=null) { conn.close(); } }catch(Exception e){ e.printStackTrace(); } } }
servlet 測試類 package com.qu.servlet; import com.qu.dao.ILoginDAO; import com.qu.dao.impl.LoginDAOImpl; import org.junit.Test; public class TestLogin { @Test public void testLogin(){ //模擬帳號登陸 String username="李登"; String password="123"; //驗證用戶名 密碼是否正確 ILoginDAO dao=new LoginDAOImpl(); boolean login = dao.isLogin(username, password); if (login){ System.out.println("恭喜登陸成功"); }else{ System.out.println("對不起,帳號或密碼錯誤"); } } }