当前位置 博文首页 > xinyi_java的博客:##走过路过不要错过之##JavaEE 框架篇二 MyBa

    xinyi_java的博客:##走过路过不要错过之##JavaEE 框架篇二 MyBa

    作者:[db:作者] 时间:2021-09-04 15:44

    目录???????

    Mybatis 框架简介???????

    MyBatis 中# 和 $ 的区别?

    Mybatis 和 Hibernate 的区别

    Mybatis 缓存?

    Mybatis 里多对多如何处理? 举个多对多的例子?

    MyBatis 执行流程


    Mybatis 框架简介

    • Mybatis框架也是一个持久层框架,我们目前做的这个及格项目就是用的这个框架,我觉得相对对于以前的hibernate来说比较简单把,把sql语句写在配置文件里,解除了代码和sql语句的耦合度,写一些复杂的查询比较灵活。

    MyBatis 中# 和 $ 的区别?

    • 这两个符号一般是在使用Mybatis编写底层SQL语句时使用,#就是一个占位符,具体的使用是#{id},而$是一个原样输出的标识,是${value},我在项目里一直是使用#,因为这样可以防止Sql注入,安全性高

    Mybatis 和 Hibernate 的区别

    • Hibernnate一个是全封装,mybatis是半封装,使用hibernate做表单查询操作的时候比较简单(因为hibernate是针对对象进行操作的),但是多表查询起来就比较繁琐了,比如说5张表,十张表做关联查询,就算是有SQLquery那后续的维护工作也比较麻烦,还有就是Hibernate在Sql优化上执行效率上回远低于mybatis(因为hibernate会把表中所有的字段查询出来,比较消耗性能),我们以前在做传统项目方面用过hibernate,但是现在基本上都在用mybatis

    Mybatis 缓存?

    • mybatis一级缓存是SqlSession级别的缓存,默认支持一级缓存,不需要再配置文件去配置。

    • mybatis的二级缓存是mapper范围几倍,除了在SqlMapConfig.xml设置二级缓存的总开关<settingname='cacheEnabled'value='true'/>,还要在具体的mapper.xml中开启二级缓存:<mappernamespace='cn.hpu.mybatis.mapper.UserMapper'>

    Mybatis 里多对多如何处理? 举个多对多的例子?

    • 比如说学生表和课程表,一个学生可以选择多门课程,一门课程能被多个学生选择,这两张表的关系就是多对多的关系,怎么处理多对多的情况?遇到这种情况我们得创建一张中间表,关联后就是课程表对桥表就是一对多,学生表对桥表也是一对多,就可以了

    MyBatis 执行流程

    【待完善】

    cs