MyBatis Mapper中 @Select注解调用静态常量的问题分析
作者: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静态常量内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
