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静态常量内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
MyBatis批量更新(update foreach)报错问题
这篇文章主要介绍了MyBatis批量更新(update foreach)报错问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-08-08SpringBoot之使用Redis实现分布式锁(秒杀系统)
这篇文章主要介绍了SpringBoot之使用Redis实现分布式锁(秒杀系统),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2021-04-04Java 中Object的wait() notify() notifyAll()方法使用
这篇文章主要介绍了Java 中Object的wait() notify() notifyAll()方法使用的相关资料,需要的朋友可以参考下2017-05-05
最新评论