跟大家分享一个开心的事,跟朋友搞的新公司成立啦,但技术分享不能停止!
学习了hibernate这个持久层框架之后,在来学习Mybatis简直是无压力,因为Mybatis入门门栏很低,如果学习过了hibernate的话,对于Mybatis的学习很简单了,如果没学习过hibernate直接学习Mybatis也没关系,也很好理解。
写Mybatis这一章节博客,大致分为这样一种思路
mybatis入门 --> 全局配置文件和映射文件详解 --> 高级映射(一对一,一对多,多对多) -->延迟加载机制 -->一级缓存,二级缓存(整合ehcache) --> spring整合mybatis --> 逆向工程
如果你想直接查看mybatis的标准helloworld,那么跳过这章,看第二章。
一、Mybatis的简介
mybatis封装了jdbc的持久层框架,前身为ibatis,在配置文件中编写sql,是不完全orm映射框架。
查看百度百科的介绍
1、支持普通sql查询
2、高级映射
3、存储过程
4、消除了几乎所有jdbc代码和参数的手工设置以及结果集的检索,等等特点,都会讲解到,今天先认识一下为什么说mybatis消除了所有jdbc代码和参数的设置,通过普通的jdbc有哪些不足,从而认识到mybatis的好处。
二、分析jdbc的问题
1 //1、注册驱动,什么是驱动?能够让java连接数据库,也就是实现jdbc接口规范就是驱动 2 Class.forName("com.mysql.jdbc.Driver");//硬编码 3 /* 4 * 2、通过驱动管理者获取数据库连接 5 * DriverManager是驱动实现类的管理者。 6 * url:连接数据库的位置,端口号,数据库名 7 * jdbc:mysql://localhost:3306/test_01 8 */ 9 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test_1", "root", "root");//(硬编码) 10 /* 11 * 3、获得sql语句执行者 12 * statement:执行sql语句对象 13 * sql语句必须是完整的。 14 * preparedStatement:预处理(常用) 15 * sql语句可以不是完整的,可以将参数用?替代,然后在预编译后加入未知参数 16 * 17 */ 18 //定义sql语句,?表示占位符 19 String sql = "select * from user where id = ?"; //硬编码 20 PreparedStatement ps = conn.prepareStatement(sql); 21 ps.setInt(1, 1); //硬编码 22 //4、获取sql语句执行结果,resultset 23 /* 24 * executeQuery():查询操作 25 * executeUpdate():增删改操作 26 */ 27 ResultSet rs= ps.executeQuery(); 28 //5、处理结果 29 while(rs.next()){ 30 System.out.println(rs.getInt(1));;//index代表第几列,从1开始 31 } 32 33 //6、关闭连接 34 rs.close(); 35 ps.close(); 36 conn.close();