首页 > 移动平台 > 详细

转载:MyBatis mapper.xml中使用静态常量或者静态方法

时间:2019-08-06 17:16:05      阅读:291      评论:0      收藏:0      [点我收藏+]

 

 

 

 

转自:https://my.oschina.net/wtslh/blog/682704

 

    今天偶然之间刷到了这样一篇博客,有点意外 mybatis 还可以这样使用ONGL常量的方式,该方式针对 xml的mybaits.xml 文件下的 类似include方式 可以在完全弃用mybatis.xml文件的方式更好的一种替换,示例如下:

技术分享图片

 

 正常我们在其他地方进行引用时,使用以下标签:

技术分享图片

但是我在 接下来的项目中,我使用springboot + mybatisplus 时,基本上摈弃了 配置文件的方式,所以我最开始选择了,我自定义常量,类似这样:

技术分享图片

我最开始在程序中通过 传入参数的方式来进行配置查询只是我自己常用的列属性

技术分享图片

看到这边博客之后我发现我自己直接使用常量类来进行OGNL表达式的映射,然后直接获取到我的查询的列,这样可以更好地避免了sql注入。

下面的内容都是引用转自的博客:

使用MyBatis技术,书写mapper.xml时,如果在其中的ognl表达式或者sql中直接使用一些数字或者字符串的话,会造成难以维护的问题。

在Java编码中,我们通常会把这些数字或者字符串定义在常量类或者接口中,如果在mapper.xml中也可以使用这些常量就比较好了。

还好MybBatis是支持这样的需求的。

ongl中:

比如我有一个工具类com.wts.test.DateUtil,其中有一个方法isLeapYear(int year),用于判断某年是否闰年。而在mapper的某个select中要根据是否闰年执行不同的查询。可以类似这样:

<if test="@com.wts.test.DateUtil@isLeapYear(year)==true">
  select * from tableA
</if>
<if test="@com.wts.test.DateUtil@isLeapYear(year)==false">
  select * from tableB
</if>

如果要使用常量的话,假设有常量类和常量Constant.CURRENT_YEAR:

<if test=year==@com.wts.test.Consant@CURRENT_YEAR>
  select * from tableC
</if>

 sql中:

使用静态方法:

<select id=‘testSelectA‘ .....>
  select * from tableA where year=${@com.wts.test.DateUtil@getYear()}
</select>

使用静态常量:

<select id=‘testSelectB‘ .....>
  select * from tableA where year=${@com.wts.test.Constant@CURRENT_YEAR}
</select>

以上。转载请指明出处:http://my.oschina.net/u/1758971/blog/682704

转载:MyBatis mapper.xml中使用静态常量或者静态方法

原文:https://www.cnblogs.com/853423194hly/p/11310243.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!