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创建文件夹及文件实例代码,需要的朋友可以参考一下
    2013-04-04
  • RabbitMQ中的Connection和Channel信道详解

    RabbitMQ中的Connection和Channel信道详解

    这篇文章主要介绍了RabbitMQ中的Connection和Channel信道详解,信道是建立在 Connection 之上的虚拟连接,RabbitMQ 处理的每条 AMQP 指令都是通过信道完成的,需要的朋友可以参考下
    2023-08-08
  • Java TreeMap排序算法实例

    Java TreeMap排序算法实例

    这篇文章主要介绍了Java TreeMap排序算法,结合实例形式分析了TreeMap排序算法的原理、实现方法与相关注意事项,需要的朋友可以参考下
    2017-07-07
  • java微信企业号开发之通讯录

    java微信企业号开发之通讯录

    这篇文章主要为大家详细介绍了java微信企业号开发之通讯录的相关资料,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • 新手了解java基础知识(二)

    新手了解java基础知识(二)

    这篇文章主要介绍了Java基础知识,本文介绍了Java语言相关的基础知识、历史介绍、主要应用方向等内容,需要的朋友可以参考下,希望对你有所帮助
    2021-07-07
  • Spring Data JPA系列QueryByExampleExecutor使用详解

    Spring Data JPA系列QueryByExampleExecutor使用详解

    这篇文章主要为大家介绍了Spring Data JPA系列QueryByExampleExecutor使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • MyBatis属性名和字段名配置不一致的解决

    MyBatis属性名和字段名配置不一致的解决

    在使用MyBatis进行持久化框架开发时,经常会遇到属性名和数据库字段名不一致的情况,本文主要介绍了MyBatis属性名和字段名配置不一致的解决,具有一定的参考价值,感兴趣的可以了解一下
    2024-06-06
  • Java之如何关闭流

    Java之如何关闭流

    这篇文章主要介绍了Java之如何关闭流问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • zookeeper实现分布式锁

    zookeeper实现分布式锁

    这篇文章主要为大家详细介绍了基于zookeeper实现分布式锁,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • 为何Java单例模式我只推荐两种

    为何Java单例模式我只推荐两种

    这篇文章主要给大家介绍了关于Java单例模式推荐的两种模式,文中通过示例代码介绍的非常详细,对大家学习或者使用Java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06

最新评论