mybatis的由来

2019-05-07  本文已影响0人  不存在的里皮

mybatis原理深入解析

1. 连接池

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

javax.sql.DataSource之api学习

关于springboot 的默认数据源

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

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语句不同。
有时候表结构改了,那么我们就需要改多个地方,不利于维护。
解决问题:

总结

mybatis就是解决了以上问题

上一篇下一篇

猜你喜欢

热点阅读