美文网首页
mybatis的由来

mybatis的由来

作者: 不存在的里皮 | 来源:发表于2019-05-07 00:55 被阅读0次

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就是解决了以上问题

相关文章

网友评论

      本文标题:mybatis的由来

      本文链接:https://www.haomeiwen.com/subject/ojfsoqtx.html