美文网首页
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