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封装模拟用户登录的主要内容,如果未能解决你的问题,请参考以下文章

WindowsGUI自动化测试框架搭建-登录模块封装

VSCode自定义代码片段14——Vue的axios网络请求封装

VSCode自定义代码片段14——Vue的axios网络请求封装

VSCode自定义代码片段14——Vue的axios网络请求封装

JDBC工具类连接数据库,模仿登录

cgb2111-day06