joshsung

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

http://yuncode.net/article/a_5525ec26eee5268

 

原理分析之一:从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();  
            } finally

分类:

技术点:

相关文章: