Mybatis学习(一):基础概念和简单自定义持久层框架demo

Mybatis学习(一):基础概念和简单自定义持久层框架demo

  • 一、一个简单自定义持久层框架demo
    • 1.1 普通的JDBC连接数据库
    • 1.2 对jdbc存在的问题分析和解决
    • 1.3 简单设计一个持久层框架
    • 1.4 简单测试

一、一个简单自定义持久层框架demo

1.1 普通的JDBC连接数据库

public class Test {

    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/mybatis", "root", "root");
            //定义SQL语句,其中?表示占位符
            String sql = "select * from user where name = ?";
            preparedStatement = connection.prepareStatement(sql);
            //设置参数,参数是从1开始
            preparedStatement.setString(1, "zhangsan");
            //执行SQL查询数据库返回查询结果集
            resultSet = preparedStatement.executeQuery();
            //遍历查询结果集
            while (resultSet.next()) {
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                User user = new User();
                user.setId(id);
                user.setName(name);
                System.out.println(user);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (resultSet != null) {
                try {
                    resultSet.close();
                } catch (SQLException sqlException) {
                    sqlException.printStackTrace();
                }
            }
            try {
                if (preparedStatement != null) {
                    preparedStatement.close();
                }
            } catch (SQLException sqlException) {
                sqlException.printStackTrace();
            }
            try {
                if (connection != null) {
                    connection.close();
                }
            } catch (SQLException sqlException) {
                sqlException.printStackTrace();
            }

        }
    }
}

1.2 对jdbc存在的问题分析和解决

从上边1.1的手写JDBC连接可以看出:

  1. 频繁创建和释放数据库连接,性能损失;
  2. SQL语句是写死的,在实际项目中是会经常变化的;
  3. preparedStatement传入参数时也有硬编码的存在,不易维护;
  4. 从resultSet获取结果信息封装为Java某个对象时也存在硬编码问题;

我们可以用以下方法解决上述问题:

  1. 采用连接池的方式避免频繁创建、释放数据库连接;
  2. 对硬编码的问题我们可以用配置文件的方式去替代;
  3. 用反射及内省方法完成resultSet结果集到Java对象的封装;

1.3 简单设计一个持久层框架

用户端:引入自定义框架的jar包。
(1)提供一个Mapper.xml存储关于SQL的配置信息文件;

>