Dao模式

Dao模式

1.加入驱动

1618447237056.png

驱动包选中右键,add buil path,出现如下图效果


1618447303751.png

2.包结构

1618447183002.png

3.创建实体类grade

1618447401827.png

编写属性,alt+shift+s+o两次,分别添加无参构造、有参构造,alt+s+r添加set、get

4.GradeDao接口

1618447502141.png

5.GradeDao接口的实现类:GradeDaoImpl,在impl包中

1618447538428.png

6.访问数据库的工具类

/**
 * 访问数据库的工具类
 * @author Administrator
 *
 */
public class DBHelper {
    private String driver = "com.mysql.jdbc.Driver";
    private String url = "jdbc:mysql://localhost:3306/myschool?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC";
    private String username = "root";
    private String password = "123456";
    
    protected Connection conn = null;
    protected PreparedStatement pstmt = null;
    protected ResultSet rs = null;
    //获取连接对象
    protected  Connection getConnection() {
        //1.加载驱动
        try {
            Class.forName(driver);
            conn = DriverManager.getConnection(url, username, password);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return conn;
    }
    //执行增删改
    protected int executeUpdate(String sql,Object... objs) {//Object... objs参数个数不限,多个实参用逗号隔开,没有这个参数不用写
        int result = 0;
        try {
            getConnection();
                          pstmt = conn.prepareStatement(sql);
            //依次设置参数
            if(objs!=null) {
                for (int i = 0; i < objs.length; i++) {
                    pstmt.setObject(i+1, objs[i]);
                }
            }
            result = pstmt.executeUpdate();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            closeAll();
        }
        return result;
    }
    //执行查询
    protected ResultSet executeQuery(String sql,Object... objs) throws SQLException{
                getConnection();
        pstmt = conn.prepareStatement(sql);
        //依次设置参数
        if(objs!=null) {
            for (int i = 0; i < objs.length; i++) {
                pstmt.setObject(i+1, objs[i]);
            }
        }
        rs = pstmt.executeQuery();//外面调用此方法时依次取出结果集之后再释放资源(无论是否发生异常),再调用时抛异常,所以此方法将异常抛出
        return rs;
    }
    //释放资源
    protected void closeAll() {
        if(rs!=null) {
            try {
                rs.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        if(pstmt!=null) {
            try {
                pstmt.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        if(conn!=null) {
            try {
                conn.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    } 
}

7.新增年级记录

image.png

8.测试新增年级

image.png

8.增加单元测试

image.png

image.png

image.png

image.png

image.png

image.png

image.png

8.查询

实现类查询方法


image.png

测试类,依次输出查询结果


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容