在web应用中,与数据库的交互是永恒的课题。回顾过去,在ORM框架出现之前,我们采用原始的JDBC编程与数据库打交道:从数据库获取数据,再将数据映射成对象;或者将对象映射为表的字段,将用户想要保存的信息存储到数据库中。
这个过程复杂且耗时:加载JDBC驱动、建立并获取数据库连接、创建JdbcStatement对象、设置SQL语句的传入参数、执行SQL语句并获取查询结果、对查询结果进行转换处理并将处理结果返回、释放资源(关闭连接、关闭statement)等import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet;
/** * @author Evan */ public class JDBCTest { public static void main(String[] args) throws Exception { Connection connection = null; PreparedStatement prepareStatement = null; ResultSet rs = null;
try { // 加载驱动 Class.forName("com.mysql.jdbc.Driver"); // 获取连接 String url = "jdbc:mysql://127.0.0.1:3306/ssmdemo"; String user = "root"; String password = "123456"; connection = DriverManager.getConnection(url, user, password); // 获取statement,preparedStatement String sql = "select * from tb_user where id=?"; prepareStatement = connection.prepareStatement(sql); // 设置参数 prepareStatement.setLong(1, 1l); // 执行查询 rs = prepareStatement.executeQuery(); // 处理结果集 while (rs.next()) { System.out.println(rs.getString("userName")); System.out.println(rs.getString("name")); System.out.println(rs.getInt("age")); System.out.println(rs.getDate("birthday")); } } finally { // 关闭连接,释放资源 if (rs != null) { rs.close(); } if (prepareStatement != null) { prepareStatement.close(); } if (connection != null) { connection.close(); } } } }
看着有没有头疼,不仅繁琐,而且如果我们一个功能中有5个查询,是不是要写5次这样的代码?耦合度太高!![沙漠里的公路风景图片](http://image109.360doc.com/DownloadImg/2020/11/1214/207214593_2_20201112022119962_wm.jpg)
其实,我们要做的事情很简单,就是从数据库获取数据,再映射到对象,然后展示给用户。既然如此,是否可以将这个过程封装起来,然后给业务开发人员调用呢?答案是肯定的。 聪明的程序员为了偷懒什么事都干得出来,在JDBC编程持续短暂时间之后,ORM框架出现了。ORM全称Object Relational Mapping,即对象与关系映射,它采用元数据来描述对象与关系的映射,元数据一般指的就是xml格式文件。 有了ORM框架,开发人员只要指定了持久化类与数据库表的映射关系,ORM框架运行时就能根据映射文件的信息,将对象持久化到数据库中。 是不是变得简单了很多? 现如今ORM框架代表有:Hibernate、MyBatis 、JFinal等。 ![桂林山水风景图片素材](http://image109.360doc.com/DownloadImg/2020/11/1214/207214593_3_20201112022120118_wm.jpg)
MyBatis是一款优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和Java对象为数据库中的记录。 这篇文章主要从Jdbc的知识来了解MyBatis 技术背景,我们也可以从Jdbc入手类比初步了解MyBatis 的底层原理,希望能为大家在学习道路上有所启发。 所有文章首发在公众号【架构师修炼指南】。
|