前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mybatis的由来

mybatis的由来

作者头像
平凡的学生族
发布2019-05-25 09:27:22
6950
发布2019-05-25 09:27:22
举报
文章被收录于专栏:后端技术后端技术

mybatis原理深入解析

1. 连接池

JDBC、C3P0、DBCP、Druid 数据源连接池使用的对比总结

  • JDBC
  • 为什么会有连接池的存在?避免频繁创建、销毁连接,影响效率。
  • datasource

javax.sql.DataSource之api学习

  • datasource注释解析

关于springboot 的默认数据源

  • 连接池技术中HikariCP > boneCP > c3p0。它有快速,对异常响应快等优点。使其被作为springboot的默认连接池。
  • 讲述了HikariCP为何好
  • HikariCP与druid对比

JNDI学习总结(一)——JNDI数据源的配置

  • jndi与datasource的关系 JNDI将名字与对象绑定在一起。对象提供特定的服务,比如数据源。JNDI会将导向不同数据库的datasource与一个名字绑定在一起,用户可根据名字找到对应数据库的datasource对象。

2. SQL统一存取

SQL散落在程序四周,不利于维护。 可以将SQL以key-value的行式统一存储,以key索取SQL即可。可以把它们事先存在配置文件中,再加载到内存。这就涉及到SQL语句的加载问题

3. 参数映射

传入参数可以通过占位符的方式,拼凑SQL语句,但受到参数数量不定的制约。 因此,可以用#变量名来引入变量。

4. 结果优化

查询结果优化: 执行SQL语句后,返回的是一个ResultSet结果集。这时我们需要将ResultSet对象的数据取出来,不然等到释放资源时就取不到这些结果信息了。 一般对执行结果的有哪些处理:

  1. 不做任何处理就直接返回
  2. 将结果转换成一个JavaBean对象/Map/List返回 所以,我们可以让框架自动把ResultSet转换为需要的类型。为此需要告诉SQL处理器:
  3. 需要返回什么类型的对象
  4. 需要返回的对象的数据结构怎么跟执行的结果映射

5. 缓存

可以缓存重复的SQL执行结果,不必次次都访问数据库(但实际上缓存功能往往是多余的,因为还不如交给redis做)。 为了实现缓存,可以维护一个key-value对,SQL语句和传入参数两部分合起来可以作为数据缓存的key值, value是查询结果。

6. 重复SQL语句问题

问题描述: 由于我们将所有SQL语句都放到配置文件中,这个时候会遇到一个SQL重复的问题,几个功能的SQL语句其实都差不多,有些可能是SELECT后面那段不同、有些可能是WHERE语句不同。 有时候表结构改了,那么我们就需要改多个地方,不利于维护。 解决问题:

  • 当我们的代码程序出现重复代码时怎么办?将重复的代码抽离出来成为独立的一个类,然后在各个需要使用的地方进行引用。
  • 对于SQL重复的问题,我们也可以采用这种方式,通过将SQL片段模块化,将重复的SQL片段独立成一个SQL块,然后在各个SQL语句引用重复的SQL块,这样需要修改时只需要修改一处即可。

总结

mybatis就是解决了以上问题

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.05.07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 连接池
  • 2. SQL统一存取
  • 3. 参数映射
  • 4. 结果优化
  • 5. 缓存
  • 6. 重复SQL语句问题
  • 总结
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档