Mybatis 从零到入门

前言

最近,再找工作,还是一个菜鸟的我,感觉找个工作还是比较困难,一个契机,公司给发了一个面试题,如下
11587006865_.pic_hd.jpg

这也让我对Mybatis有了一个入门的了解

上述Demo地址

Mybatis简介

官网对Mybatis的介绍:

MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手工设置参数以及抽取结果集。MyBatis 使用简单的 XML 或注解来配置和映射基本体,将接口和 JavaPOJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

官网地址

提到Mybatis就会想到Hibernate;
HibernateMybatis又有什么区别呢!

HibernateMybatis区别

  • Mybatis:

    1. mybatis本身就很小且简单,即学即用,比较灵活

    2. 可以进行更为细致的SQL优化,可以减少查询字段(不需要使用JsonView)。

    3. 编写SQL语句时工作量很大,尤其是字段多、关联表多时,更是如此。
    4. 不太容易适应快速数据库修改,对SQL语句编写能力要求高

    5. SQL语句依赖于数据库,导致数据库移植性差,不能更换数据库。

  • hibernate:

    1. 功能强大,数据库无关性好,开发速度很快,效率高。
    2. Hibernate可以自动生成SQL语句,自动执行,不需要编写的SQL语句。
    3. 使用Hibernate,移植性好(只要使用Hibernate标准开发,更换数据库时,只需要配置相应的配置文件就可以了,不需要做其它任务的操作)
    4. 缺点就是学习门槛不低,比较复杂,要学到精通门槛更高。

hibernate是全自动,而mybatis是半自动

Mybatis配置

// 对应的xml配置文件
mybatis.mapper-locations=classpath:mapper/*Mapper.xml
// 对应的实体包
mybatis.type-aliases-package=com.example.demo.entity
// 开启debug模式,打印SQL语句
logging.level.com.example.demo.mapper=debug

Mybatis 映射关系

<resultMap id="goodResultMap" type="com.example.demo.entity.Good④">
    <id property="id③" column="p_id②"/>
    <result property="name③" column="name1②"/>
    <result property="description③" column="description②"/>
    <result property="stock③" column="stock②"/>
    <association property="unit" javaType="Unit">
        <id property="id" column="c_id②"/>
    </association>
</resultMap>

<select id="findById⑤" resultMap="goodResultMap">
    SELECT good.id① AS p_id,
    good.description①,
    good.`name`① AS name1,
    good.stock①,
    good.unit_id① AS c_id,
    FROM good LEFT OUTER JOIN unit ON good.unit_id = unit.id
    WHERE good.id = #{id⑥,jdbcType=INTEGER};
</select>

① 既查询需要返回的字段名称,对应数据表
image.png
② 对应AS后的名称(相当于把name起了一个别名叫name1,既name1与②对应);如果没有起别名既与原来数据表中名称一致
③ 对应④实体里边的字段名称
⑤ 对应仓库层的方法名称,如Good findById(@Param("id")⑥ Long id); ⑥ 对应传入的参数id

Mybatis 注解

同时Mybatis 也提供了一些注解

  • 基础CRUD注解,
    @Select
    @Insert
    @Update
    @Delete

在使用@Select 注解查询时,只能对单表进行查询,要想查询关联表需要映射注解

  • 映射注解:
    @Results 用于填写结果集的多个字段的映射关系.
    @Result 用于填写结果集的单个字段的映射关系.
    @ResultMap 根据ID关联XML里面<resultMap>.
对于注解还只是了解层面,没有使用过注解进行关系映射,只是使用简单的单表CRUD

总结

要一辈子跟自己的无知作斗争,活到老,学到老,学海无涯!!


我的人生成长之路
Good good study, day day up!

为 API 生,为框架死,为 debug 奋斗一辈子;

889 声望
33 粉丝
0 条评论
推荐阅读
微信JSAPI支付 (签名问题)
jsapi微信底层就不过多描述了,主要记录一下,查了很多资料,发现微信返回参数不能直接返给前端使用,还需要进行一次签名,不然前台就会提示签名错误

潘佳琦阅读 294

mds-spring-boot,Mybatis、Mybatis-Plus多数据源及事务处理框架
mds-spring-boot是一个基于SpringBoot2.x的、全场景支持的、多数据源框架,支持Spring-JDBC、Mybatis、Mybatis-Plus、Mybatis-Tiny、ShardingSphere、Mycat等,支持本地事务及完整的基于Spring-@Transactional声...

penggle1阅读 1k

如何规避MyBatis使用过程中带来的全表更新风险
作者:京东零售 贾玉西一、前言程序员A: MyBatis用过吧?程序员B: 用过程序员A: 好巧,我也用过,那你遇到过什么风险没?比如全表数据被更新或者删除了。程序员B: 咔,还没遇到过,这种情况需要跑路吗?程序...

京东云开发者阅读 840

封面图
mybatis xml文件热加载实现
本文博主给大家带来一篇 mybatis xml 文件热加载的实现教程,自博主从事开发工作使用 Mybatis 以来,如果需要修改 xml 文件的内容,通常都需要重启项目,因为不重启的话,修改是不生效的,Mybatis 仅仅会在项目初...

wayn阅读 697

分享一个修改了xml文件再也不用重启的项目mybatis-xmlreload
自我18年使用 Mybaits 以来,开发环境中如果修改了 xml 文件后,只有重启项目才能生效,如果小项目重启还好,但是对于一个重启需要十几分钟的大型项目来说,这就非常耗时了。开发人员因为修改了xml 文件少量内容...

wayn阅读 693

封面图
mybatis的缓存机制
最近在使用mybatis的时候发现了一个问题:当我进行更新操作时,通过id查询条件查出一个User对象,并修改user的姓名,在进行update函数前,通过切面去记录他的变更信息到变更记录表中。

小强Zzz阅读 428

三天吃透mybatis面试八股文
本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~

程序员大彬阅读 353

为 API 生,为框架死,为 debug 奋斗一辈子;

889 声望
33 粉丝
宣传栏