mybatis是半ORM框架,是对jdbc的半封装,即保证了sql的灵活性,又简化的开发步骤。
以一个jdbc操作数据库为例
try{
//1.注册驱动
Class.forName("com.mysql.jdbc.Driver");
//2.连接数据库
String url = "jdbc:mysql://localhost:3306/test";
String userName="root";
String password="root";
Connection conn = DriverManager.getConnection(url,userName,password);
//3.操作数据库(PrepareStatement)
//编写sql语句
String sql = "SELECT * FROM stu_info WHERE stuname = ? and age=?;";
//创建PrepareStatement
PreparedStatement pst = conn.prepareStatement(sql);
pst.setString(1,"张三");
pst.setInt(1,1);
//执行sql+创建结果集
ResultSet rs = pst.executeQuery();
//遍历结果集
while(rs.next())
{
String stuname = rs.getString("stuname");
Student student=new Student(stuname);
}
//4.关闭资源
conn.close();
pst.close();
rs.close();
}catch (Exception e){
}
这是一个标准的操作数据库步骤,需要1、加载驱动,建立连接 2、准备sql ,根据数据库类型设置不同的参数 3、执行,数据库类型获取结果 4、构造实体类,返回 5 关闭资源
mybatis为了简化开发,对上面的步骤进行了封装
针对1:封装操作步骤,用连接池提高性能
针对2:保留sql编写的情况下,建立动态sql,根据TypeHandler 设置参数
针对3:根据TypeHandler获取参数
针对4:反射获取实体类,进行构造返回
下面分4篇文章,分别从源码的角度去解析,mybatis底层是如何处理的