MyBatis Mapper中 @Select注解调用静态常量的问题分析

 更新时间:2023年06月06日 14:52:15   作者:java李杨勇  
在Java编码中,我们通常会把这些数字或者字符串定义在常量类或者接口中,可以直接在mapper中也可以使用这些常量就比较好,这篇文章主要介绍了MyBatis Mapper中 @Select注解调用静态常量,需要的朋友可以参考下

MyBatis Mapper中 @Select注解调用静态常量

Java项目在使用MyBatis技术,编写mapper SQL时,如果在其中的ognl表达式或者sql中直接使用一些数字或者字符串的话,会造成难以维护的问题。在Java编码中,我们通常会把这些数字或者字符串定义在常量类或者接口中,可以直接在mapper中也可以使用这些常量就比较好。MybBatis@Select注解标签直接编写SQL,也是支持这样的需求的。

Java方法变量:

包名:com.yt.nbdt.adcenter.controller.vo

 public static final String BELATE = "迟到";
 public static final String LEAVE_EARLY ="早退";
 public static final String LACK_OF_CARD = "缺卡";

mapper  @Select注解使用 

//根据用户姓名和月份统计用户上班缺卡次数
    @Select({
            "<script>",
            "select  count(1) from attendance_record  where 1=1  AND clock_in_res ='${@com.yt.nbdt.adcenter.controller.vo.AttendanceRecordVO@LACK_OF_CARD}'",
            "<if test='username != null'> and username = #{username}</if>",
            "<if test='attendanceTime != null'>and attendance_time like '%${attendanceTime}%' </if>",
            "</script>"
    })
    Integer getworkLackcardNum(@Param("username") String username, @Param("attendanceTime") String attendanceTime);

mybatis mapper.xml中使用静态方法或者静态常量 

静态方法

语法

${@全限定类名@方法名}

示例

  • 例1
<insert id="saveArticleLabel">
    INSERT INTO dcy_article_label(id, article_id, label_id)
    VALUES
    <foreach collection="labelIds" item="item" separator=",">
        ('${@com.baomidou.mybatisplus.core.toolkit.IdWorker@getId()}', #{articleId}, #{item})
    </foreach>
</insert>
  • 例2
<choose>
    // 需要静态方法返回true还是false
    <when test="@staticClass@staticMethod(args)">
         // 需要拼接的SQL
    </when>
</choose>
  • 例3
select
<include refid="Base_Column"/>
from xxx
where valid = 1
<if test="record.code != null and record.code.trim().length() > 0">
  and code ${@com.common.util.MapperHelp@getQuery("record.code",record.code)}
</if>
public class MapperHelp {
    public static String getQuery(String propertyField, String value) {
    	return "= 'xxx'";
    }
}

静态常量

语法

${@全限定类名@常量名}

示例

select
<include refid="Base_Column"/>
from xxx
where valid = ${@com.common.util.MapperHelp@VALID}
public class MapperHelp {
    public static final String VALID = "1";
}

到此这篇关于MyBatis Mapper中 @Select注解调用静态常量的问题分析的文章就介绍到这了,更多相关MyBatis Mapper静态常量内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java编程获取文件列表及子文件目录的方法(非递归)

    Java编程获取文件列表及子文件目录的方法(非递归)

    这篇文章主要介绍了Java编程获取文件列表及子文件目录的方法(非递归),具有一定参考价值,需要的朋友可以了解下。
    2017-10-10
  • MyBatis批量更新(update foreach)报错问题

    MyBatis批量更新(update foreach)报错问题

    这篇文章主要介绍了MyBatis批量更新(update foreach)报错问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • MyBatis特殊SQL的执行实例代码

    MyBatis特殊SQL的执行实例代码

    这篇文章主要给大家介绍了关于MyBatis特殊SQL执行的相关资料,文中通过实例代码和图文介绍的非常详细,对大家学习或者使用MyBatis具有一定的参考学习价值,需要的朋友可以参考下
    2023-01-01
  • SpringBoot之使用Redis实现分布式锁(秒杀系统)

    SpringBoot之使用Redis实现分布式锁(秒杀系统)

    这篇文章主要介绍了SpringBoot之使用Redis实现分布式锁(秒杀系统),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • 一篇文章带你了解Maven的坐标概念以及依赖管理

    一篇文章带你了解Maven的坐标概念以及依赖管理

    这篇文章主要为大家介绍了Maven的坐标概念以及依赖管理,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • 如何配置feign全局log

    如何配置feign全局log

    这篇文章主要介绍了如何配置feign全局log,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • Java集合中contains方法的效率对比分析

    Java集合中contains方法的效率对比分析

    这篇文章主要介绍了Java集合中contains方法的效率对比分析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • Java 中Object的wait() notify() notifyAll()方法使用

    Java 中Object的wait() notify() notifyAll()方法使用

    这篇文章主要介绍了Java 中Object的wait() notify() notifyAll()方法使用的相关资料,需要的朋友可以参考下
    2017-05-05
  • Java多线程之同步锁-lock详解

    Java多线程之同步锁-lock详解

    这篇文章主要为大家详细介绍了Java多线程中同步锁-lock的原理与使用,文中的示例代码讲解详细,对我们了解线程有一定帮助,需要的可以参考一下
    2022-10-10
  • java 如何查看jar包加载顺序

    java 如何查看jar包加载顺序

    这篇文章主要介绍了java 如何查看jar包加载顺序,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12

最新评论