首页 > 数据库 >mybatis动态SQL

mybatis动态SQL

时间:2024-10-30 18:08:42浏览次数:1  
标签:Param customerId wr rel SQL mybatis entityId 动态 id

目前项目中写动态SQL,用的都是下面的语法:

@Select("<script>" +
            "SELECT wr.id,wr.customer_id,wr.type,wr.detail from xxx rel " +
            "LEFT JOIN xxx wr on rel.rule_id=wr.id where rel.entity_id=#{entityId} and wr.customer_id=#{customerId} " +
            "</script>")
    List<WarningRule> queryByEntityId(@Param("entityId") Integer entityId,@Param("customerId")Integer customerId);

有以下几种优化方式:
1、大括号形式,免去字符串拼接SQL时忘记空格导致的语法错误问题。

@Select({
    "<script>",
    "SELECT wr.id, wr.customer_id, wr.type, wr.detail",
    "FROM xxx rel",
    "LEFT JOIN xxx wr ON rel.rule_id = wr.id",
    "WHERE rel.entity_id = #{entityId}",
    "AND wr.customer_id = #{customerId}",
    "</script>"
})
List<WarningRule> queryByEntityId(@Param("entityId") Integer entityId, @Param("customerId") Integer customerId);

2、借助OGNL表达式,减少函数参数数量

OGNL(Object-Graph Navigation Language)是一种用于访问和操作对象图的表达式语言。它被广泛用于 Java 环境中,尤其是在 MyBatis 和其他框架中。OGNL 允许你以简洁的方式访问对象属性、调用方法以及进行逻辑运算。

@Select("SELECT * FROM users WHERE id = #{user.id}")
User getUser(@Param("user") User user);

标签:Param,customerId,wr,rel,SQL,mybatis,entityId,动态,id
From: https://www.cnblogs.com/xushengbin/p/18516335

相关文章

  • Mysql梳理11——聚合函数
    Mysql梳理11——聚合函数Mysql梳理11——聚合函数11.1引言11.2聚合函数介绍11.2.1什么是聚合函数11.2.2聚合函数类型11.2.3聚合函数语法11.3具体聚合函数11.3.1AVG和SUM函数11.3.2MIN和MAX函数11.3.3COUNT函数11.4GROUPBY11.4.1基本使用11.4.2使用多个列......
  • SpringBoot3.0整合Mybatis-plus实现多数据源(重构类方式)
    背景前段时间在做一个数据中台的项目,系统用到了不同数据库中的数据。自己又不想手写JDBC连接,既然我有这个需求,那功能应该有人实现了,于是开始了网上搜了,搜索后发现基本都是讲读写分离、主备切换的,后面也查略了Mybatis-plus的官网,里面有这个功能,但好像是我组件的版本之间不兼容,导致......
  • SQL Server创建用户只能访问指定数据库和视图
    我们在给数据库用户赋予权限时,有时候不想让该用户看到太多过程表和过程视图,这时就需要限定用户的访问权限第一步:创建用户创建数据库连接后,进入安全性——登录名,单击右键,新建登录名,并设置默认数据库第二步:设置用户映射点击用户映射,勾选指定要访问的数据库,数据库成员身份默认......
  • MySQL敏感数据进行加密的几种方法
    使用MySQL内置的加密函数AES_ENCRYPT和AES_DECRYPT函数方法介绍:AES(AdvancedEncryptionStandard)是一种对称加密算法。在MySQL中,可以使用AES_ENCRYPT函数对数据进行加密,使用AES_DECRYPT函数进行解密。这种加密方式的特点是加密和解密使用相同的密钥。示例:......
  • MySQL如何输出自己的AWR分析报告
    一、启用慢查询日志配置慢查询日志参数编辑MySQL配置文件(通常是my.cnf或my.ini),找到以下参数并进行设置。slow_query_log:将其设置为1以启用慢查询日志。例如:slow_query_log=1。long_query_time:定义查询执行时间的阈值,超过这个时间的查询会被记录到慢查询日志中。单......
  • (系列十)Vue3中菜单和路由的结合使用,实现菜单的动态切换(附源码)
    说明  该文章是属于OverallAuth2.0系列文章,每周更新一篇该系列文章(从0到1完成系统开发)。   该系统文章,我会尽量说的非常详细,做到不管新手、老手都能看懂。   说明:OverallAuth2.0是一个简单、易懂、功能强大的权限+可视化流程管理系统。友情提醒:本篇文章是属于系......
  • MYSQL索引相关
    原sqlSELECTid,user_id,package_id,term_id,source,type,order_id,code_record_id,created_at,updated_at,version,is_deletedASdeletedFROMtbl_purchased_packageWHERE(ter......
  • 动态规划题解报告
    Findacar注意到矩阵本质上是一个分形,即每次向右下复制当前矩阵,证明考虑归纳法。由此可以知道一个比较好的性质\(a_{i+k,j+k}=a_{i,j}\)其中\(k=2^n\),由于每次是复制加倍,所以横纵坐标都会加上一个\(2^n\),且每次增加的二次幂一定是横纵坐标二进制减一后没有的那一位(证明考虑......
  • SQL执行顺序及where、group by及having
    SQL执行顺序及where、groupby及having一、SQL的书写与执行顺序SQL语句书写顺序select、form、where、group by、having、select、orderby、limit SQL语句执行顺序from、where、group by、having、select、order by、limit当然如果有join,肯定优先级是join,接下来是from......
  • 明火识别视频分析服务器区域入侵智慧园区安防视频监控及动态布控预警方案
    智慧园区安防视频监控及动态布控预警方案是一种综合性的安全管理解决方案,它通过结合视频监控技术、人工智能算法、大数据分析等技术,实现视频分析服务器对工厂区域内人、车、物的全面监控和管理。一、需求和目标系统建设目标:搭建重点部位人脸识别动态布控系统平台,建立动态人脸......