转载

Mybatis 从零到入门

前言

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

Mybatis 从零到入门

这也让我对 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

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>

① 既查询需要返回的字段名称,对应数据表

Mybatis 从零到入门

② 对应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

总结

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

原文  https://segmentfault.com/a/1190000022391945
正文到此结束
Loading...