
MyBatis八股文
MyBatis八股文
Java菜鸟、
努力学习java中
展开
-
MyBatis执行流程和延迟加载的原理
3.把order查询上来,然后调用user.setOrderList(List<Order>orderist),接着完成user.getOrderlist()方法的调用。2.当调用目标方法user.qetOrderlist0时,进入拦截器invoke方法,发现user.getOrderlist0是nul值,执行sql查询order列表。2.当调用目标方法时,进入拦截器invoke方法,发现目标方法是null值,执行sql查询3.获取数据以后,调用set方法设置属性值,再继续查询目标方法,就有值了。原创 2024-05-01 13:40:10 · 77 阅读 · 0 评论 -
MyBatis中的resultMap与resultType 是什么?如何使用?
ResultMap 的设计思想是,简单的语句不需要明确的结果映射,而复杂一点的语句只需要描述它们的关系就行了。当使用resultType做SQL语句返回结果类型处理时,对于SQL语句查询出的字段在相应的pojo(普通Java对象)中必须有和它相同的字段对应,而resultType中的内容就是pojo在本项目中的位置。ResultType适用于简单的查询,当查询结果较少且结构简单时比较方便,当返回POJO类的时候由于需要完全和数据库字段进行对应,存在不灵活、问题排查难等问题。1、resultType介绍。原创 2024-04-30 22:08:27 · 447 阅读 · 1 评论 -
MyBatis 中的 #{}和 ${} 的区别是什么?
2、Mybatis 在处理#(}时,会将 sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值。3、Mybatis 在处理${}时,就是把${}替换成变量的值。4、使用#{}可以有效的防止 SQL注入,提高系统安全性。1、#{}是预编译处理,${}是字符串替换。原创 2024-04-30 21:40:27 · 62 阅读 · 0 评论 -
MyBatis 中的一级缓存和二级缓存有什么区别?
一级缓存:基于 PerpetualCache 的 HashMap 本地缓存,其存储作用域为 Session,当Session进行增删改之后,该Session中的所有Cache(缓存)就将清空,默认打开一级缓存。1,对于缓存数据更新机制,当某一个作用域(一级缓存 Session/二级缓存Namespaces)的进行了新增、修改、删除操作后,默认该作用域下所有 select 中的缓存将被 clear。3,只有会话提交或者关闭以后,一级缓存中的数据才会转移到二级缓存中。Mybatis的一级、二级缓存的区别?原创 2024-04-30 21:30:54 · 108 阅读 · 0 评论