MyBatis 源码学习笔记(一)- MyBatis概述

2022-08-19 16:04:10 浏览数 (1)

一、JDBC

使用JDBC访问数据库的步骤

  1. 定义数据库驱动以及连接信息
  2. 注册数据库驱动
  3. 获取数据库连接
  4. 创建一个查询
  5. 定义执行的SQL
  6. 执行SQL,获取ResultSet结果集
  7. 从结果集中取出数据
  8. 关闭连接
代码语言:javascript复制
public class JdbcTest {
    // 1.定义数据库驱动以及连接信息
    private static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
    private static final String JDBC_URL = "jdbc:mysql://rm-uf67r962043910k193o.mysql.rds.aliyuncs.com:3306/test?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false&serverTimezone=Asia/Shanghai&allowMultiQueries=true";
    private static final String JDBC_USER = "root";
    private static final String JBDC_PASSWORD = "Abc*123456";

    public static void main(String[] args) {

        Connection connection = null;
        Statement statement = null;
        try {
            //2.注册数据库驱动
            Class.forName(JDBC_DRIVER);
            //3.获取数据库连接
            connection = DriverManager.getConnection(JDBC_URL,JDBC_USER,JBDC_PASSWORD);
            //4.创建一个查询
            statement = connection.createStatement();
            //5.定义执行的SQL
            String sql = "SELECT * FROM t_user";
            //6.执行SQL,获取ResultSet结果集
            ResultSet resultSet = statement.executeQuery(sql);
            //7.从结果集中取出数据
            List<User> userList = new ArrayList<>();
            while (resultSet.next()){
                User user = new User();
            user.setId(resultSet.getInt("id"));
            user.setUserName(resultSet.getString("user_name"));
                user.setRealName(resultSet.getString("real_name"));
                user.setSex(resultSet.getByte("sex"));
                user.setMobile(resultSet.getString("mobile"));
                user.setEmail(resultSet.getString("email"));
                user.setNote(resultSet.getString("note"));

                System.out.println(user.toString());

                userList.add(user);
            }

            // 8.关闭连接
            connection.close();
            statement.close();
            resultSet.close();
        } catch (Exception e){
            e.printStackTrace();
        } finally {
            try {
                if (statement != null)
                    statement.close();
            } catch (SQLException se2) {
            }// nothing we can do
            try {
                if (connection != null)
                    connection.close();
            } catch (SQLException se) {
                se.printStackTrace();
            }
        }

    }
}
复制代码

上述代码中使用Statement对象执行的查询,如果SQL语句中有参数占位符建议使用PreparedStatement对象来执行查询,PreparedStatement对象可以对SQL语句进行预编译,可以放置SQL注入;而且性能相对Statement会更好些。Jdbc针对数据库写操作需要对事务进行提交。

JDBC访问数据库存在的弊端:

  • 操作数据库步骤繁琐
  • 代码和SQL语句耦合
  • 连接资源需要手动关闭,会有隐患

二、ORM

对象关系映射(ORM),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换

ORM的优势:

  • 更加贴合面向对象编程语意
  • 技术和业务解耦
  • 自动关闭数据库连接,释放资源

HIBERNATE 

0 人点赞