写在系列前
这学期在上陈昊鹏老师的企业级应用系统体系架构
这门课,载体为Java EE。这个系列用来记录Java Web开发过程中关于Mybatis的学习与使用过程。
目录
- 入门
前言
学习一个新东西前,如果能对他有一个比较直观的印象与定位,那么接下来的学习过程就会顺畅很多。所以本文主要是我对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形成个大概模样,它是做什么的,怎么做的。一些参考: