Mybatis实现原理深入解析 (转载)

本文深入探讨了JDBC到Mybatis的演变过程,分析了Mybatis作为数据持久层框架的优势及待改进之处,详细介绍了使用JDBC进行数据库查询的具体步骤,并对比了Mybatis的简化效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mybatis实现原理深入解析 (转载)

原理分析之一:从JDBC到Mybatis

1.引言

本文主要讲解JDBC怎么演变到Mybatis的渐变过程,重点讲解了为什么要将JDBC封装成Mybaits这样一个持久层框架。再而论述Mybatis作为一个数据持久层框架本身有待改进之处。

2.JDBC实现查询分析

我们先看看我们最熟悉也是最基础的通过JDBC查询数据库数据,一般需要以下七个步骤:

(1)  加载JDBC驱动

(2)  建立并获取数据库连接

(3)  创建 JDBC Statements 对象

(4)  设置SQL语句的传入参数

(5)  执行SQL语句并获得查询结果

(6)  对查询结果进行转换处理并将处理结果返回

(7)  释放相关资源(关闭Connection,关闭Statement,关闭ResultSet)

 

以下是具体的实现代码:

 

Java代码  
  1. public static List<Map<String,Object>> queryForList(){  
            Connection connection = null;  
            ResultSet rs = null;  
            PreparedStatement stmt = null;  
            List<Map<String,Object>> resultList = new ArrayList<Map<String,Object>>();  
              
            try {  
                //加载JDBC驱动  
                Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();  
                String url = "jdbc:oracle:thin:@localhost:1521:ORACLEDB";  
                  
                String user = "trainer";   
                String password = "trainer";   
                  
                //获取数据库连接  
                connection = DriverManager.getConnection(url,user,password);   
                  
                String sql = "select * from userinfo where user_id = ? ";  
                //创建Statement对象(每一个Statement为一次数据库执行请求)  
    stmt = connection.prepareStatement(sql);  
                  
                //设置传入参数  
                stmt.setString(1, "zhangsan");  
                  
                //执行SQL语句  
                rs = stmt.executeQuery();  
                  
                //处理查询结果(将查询结果转换成List<Map>格式)  
                ResultSetMetaData rsmd = rs.getMetaData();  
                int num = rsmd.getColumnCount();  
                  
                while(rs.next()){  
                    Map map = new HashMap();  
                    for(int i = 0;i < num;i++){  
                        String columnName = rsmd.getColumnName(i+1);  
                        map.put(columnName,rs.getString(columnName));  
                    }  
                    resultList.add(map);  
                }  
                  
            } catch (Exception e) {  
                e.printStackTrace

转载于:https://www.cnblogs.com/atwanli/articles/4746349.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值