JDBC数据库的封装

1. 创建一个新项目

  1. 在IDEA中新建一个Java Web项目
    在这里插入图片描述
  2. 在项目中导入MySQL的jar包
    在这里插入图片描述
  3. 打开数据库,新建一个数据库java7,在数据库中新建一个表tb_user
    在这里插入图片描述
  4. 初始化表
    在这里插入图片描述

2. 编写用户类User

  1. 对用户的属性进行封装
  2. 编写get和set方法
  3. 编写构造方法
  4. toString方法的重写
    其中,get和set方法、构造方法以及toString方法的重写都可以在IDEA中使用Generate自动生成。
// 实体类,映射数据库字段
public class User
{
    // 1. 对属性的封装
    private int id; // 用户ID
    private String username; // 用户名
    private String password; // 用户密码

    // 2. get and set
    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;
    }

    // 3. 构造方法
    public User(int id, String username, String password)
    {
        this.id = id;
        this.username = username;
        this.password = password;
    }

    public User(String username, String password)
    {
        this.username = username;
        this.password = password;
    }

    public User()
    {
    }

    // 4. toString 方法的重写
    @Override
    public String toString()
    {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

3. 编写工具类DBUtil

对JDBC数据库驱动进行封装

public class DBUtil
{
    private static String driver = "com.mysql.jdbc.Driver";
    private static String url = "jdbc:mysql://localhost:3306/java7?useSSL=true&characterEncoding=utf-8";
    private static String user = "root";
    private static String password = "123";

    //1.获取驱动
    static {
        try
        {
            Class.forName(driver);
        } catch (ClassNotFoundException e)
        {
            e.printStackTrace();
        }
    }

    //2.创建连接
    public static Connection get_Conn() throws SQLException
    {
        Connection conn = DriverManager.getConnection(url, user, password);
        System.out.println("数据库连接成功" + conn);
        return conn;
    }

    //3.关闭连接
    public static void get_CloseConn(ResultSet rs, PreparedStatement pstm, Connection conn) throws SQLException
    {
        if(rs != null)
        {
            rs.close();
        }
        if(pstm != null)
        {
            pstm.close();
        }
        if(conn != null)
        {
            conn.close();
        }
    }

    //白盒测试/单元测试
    public static void main(String[] args)
    {
        try
        {
            get_Conn();
        } catch (SQLException e)
        {
            e.printStackTrace();
        }
    }
}

4. 数据库操作的封装

新建一个测试类,对数据库的增删查改操作进行封装,编写相应的方法。

public class TestUser2
{
    Connection conn = null;
    PreparedStatement pstm = null;
    ResultSet rs = null;
    // 增加用户
    public void addUser(User user)
    {
        try
        {
            // 1. 获取连接
            conn = DBUtil.get_Conn();
            // 2. 获取存放sql语句的对象
            pstm = conn.prepareStatement("insert into tb_user(username,password) values(?,?)");
            // 3. 补全信息
            pstm.setString(1, user.getUsername());
            pstm.setString(2, user.getPassword());
            // 4. 执行sql并得到结果
            int i = pstm.executeUpdate();
            // 5. 处理结果
            if (i > 0)
            {
                System.out.println("增加成功");
            } else
            {
                System.out.println("增加失败");
            }
        } catch (SQLException e)
        {
            e.printStackTrace();
        } finally
        {
            // 6. 关闭连接
            try
            {
                DBUtil.get_CloseConn(null, pstm, conn);
            } catch (SQLException e)
            {
                e.printStackTrace();
            }
        }
    }
    
    //删除用户
    public void deleteUser(int id)
    {
        try
        {
            // 1. 获取连接
            conn = DBUtil.get_Conn();
            // 2. 获取存放sql语句的对象
            pstm = conn.prepareStatement("delete from tb_user where id = ?");
            // 3. 补全信息
            pstm.setInt(1, id);
            // 4. 执行sql并得到结果
            int i = pstm.executeUpdate();
            // 5. 处理结果
            if (i > 0)
            {
                System.out.println("删除成功");
            } else
            {
                System.out.println("删除失败");
            }
        } catch (SQLException e)
        {
            e.printStackTrace();
        } finally
        {
            // 6. 关闭连接
            try
            {
                DBUtil.get_CloseConn(null, pstm, conn);
            } catch (SQLException e)
            {
                e.printStackTrace();
            }
        }
    }
    
    //查询用户
    public void queryUser()
    {
        try
        {
            // 1. 获取连接
            conn = DBUtil.get_Conn();
            // 2. 获取存放sql语句的对象
            String sql = "select * from tb_user";
            // 3. 获取存放sql的对象
            pstm = conn.prepareStatement(sql);
            // 4. 执行SQL语句,并得到结果
            rs = pstm.executeQuery();
            // 5.遍历结果
            while (rs.next())
            {
                System.out.println("--------------");
                System.out.println("用户ID:" + rs.getInt(1));
                System.out.println("用户名:" + rs.getString(2));
                System.out.println("密码:" + rs.getString(3));
            }
        } catch (SQLException e)
        {
            e.printStackTrace();
        } finally
        {
            // 6. 关闭连接
            try
            {
                DBUtil.get_CloseConn(rs, pstm, conn);
            } catch (SQLException e)
            {
                e.printStackTrace();
            }
        }
    }

    // 修改用户信息
    public void updateUser(User user)
    {
        try
        {
            // 1. 获取连接
            conn = DBUtil.get_Conn();
            // 2. 获取存放sql语句的对象
            pstm = conn.prepareStatement("update tb_user set username=?,password=?  where id=?;");
            // 3. 补全信息
            pstm.setString(1, user.getUsername());
            pstm.setString(2, user.getPassword());
            pstm.setInt(3, user.getId());
            // 4. 执行sql并得到结果
            int i = pstm.executeUpdate();
            // 5. 处理结果
            if (i > 0)
            {
                System.out.println("修改成功");
            } else
            {
                System.out.println("修改失败");
            }
        } catch (SQLException e)
        {
            e.printStackTrace();
        } finally
        {
            // 6. 关闭连接
            try
            {
                DBUtil.get_CloseConn(null, pstm, conn);
            } catch (SQLException e)
            {
                e.printStackTrace();
            }
        }
    }
}

5. 编写控制台菜单

最后,在main函数中编写控制台菜单,进行相关的数据库操作。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值