MyBatis在注解中使用动态查询

以前为了使用注解并在注解中融入动态查询,会使用Provider。后来发现只要加入"<script>包含动态查询的SQL语句</script>"就可以了。

例如:

sql 复制代码
    @Select("<script>" +
            "select  v.*,u.avatar,u.nickname from videos v join users u on v.uid = u.id " +
            "<where>" +
            "<if test= \'keyword!=null and keyword!=\"\" \' >" +
            " v.video_desc like '%${keyword}%'" +
            "</if> " +
            "and v.status = 1 " +
            "</where>" +
            "order by v.create_time desc"+
            "</script>")
    public List<UserVideosResp> getAllVideosByKeyword(String keyword);

需要提示两点的是:

  1. SQL语句是使用字符串的拼接形成的,要特别注意组成SQL语句的字符串后面是不是有足够的空格。字符串拼接出来的SQL是不是符合SQL应有的语法格式。
  2. <if test='...'> if标签写在test属性中的判定条件必须用引号包裹,否则会产生错误。
相关推荐
CodeOfCC19 分钟前
c语言 封装跨平台线程头文件
linux·c语言·windows
momo卡1 小时前
MinGW-w64的安装详细步骤(c_c++的编译器gcc、g++的windows版,win10、win11真实可用)
c语言·c++·windows
bing_15810 小时前
跨多个微服务使用 Redis 共享数据时,如何管理数据一致性?
redis·微服务·mybatis
南林yan13 小时前
DLL动态库实现文件遍历功能(Windows编程)
windows
Mike_66613 小时前
win10安装WSL2、Ubuntu24.04
windows·ubuntu·wsl2
云之兕13 小时前
MyBatis 的动态 SQL
数据库·sql·mybatis
liulun14 小时前
Skia如何绘制几何图形
c++·windows
old_power14 小时前
UCRT 和 MSVC 的区别(Windows 平台上 C/C++ 开发相关)
c语言·c++·windows
扛枪的书生14 小时前
AD 提权-CVE-2022-26923: CertiFried
windows·渗透·kali·提权·域渗透
面朝大海,春不暖,花不开16 小时前
Python 文件操作与输入输出:从基础到高级应用
windows·python·microsoft