mybatis总结

 

MyBatis框架

1. mybatis框架原理

持久层的框架

对原生态的jdbc程序进行总结

mybatis开发dao的两种方式

原始的方式:程序需要编写dao接口和dao的实现类

Mybatismapper接口:相当于dao接口代理开发

Mybatis的核心:输入映射    输出映射    动态SQL

2. 原生态jdbc程序中的问题总结

数据库连接频繁连接和开启,造成资源浪费,形象数据库性能.

解决方案:使用数据库连接池

SQL语句在java代码中,不利于系统维护.

3. mybatis的原理

1.Mybatis让程序的主要精力放在SQL,通过mybatis提供的映射方式

自由灵活的生成满足需要的SQL语句.

2.Mybatis可以将输入的参数自动的进行输入映射,将查询结果集

灵活的映射出Java对象(输出映射).

4. 配置文件的主要内容

Mybatis-config.xml

配置数据源,事务等运行环境

Mapper.xml映射文件:命名规则xxxMapper.xml

5. 会话工厂:SqlSessionFactory

创建SqlSession(接口)操作数据库

6. resultType----输出的结果类型

ParameterType----参数类型

7. hibernatemybatis的应用区别

1. Hibernate是一个标准的orm框架,sql语句的优化比较困难

应用场景:适用于需求变化较少的中小型项目

比如后台管理系统

2. mybatis专注于SQL本身 

mybatis的一级缓存默认打开,指的是session缓存

Mybatis的二级缓存(类必须序列化):

 

******resultMap

指定定义resultMapid,如果这个resultMap在其他的的mapper文件

,要加上namespace的名.

 

 

**********动态SQL

Mybatis的核心对SQL语句进行灵活的操作.通过表达式进行判断

SQL进行灵活的组装,拼接.

 

 

 

*****动态SQL---SQL片段(可重用型,基于单表来定义SQL片段,不要包含 where)

将上面实现的动态SQL判断代码抽取出来,组成一个SQL片段,其他的

Statement可以引用这个SQL片段.

第一步:定义SQL片段

<sql></sql>

第二步:引用SQL片段

<where>

<include refid=”sql片段的id”></include>

//如果指定的id不在本mapper文件中,需加上namespace

</where>

***************动态SQL,-----foreach

 

******trim的用法

 

 

******SQLSession接口的介绍

SQLSession:是一个面向用户的接口(提供操作数据库的方法),实现对象是

线程不安全的,建议SQLsession的应用场合在方法体内.

如果需要提交事务,需要执行SQLsessioncommit方法

最后释放资源,关闭SQLsession.

 

****resultMap可以实现延迟加载,但是resultType无法实现延迟加载

ResultMap中的继承



****resultMap中的延迟加载,使用associationcollection,具备延迟夹杂IDE 功能.


*****mybatis的缓存

提供一级缓存和二级缓存

一级缓存是SQLSession级别的缓存,彼此之间互不影响

二级缓存是mapper级别的缓存,多个SQLSession存储的数据可以放在

二级缓存中.

注意:如果SqlSession去执行commit操作(插入,更新,删除),可以清空sqlSession

中的一级缓存,可以避免脏读,一直得到最新的信息.

***分布式缓存

 

Mybatis无法实现分布式缓存,需要和其他的缓存框架进行整合

Mybatis提供了一个cache接口,如果要实现自己的缓存逻辑,

实现cache接口就行.

Mybatis默认实现cache接口的实现了是PerpetualCache

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值