mybatis与传统JDBC的比较

1.MVC设计思想

mybatis与传统JDBC的比较_第1张图片

mvc的思想主要围绕在高内聚,低耦合上
而mybatis框架就是一个可以在分层的情况下,解决数据的持久化问题的框架。

2.JDBC操作步骤

加载驱动
获取连接
创建statement/prepareStatement对象
编写SQL(mybatis的核心关注点 其他步骤都由myabtis完成)
执行sql
结果集的处理
释放连接

 public static void main(String[] args) {
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        try {
//加载数据库驱动
            Class.forName("com.mysql.jdbc.Driver");
//通过驱动管理类获取数据库链接
            connection = DriverManager
                    .getConnection("jdbc:mysql://localhost:3306/zhang?characterEncoding=utf-8","root", "123456");
//定义 sql 语句 ?表示占位符
            String sql = "select * from emp where empno = ?";
//获取预处理 statement
            preparedStatement = connection.prepareStatement(sql);
//设置参数,第一个参数为 sql 语句中参数的序号(从 1 开始),第二个参数为设置的参数值
            preparedStatement.setInt(1, 1001);
//向数据库发出 sql 执行查询,查询出结果集
            resultSet = preparedStatement.executeQuery();
//遍历查询结果集
            while(resultSet.next()){
                System.out.println(resultSet.getString("empno")+"-- "+resultSet.getString("ename"));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
//释放资源
            if(resultSet!=null){
                try {
                    resultSet.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(preparedStatement!=null){
                try {
                    preparedStatement.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(connection!=null){
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
3.JDBC问题分析

1、 数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题。
2、 Sql 语句在代码中硬编码,造成代码不易维护,实际应用 sql 变化的可能较大, sql 变动需要改变 java代码。
3、 使用 preparedStatement 向占有位符号传参数存在硬编码,因为 sql 语句的 where 条件不一定,可能多也可能少,修改 sql 还要修改代码,系统不易维护。
4、 对结果集解析存在硬编码(查询列名), sql 变化导致解析代码变化,系统不易维护,如果能将数据库记录封装成 pojo 对象解析比较方便。

在这些问题的情况下,mybatis的出现就很方便开发。

下一篇文章有我的mybatis实现实例
mybatis实例创建步骤

你可能感兴趣的:(mybatis与传统JDBC的比较)