Mybais

 一、Mybatis 的理解 

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

二、JDBC 编程有哪些不足之处,MyBatis 是如何解决这些问题的 

① 数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用 数据库链接池可解决此问题。 解决:在 SqlMapConfig.xml 中配置数据链接池,使用连接池管理数据库 链接。 
 
       ② Sql 语句写在代码中造成代码不易维护,实际应用 sql 变化的可能较大,sql 变动需要改变 java 代码。 解决:将 Sql 语句配置在 XXXXmapper.xml 文件中与 java 代码分离。 
 
       ③ 向 sql 语句传参数麻烦,因为 sql 语句的 where 条件不一定,可能多也可能 少,占位符需要和参数一一对应。 解决: Mybatis 自动将 java 对象映射至 sql 语句。 
 
       ④ 对结果集解析麻烦,sql 变化导致解析代码变化,且解析前需要遍历,如果 能将数据库记录封装成 pojo 对象解析比较方便。 解决:Mybatis 自动将 sql 执行结果映射至 java 对象。 

三、MyBatis 编程步骤是什么样的 

① 创建 SqlSessionFactory

② 通过 SqlSessionFactory 创建 SqlSession

③ 通过 sqlsession 执行数据库操作

④ 调用 session.commit()提交事务

⑤ 调用 session.close()关闭会话 

 四、MyBatis 与 Hibernate 有哪些不同 

Mybatis 和 hibernate 不同,它不完全是一个 ORM 框架,因为 MyBatis 需 要程序员自己编写 Sql 语句,不过 mybatis 可以通过 XML 或注解方式灵活配置 要运行的 sql 语句,并将 java 对象和 sql 语句映射生成最终执行的 sql,最后将 sql 执行的结果再映射生成 java 对象。      

Mybatis 学习门槛低,简单易学,程序员直接编写原生态 sql,可严格控制 sql 执行性能,灵活度高,非常适合对关系数据模型要求不高的软件开发,例如互联 网软件、企业运营类软件等,因为这类软件需求变化频繁,一但需求变化要求成 果输出迅速。但是灵活的前提是 mybatis 无法做到数据库无关性,如果需要实现 支持多种数据库的软件则需要自定义多套 sql 映射文件,工作量大。      

Hibernate 对象/关系映射能力强,数据库无关性好,对于关系模型要求高的软 件(例如需求固定的定制化软件)如果用 hibernate 开发可以节省很多代码,提 高效率。但是 Hibernate 的缺点是学习门槛高,要精通门槛更高,而且怎么设计 O/R 映射,在性能和对象模型之间如何权衡,以及怎样用好 Hibernate 需要具有 很强的经验和能力才行。

总之,按照用户的需求在有限的资源环境下只要能做出维护性、扩展性良好的软 件架构都是好架构,所以框架只有适合才是最好。

五、MyBatis 的一级缓存和二级缓存 

Mybatis 首先去缓存中查询结果集,如果没有则查询数据库,如果有则从 缓存取出返回结果集就不走数据库。Mybatis 内部存储缓存使用一个 HashMap,key 为 hashCode+sqlId+Sql 语句。value 为从查询出来映射生成的 java 对象

Mybatis 的二级缓存即查询缓存,它的作用域是一个 mapper 的 namespace,即在同一个 namespace 中查询 sql 可以从缓存中获取数据。二级缓存是可以跨 SqlSession 的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值