前言
新公司新项目的持久层用到了Mybatis,在此之前的一两年我一直使用的是Hibernate,关于这两个框架的争议一直存在,有人说Hibernate过于臃肿效率低于Mybatis,也有人说Hibernate优化做的好效率一样很棒,其实我还是认为各有优势的,比如Hibernate的API可以让我们无视数据库移植,HQL也简化了SQL,但Mybatis的灵活性确实略高于Hibernate,只要不是用JDBC,这些个框架整体上应当都是差不多的,无非就是用的好用的坏的问题。刚进公司那阵鸿洋曾经告诉过我,会Hibernate的话学Mybatis也就是几个小时的事情,看来确实如此,不管是整体的架构或者使用方法上都是同出一辙,本篇blog是我学习Mybatis的第一篇,所以就写一个简单的CRUD,当然我的这一系列blog还有一个特点就是会不断和hibernate做比较,一边总结回顾Hibernate,一边学习记录Mybatis。
初识MyBatis
首先看一下Mybatis的工程结构,
给我的第一感觉就是轻量级,jar包只需要2个,并无任何依赖,那么再来看看Hibernate的工程结构,
相比之下,孰“轻”孰“重”一目了然。再具体观察一下包的结构,不难发现Mybatis下有一个mappers包,里面放的是xml文件,没学过应该也听说过Mybatis的SQL语句是独立写在配置文件中的,并且正是写在这些mapper.xml文件中的,这个后面再细说。不管哪个框架自然应当有一个整体的配置文件,就像Hibernate中的hibernate.cfg.xml一样,我们来看看Mybatis的mybatis-config.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http:/