0
点赞
收藏
分享

微信扫一扫

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

汤姆torn 2022-11-30 阅读 135


为什么需要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),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换

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

ORM框架两大霸主

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

Mybatis是什么?

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

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

举报

相关推荐

0 条评论