Mybatis(ORM框架)

一、对Mybatis的认识

1.MyBatis是一个优秀的基于Java的持久层框架,支持自定义SQL,存储过程和高级映射。其对原有JDBC操作进行了封装,几乎消除了所有JDBC代码,使开发者只需关注 SQL 本身。可以使用简单的XML或Annotation来配置执行SQL,并自动完成ORM操作,将执行结果返回

2. MyBatis框架和Hibernate框架

Hibernate是一个全自动化ORM框架,MyBatis是一个对JDBC进行封装的框架,也是一个半自动化的ORM框架。
全自动化:开发者只需要调用相关接口就可以完成操作,整个流程框架都已经进行了封装。Hibernate实现了POJO和数据库之间的映射,同时可以自动生成SQL语句并完成执行。
半自动化:框架只提供一部分功能,剩下的工作仍需要开发者手动完成,MyBatis没有提供POJO与数据库表的映射,只实现了POJO与SQL之间的映射关系,需要开发者自定义SQL语句,以及数据与POJO之间的装配关系。

3.MyBatis框架和Hibernate框架的区别

MyBatis需要开发者手动编写SQL语句,在提供灵活性的同时,可能缺乏一些全面性的功能,对于高级查询,需要开发者自行编写SQL语句以及ResultMap。而Hibernate则通过对象关系映射自动生成SQL语句,具有良好的映射机制,使得开发者无需关心SQL的生成与结果映射,可以更专注于业务流程。

3.ORM框架

(1).ORM Object Relational Mapping )对象关系映射,将程序中的 一个对象与表中的一行数据 一一对应
(2).ORM 框架提供了持久化类与表的映射关系,在运行时参照映射文件的信息, 把对象持久化到数据库中。

二、ORM映射【重点

Mybatis中的ORM映射是指将Java对象与数据库表之间的映射关系进行配置的过程

1.MyBatis自动ORM失效

MyBatis 只能自动维护库表 列名 属性名 “相同时的一一对应关系,二者不同时,无法自动ORM

2.三种解决方案

方案一:列的别名:在SQL中使用 as 为查询字段添加列别名,以匹配属性名

​<select id="getAll1" resultType="product">
select p_id pid,t_id tid,p_name name,p_time time,p_price price ,
p_state state ,p_image image, p_info info,isdel del from product;
</select>​
方案二:直接使用 Map 集合映射结果(默认使用查询到的字段名作为map集合的key)
<select id="getAll2" resultType="map">
select * from product;
</select>

//解决方法2:直接返回一个Map集合
List<Map<String,Object>> getAll2();
方案三:自定义结果映射( ResultMap
<!-- resultMap属性 表示自定义映射的id -->
<select id="getAll3" resultMap="productMap" >
select * from product;
</select>
<!-- resultMap标签 表示自定义映射 id:唯一标识 type:映射类型 -->
<resultMap id="productMap" type="product">
<!-- id标签一般表示主键 result标签一般表示普通字段 (不是必须的) -->
<!-- 属性:d
column 表示数据库中的字段名 property表示实体类中的属性名
djavaType 表示java中的类型 jdbcType表示数据类型中数据类型(mybatis可以自动识
别) -->
<id column="p_id" property="pid"/>
<result column="t_id" property="tid"/>
<result column="p_name" property="name"/>
<result column="p_time" property="time"/>
<result column="p_price" property="price"/>
<result column="p_info" property="info"/>
<result column="p_state" property="state"/>
<result column="p_image" property="image"/>
<result column="isdel" property="del"/>
</resultMap>

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xiao Jian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值