毕业实习-JDBC的封装

JDBC的直接应用

首先,先展示一下不用封装写的使用JDBC。在这里,先总结下数据库连接的七个步骤:
1.获取驱动;
2.创建连接;
3.编写sql语句;
4.获取对象;
5.执行并返回结果;
6.处理对象;
可以看到,这里仅仅是使用了一个查询,代码就已经写的比较多了,可以想见,都是这么写的话,到了后面将会非常多,修改会很费力。

import java.sql.*;
public class TestUser {

    public static void main(String[] args){
        Connection conn=null;
        PreparedStatement pstm=null;
        ResultSet rs=null;

        try{
            //1.获取驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2.创建连接
            conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/java_3?useSSl=true&CharacterEncode=utf-8&user=root&password=123456");
            //3.编写sql语句

            //4.获取对象
            pstm=conn.prepareStatement("select * from user");
            //5.执行并返回结果
            rs=pstm.executeQuery();
            //6.处理结果
            while( rs.next())
            {
                System.out.println("id: "+rs.getInt(1));
                System.out.println("用户名: "+rs.getString(2));
                System.out.println("密码: "+rs.getString(3));
            }
        }catch (Exception e)
        {
            e.printStackTrace();
        }finally {
            //7.关闭资源
            if (rs!=null) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (pstm!=null) {
                try {
                    pstm.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (conn!=null) {
                try{
                    conn.close();
                }catch (SQLException e){
                    e.printStackTrace();
                }
            }
        }
    }
}

JDBC封装调用

一、首先,本次实验使用的MVC(粗略),第一步是M:模型的建立,这里先说下封装模型的四个步骤:
1.) 属性封装
2.) Get set
User
user = new User();
User.get/set
3. ) 构造方法
User
user = new User(id,username,password)
4. ) toString 方法重写
处理结果集的时候,如果没有toString,遍历对象的时候就会出现一个对象的地址。
然后,建立个bean包用来放模型:(代码如下)

package bean;
public class User {
    //1.对属性封装
    private int uid;
    private String name;
    private  String password;

    // get set

    public int getUid() {
        return uid;
    }

    public void setUid(int uid) {
        this.uid = uid;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
    //构造方法

    public User(int uid, String name, String password) {
        this.uid = uid;
        this.name = name;
        this.password = password;
    }
    public  User(){

    }
    //toString 方法重写

    @Override
    public String toString() {
        return "User{" +
                "uid=" + uid +
                ", name='" + name + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

二、接下来,创建一个util包,用来放工具类,这里是放数据库的连接和关闭。

package util;
import java.sql.*;

//工具类
public class DBUtil {

    private static String driver = "com.mysql.jdbc.Driver";
    private static String url = "jdbc:mysql://localhost:3306/java_3?useSSL=true&characterEncode=utf-8";
    private static String user = "root";
    private static String password = "123456";

    static {
        try {
            //获取驱动
            Class.forName(driver);
        } catch (Exception 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();
        }
    }

}

三、最后,在创建一个dao包,用来与数据库直接交互:

package dao;
import bean.User;
import util.DBUtil;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

//直接和数据库做交互
public class UserDao {

    Connection conn=null;
    PreparedStatement pstm=null;
    ResultSet rs=null;

    //查询全部
    public List<User> findAllUser(){

        try {
            //1.获取连接
            conn = DBUtil.get_Conn();
            //2.获取存放Sql语句的对象
            pstm = conn.prepareStatement("select * from user");
            //3.执行sql并返回对象结果
            rs = pstm.executeQuery();
            //创建集合
            List<User> userlist = new ArrayList<>();
            // 4.处理结果
            while (rs.next()){
                User user = new User();
                user.setUid(rs.getInt(1));
                user.setName(rs.getString(2));
                user.setPassword(rs.getString(3));
                userlist.add(user);
            }
            System.out.println(userlist);
            return  userlist;
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            try {
                DBUtil.get_CloseConn(rs,pstm,conn);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return null;
    }

//    public  static  void  main(String[] args) {
//      UserDao dao = new UserDao();
//      dao.findAllUser();
//    }
    public boolean addUser(String name,String password){
        try {
            DBUtil.get_Conn();
            pstm = conn.prepareStatement("insert into user values(?,?)");
            pstm.setString(1,name);
            pstm.setString(2,password);
            pstm.executeUpdate();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }finally {
            try {
                DBUtil.get_CloseConn(rs,pstm,conn);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

创捷包的界面如下:
在这里插入图片描述
最后,稍微再总结下MVC:

MVC:
M: model - 模型
V: View – 视图
C: Controller – 控制器

实体类:
Bean/ mdoel/ domain/entity
Dao
Service
Controller
util

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值