Mybatis作为一种ORM解决方案,在一开始接触Java Web时就使用它,但对它的原理并没有过多的了解。今天就来好好了解下它的基本原理吧。
MyBatis的基本工作原理就是:先封装SQL,接着调用JDBC操作数据库,最后把数据库返回的表结果封装成Java类。因此要了解mybatis就需要先了解JDBC。
JDBC简介
Java数据库连接 Java Database Connectivity,简称JDBC,它是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC是一类接口,制定了统一访问各类关系数据库的标准接口。如果没有JDBC这个接口标准的存在,程序员面对各类数据库的操作将会变得十分复杂,并令人抓狂。
JDBC是接口,驱动是接口的实现类,没有驱动将无法完成数据库连接,从而不能操作数据库!每个数据库厂商都需要提供自己的驱动,用来连接自己公司的数据库,也就是说驱动一般都由数据库生成厂商提供。
JDBC开发步骤
基本的步骤包括了驱动加载,创建数据库连接,执行sql并获得返回,关闭连接这几个步骤。下面具体介绍:
- 注册和加载数据库驱动:通过Class.forName方法反射获得驱动,加载成功则将驱动注册到DriverManager;否则抛出异常。
- 获得数据库连接:调用DriverManager的静态方法getConnection获得Connection对象,需要传入url,user和password。
- 获取语句执行对象:
- 预设sql:调用Connection对象的createStatement方法获取执行语句Statement对象;
- 动态sql:或者调用Connection对象的preparedStatement方法获取PreparedStatement对象,并调用setString动态赋值。
String sql = "insert into user(username, sex, address) values(?,?,?)"; PreparedStatement ps = conn.preparedStatement(sql); ps.setString(1, "张三"); //为第一个问号赋值
- 执行sql语句:调用execute方法,比如对于update,传入执行的语句String对象并调用executeUpdate方法;或对于PreparedStatement直接调用preparedStatement对象的executeUpdate 方法。
- 关闭连接:调用Connection对象的close方法。
Mybatis核心组件
Mybatis流程
参考: