jdbc封装模拟用户登录

时间:2023-03-09 16:22:12
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("对不起,账号或密码错误");
} }
}