深入浅出Mybatis-入门

写在系列前

这学期在上陈昊鹏老师的企业级应用系统体系架构这门课,载体为Java EE。这个系列用来记录Java Web开发过程中关于Mybatis的学习与使用过程。

Mybatis

目录

  1. 入门
  1. Mybatis Generator

前言

学习一个新东西前,如果能对他有一个比较直观的印象与定位,那么接下来的学习过程就会顺畅很多。所以本文主要是我对Mybatis的一个简单入门性的总结介绍(前提还是需要些必要的概念认知)。
PS:文末有参考列表

Mybatis是什么

Mybatis是一个持久层框架,用于数据的持久化。主要表现为将SQL与POJO进行一个映射,将SQL从代码中解耦。基本概念如图:


使用时,以User为例,UserMapper定义了findById接口,该接口返回一个User对象,接口的实现为一个xml配置文件。该xml文件中定义对应接口中的实现所需要的SQL。从而达到将SQL与代码解耦的目标。


<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"   
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">  

<mapper namespace="com.mybatis.UserMapper">  
  
    <select id="findById" parameterType="int" resultType="User">  
        select user_id id,user_name userName,user_age age from t_user where user_id=#{id}  
    </select>  
  
</mapper> 

与Hibernate的异同

Mybatis开始逐渐流行起来,必然有其原因,简单了解了一下它与同为持久层框架的Hibernate的异同。

  • 映射模式
    从上面的简单概念可以知道Mybatis实际上着力点在POJO与SQL的映射。而Hibernate则主要是POJO与数据库表的对象关系映射。前者掌控力度更细,代码量会相对多一点,后者灵活性则差一点,更为自动化一些,与PHP里的Eloquent属于同类型。
  • 性能
    Mybatis基于原生JDBC,相比于对JDBC进行二次封装的Hibernate性能会更好一点。
  • 开发与维护
    Hibernate配置好实体类后,使用起来是比较简洁,舒服的,但是前期学习曲线比较陡,后期调优比较麻烦。Mybatis对SQL掌控的颗粒更细一点,相比较而言看上去简陋些。由于直接映射SQL,迁移性是个问题。

总结

对Mybatis形成个大概模样,它是做什么的,怎么做的。一些参考:

推荐阅读更多精彩内容