JavaWeb最全JDBC连接mysql实现增删改查功能代码示例

JavaWeb最全JDBC实现增删改查——重构(一)

JavaWeb最全JDBC实现(CRUD)增删改查——重构,之所以用重构其实就是对重复使用的代码抽取为相关工具类和方法实现复用,也是高内聚低耦合的思想,这也使得代码更好维护和增加可读性。
包与类关系图
在这里插入图片描述

目录结构图
在这里插入图片描述

需要jar包都在下面,
如果你的数据库版本是5的话就用mysql5的jar,如果是8.0的话就用对应版本jar
在这里插入图片描述
在这里插入图片描述
关注微信关注公众号"一颗剽悍的种子"回复:“编程资源”——会有百度云链接提供下载,几个m大小下载非常快哦φ(* ̄0 ̄)

记得要建一个resource包放数据库资源文件的配置db.properties
在这里插入图片描述
配置db.properties这里要注意啦

  1. 第一个driverClassName的com.mysql.cj.jdbc.Driver里面有还有一个cj看到了吗,
    这个是连接8.0数据库的驱动的,如果是5.0的com.mysql.jdbc.Driver直接这样就好了。
  2. url连接的是mysql数据库和mysql的端口一般是3306后面是连接你mysql的库
  3. username和password要用自己连接数据库库的名和密码。

在这里插入图片描述

代码示例:

pojo包里的User实体类

package pojo;
import java.util.Date;
public class User {
    private int id;
    private String username;
    private String password;
    private Date newdate;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Date getNewdate() {
        return newdate;
    }

    public void setNewdate(Date newdate) {
        this.newdate = newdate;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", newdate=" + newdate +
                '}';
    }
}

dao包里的UserDao接口

package dao;
import pojo.User;
import java.util.Date;
import java.util.List;
public interface UserDao {
    //添加用户
    int addUser (String username,String password,Date newdate);
    //根据id用户
    int deleteUser (int id);
    //根据id修改用户
    int updateUser (String username,String password,int id);
    //根据id查找用户
    User queryUser (int id);
    //查询所有用户
    List<User> queryAllUser();
}

dao包UserDaoImpl类继承UserDao接口

package dao.impl;
import dao.UserDao;
import pojo.User;
import util.CrudUtil;
import java.util.Date;
import java.util.List;

public class UserDaoImpl implements UserDao{
    @Override
    public int addUser(String username,String password,Date newdate) {
        String sql = "insert into user(username,password,newdate) value(?,?,?)";
        return CrudUtil.executeDML(sql,username,password,newdate);
    }

    @Override
    public int deleteUser(int id) {
        String sql = "delete from user where id = ?";
        return CrudUtil.executeDML(sql,id);
    }

    @Override
    public int updateUser(String username,String password,int id) {
        //update多个参数用逗号隔开而不是用and
        String sql = "update user set username = ? , password = ? where id = ?";
        return CrudUtil.executeDML(sql,username,password,id);
    }

    @Override
    public User queryUser(int id) {
        String sql = "select * from user where = ?";
        List<User> list = CrudUtil.executeDQL(sql,id);
        return list.size() != 1 ? null : list.get(0);
    }

    @Override
    public List<User> queryAllUser() {
        String sql = "select * from user";
        return CrudUtil.executeDQL(sql);

    }


}


util包JdbcUtil类

package util;
import org.apache.commons.dbcp.BasicDataSourceFactory;
import javax.sql.DataSource;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class JdbcUtil {
    private static DataSource ds = null;

    static {
        try {
            //1.加载配置文件
            Properties p = new Properties();
            //这里我把properties文件放在resource里
            FileInputStream in = new FileInputStream("resource/db.properties");
            p.load(in);
		//这里我用的是DBCP,如果你想换成Druid的也可以,
		//换一下注释就好了
		//但是要注意导包
		//ds = DruidDataSourceFactory.createDataSource(p);
            ds = BasicDataSourceFactory.createDataSource(p);
        }catch(Exception e) {
            e.printStackTrace();
        }
    }
    public static Connection getConn() {
        try {
            //2.连接数据库
            return ds.getConnection();
        }catch(Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    //3.关闭资源
    public static void close(Connection conn,Statement st,ResultSet rs) {
        if(rs != null) {
            try {
                rs.close();
            }catch(SQLException e) {
                e.printStackTrace();
            }
        }
        if(st != null) {
            try {
                st.close();
            }catch(SQLException e) {
                e.printStackTrace();
            }
        }
        if(conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

util包CrudUtil类

package util;
import pojo.User;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

public class CrudUtil {
    private static Connection conn = JdbcUtil.getConn();
    private static PreparedStatement ps = null;

    public static int executeDML(String sql,Object...Params){
        try {
            //1.加载驱动
            //2.连接数据库
            //3.创建语句
            ps = conn.prepareStatement(sql);
            for(int i = 0;i<Params.length;i++) {
                ps.setObject(i+1,Params[i]);
            }
            // 4.执行语句
            return ps.executeUpdate();
        }catch (Exception e) {
            e.printStackTrace();
        }finally {
            //5.释放资源
            JdbcUtil.close(conn,ps,null);
        }
        return 1;
    }
    public static List<User> executeDQL(String sql,Object...Params){
        ResultSet rs = null;
        List list = new ArrayList<User>();
        try {
            // 1.加载驱动
            // 2.连接数据库
            ps = conn.prepareStatement(sql);
            for(int i = 0; i < Params.length;i++) {
                ps.setObject(i + 1, Params[i]);
            }
            // 4.执行语句
            rs = ps.executeQuery();
            while(rs.next()) {
                User user = new User();
                user.setUsername(rs.getString("username"));
                user.setPassword(rs.getString("password"));
                user.setNewdate(rs.getDate("newdate"));
                list.add(user);
            }
        }catch(Exception e) {
            e.printStackTrace();
        }finally {
            //5.释放资源
            JdbcUtil.close(conn, ps, rs);
        }
        return list;
    }
}

JDBC增删改查运行效果图:

我这里用的是@Test是junit4的单元测试(要用junt4的话直接敲入@Test导入包就好了,在eclipse还是在IDEA都一样),这里用junit只不过更好的对每一个模块进行测试而已,当然你也可以在main来运行看效果。
添加操作
在这里插入图片描述
删除操作
在这里插入图片描述
修改操作
在这里插入图片描述
根据id查找操作
在这里插入图片描述
查询所有用户操作在这里插入图片描述
如果以上还有不懂的话,可以关注微信关注公众号"一颗剽悍的种子"里面加杨shu提问或探讨关于编程技术,一起学习,如果顺便帮到了你,那我也是会很开心的,哈哈哈…
在这里插入图片描述

发布了2 篇原创文章 · 获赞 4 · 访问量 582

猜你喜欢

转载自blog.csdn.net/A_hxy/article/details/105737392