这个mybatis的@Select自己写sql还会被侵入怎么办?-灵析社区

老詹啊老詹

这种mapper里自己写的sql,我以为mybatis-plus不会侵入了,谁知还是被侵入了,运行时自动给我添加了个条件 @Mapper public interface MyMapper extends BaseMapperX { @Select({"select * from system_users where 1=1 and deleted = 0 and username = #{username} limit 1"}) List getUser(@Param("username") String username); } ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250103/0e404c32d8bd718537b53313b3b1cf6f.png) 请问大佬们,mybatis-pluse 下 怎么做自己的sql才不会被侵入

阅读量:299

点赞量:8

问AI
MyBatis-Plus通常不会侵入自定义SQL语句,但在某些情况下,可能会进行一些自动化的处理。如果你希望完全掌控自己的SQL语句,可以尝试以下方法: 使用@SelectProvider注解: 你可以使用@SelectProvider注解来指定自己的SQL提供器类,以便完全自定义SQL语句。首先,创建一个SQL提供器类,然后在提供器类中构建你的SQL语句。然后在Mapper接口方法上使用@SelectProvider注解引用提供器类。这样可以避免MyBatis-Plus对SQL的干预。 创建SQL提供器类: public class MyCustomSqlProvider { public String getUserSql(String username) { return "select * from system_users where username = #{username} limit 1"; } } 在Mapper接口中使用@SelectProvider注解: @Mapper public interface MyMapper extends BaseMapperX { @SelectProvider(type = MyCustomSqlProvider.class, method = "getUserSql") List getUser(@Param("username") String username); }