当前使用版本(必填,否则不予处理)
3.4.3.4
该问题是如何引起的?(确定最新版也有问题再提!!!)
我们现在的数据库有主从集群,由于业务原因需要在某些场景下指定读写的集群。数据库厂商提供的语法是在常规 SQL 前面加上注释:
/*FORCE MASTER*/ SELECT...
在自定义 XML 的场合下当然很好实现,但业务上有很多直接使用 BaseMapper/Service 的读写),我们肯定不希望把所有读写方法都自行用 XML 实现一遍。
请问现在是否有办法让这些语句在必要的场景下(即并非所有场景)加上这种类型的前缀?
Comment From: miemieYaho
没有
Comment From: Muyangmin
可以考虑加入这种feature吗?
---原始邮件--- 发件人: @.> 发送时间: 2021年11月22日(周一) 中午11:51 收件人: @.>; 抄送: @.**@.**>; 主题: Re: [baomidou/mybatis-plus] 如何给BaseMapper的 SELECT 语句指定前缀 (Issue #4065)
没有
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android.
Comment From: miemieYaho
不考虑,参考文档重写默认注入sql的对应class
Comment From: kamjin1996
你可以在main下使用包路径覆盖mp注入sql的class,打包会优先采取覆盖的class,然后在实体类class上用自定义注解标识前缀,在覆盖的class里读取处理
Comment From: Muyangmin
@miemieYaho @kamjin1996 感谢指点。我对源码了解不多,参考了一下继承 AbstractMethod 的方式,的确能注入方法,但似乎都是在程序启动时就固化了方法的逻辑?怎样在每次执行的时候根据当前的状态(Spring Bean, 方法参数等)来修改逻辑呢?
Comment From: kamjin1996
其实含义就是让你改源码,找到生成最终sql的方法,修改他为你自己的逻辑,修改方式就用class覆盖 仅此而已