人生倒计时
- 今日已经过去小时
- 这周已经过去天
- 本月已经过去天
- 今年已经过去个月
MyBatis-Plus被网友推荐好用,它可以解决多表关联的问题吗?
MyBatis-Plus之所以被网友称赞,不仅仅是因为他为了简化而生,为了提高效率而开发,而是因为他可以解决多表关联的问题。
众所周知,mybatis plus 封装的 mapper 不支持 join,如果需要支持就必须自己去实现。但是对于大部分的业务场景来说,都需要多表达 join,要不然就没必要采用关系型数据库了。那么有没有一种不通过硬 SQL 的形式,通过框架提供 join 能力呢?答案是,可以有。
深度分析面对复杂需求,关键在于解决三个核心问题:数据源配置、管理与 ORM 框架的无缝集成。在考虑了现有的解决方案后,Mybatis-plus提供了灵活的自定义选项,如通过 AOP(面向切面编程)结合 ThreadLocal 实现动态数据源切换,例如动态数据源动态管理(Dynamic-datasource)组件。
mybatis plus兼容mybatis的相关配置和使用方式,除了generator不同。新项目可以根据项目情况使用,旧项目那就不用折腾了。运行的项目通常情况下稳定第一。新项目如果由你全权负责后端,你想用哪个就用哪个,如果团队,就得讨论一下。作为个人开发者,那不是屁话,两个必须要会。项目上可以优先plus。
mybatis-plus是对mybatis的增强,不是替代。从某种程度上来说,可以完全替代dao和mapper 使用LambdaQueryWrapper可以避免实体和数据对应关系写错,推荐使用。
MyBatis-Plus中如何使用ResultMap
1、下面简单看下源码, @ResultMap(mybatis-plus_实体类名) 怎么来的。详情见: com.baomidou.mybatisplus.core.metadata.TableInfo#initResultMapIfNeed()注意看上面的字符串 id 的构成,你应该可以明白。
2、map作为参数,如果一个表有很多列,但是我查询语句只需要用到其中的一个列,如果让实体类作为参数可能会不太方便,使用map作为参数,然后将需要用到的列的字段作为key,put相应的值就能解决这个问题。map作为结果集来接收,这个时候要使用到一个属性resultMap,然后配合resultMap标签使用。
3、方法/步骤 现在数据库的结果是员工表中有部门表的外键。
4、MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,但是resultType跟resultMap不能同时存在。
mybatisplus是什么
1、MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
2、MyBatis Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。就像 魂斗罗 中的 1P、2P,基友搭配,效率翻倍。特性:无侵入 :只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑。
3、MyBatis-plus是完全基于MyBatis开发的一个增强工具,是在MyBatis的基础上做增强的框架,为简化开发、提高效率而生。它在MyBatis原本的框架上增加了很多实用性功能,比如乐观锁插件、字段自动填充功能、分页插件、条件构造器、sql 注入器等等。
4、MyBatis-plus是一款Mybatis增强工具,用于简化开发,提高效率。
5、mybatis plus兼容mybatis的相关配置和使用方式,除了generator不同。新项目可以根据项目情况使用,旧项目那就不用折腾了。运行的项目通常情况下稳定第一。新项目如果由你全权负责后端,你想用哪个就用哪个,如果团队,就得讨论一下。作为个人开发者,那不是屁话,两个必须要会。项目上可以优先plus。
6、总结:Mybatis-plus的多数据源设计巧妙地整合了多个数据库操作,同时处理事务管理与高级特性。通过AOP和动态数据源管理,巧妙地解决了单数据源框架的集成难题,但需注意事务一致性与嵌套切换等问题。
【MyBatis-Plus】逻辑删除
1、以下是mybatis忽略映射字段的方法:TableField(exist = false):表示该属性不为数据库表字段,但又是必须使用的。TableField(exist = true):表示该属性为数据库表字段。