jdbc封装模拟用户登录
Posted 芯-觞
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jdbc封装模拟用户登录相关的知识,希望对你有一定的参考价值。
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("对不起,账号或密码错误"); } } }
以上是关于jdbc封装模拟用户登录的主要内容,如果未能解决你的问题,请参考以下文章
VSCode自定义代码片段14——Vue的axios网络请求封装
VSCode自定义代码片段14——Vue的axios网络请求封装