Mybatis源码分析(一) - mybatis基本概述

    xiaoxiao2022-07-06  201

    为什么需要ORM框架?

    先来看一段JDBC的代码!

    static final String DB_URL = "jdbc:mysql://localhost:3308/mybatis?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true"; // Database credentials static final String USER = "root"; static final String PASS = "root"; @Test public void QueryStatementDemo() { Connection conn = null; Statement stmt = null; List<TUser> users = new ArrayList<>(); try { // STEP 2: 注册mysql的驱动 Class.forName("com.mysql.jdbc.Driver"); // STEP 3: 获得一个连接 System.out.println("Connecting to database..."); conn = DriverManager.getConnection(DB_URL, USER, PASS); // STEP 4: 创建一个查询 System.out.println("Creating statement..."); stmt = conn.createStatement(); String userName = "caojiulu"; String sql="SELECT * FROM t_user where user_name='"+userName+"'"; ResultSet rs = stmt.executeQuery(sql); System.out.println(stmt.toString()); // STEP 5: 从resultSet中获取数据并转化成bean while (rs.next()) { System.out.println("------------------------------"); // Retrieve by column name TUser user = new TUser(); // user.setId(rs.getInt("id")); // user.setUserName(rs.getString("user_name")); user.setRealName(rs.getString("real_name")); user.setSex(rs.getByte("sex")); user.setMobile(rs.getString("mobile")); user.setEmail(rs.getString("email")); user.setNote(rs.getString("note")); System.out.println(user.toString()); users.add(user); } // STEP 6: 关闭连接 rs.close(); stmt.close(); conn.close(); } catch (SQLException se) { // Handle errors for JDBC se.printStackTrace(); } catch (Exception e) { // Handle errors for Class.forName e.printStackTrace(); } finally { // finally block used to close resources try { if (stmt != null) stmt.close(); } catch (SQLException se2) { }// nothing we can do try { if (conn != null) conn.close(); } catch (SQLException se) { se.printStackTrace(); } } System.out.println("-------------------------"); System.out.println("there are "+users.size()+" users in the list!"); }

    传统的JDBC编程存在的弊端:

    1.数据库连接频繁的创建和关闭,缺点是浪费数据库资源,影响操作效率。   设想:使用数据库连接池 2.sql语句是硬编码,如果需求变更需要修改sql,就需要修改java代码,需要重新编译,系统不易维护。   设想:将sql语句 统一配置在文件中,修改sql不需要修改java代码 3.通过prepareStatement向占位符设置参数,存在硬编码(参数位置,参数)问题。系统不易维护。   设想:将sql中的占位符及对应的参数类型配置在配置文件中,能过自动输入到映射 4.遍历查询结果集存在硬编码(列名)   设想:通过进行 sql查询结果向java对象映射,能过自动输出到映射

    ORM是什么?

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

    ORM框架两大霸主

    Mybatis是什么?

    Mybatis前身是iBatis,其源于“Internet”和“abatis”的组合,本质是一种半自动的ORM框架,除了 POJO和映射关系之外,还需要编写SQL语句

    最新回复(0)