转自: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

最新文章

  1. Linux 文件压缩与归档
  2. 深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接(转)
  3. HDU 5183 Negative and Positive (NP) --Hashmap
  4. css基础样式四
  5. HTML5部分新标签属性及DOM扩展元素
  6. 关于C#的内存释放问题
  7. python中try except执行顺序
  8. 基于VC的ACM音频编程接口压缩Wave音频(二)
  9. 【NOIP合并果子】uva 10954 add all【贪心】——yhx
  10. Spring Boot 以 jar 包方式运行在后台
  11. [Oracle] 中的Temporary tablespace的作用
  12. GridView中使用如下button OnClientClick代码会出现解析错误
  13. Linux下让tomcat显示图片(jdk1.4, tomcat4.0 或更高版本)
  14. xshell + xmanger连接centos gnome+ kde桌面 for需要X window的App
  15. MySQL - 主从复制及读写分离原理
  16. python中eval, exec, execfile,和compile [转载]
  17. home目录迁移至新分区
  18. JVM学习--(五)垃圾回收器
  19. 调整Eclipse中代码字体字号
  20. getQueryString.js

热门文章

  1. 并发编程-concurrent指南-阻塞队列-链表阻塞队列LinkedBlockingQueue
  2. 蓝桥杯:合并石子(区间DP+平行四边形优化)
  3. c++学习书籍推荐《深度探索C++对象模型》下载
  4. C语言学习书籍推荐《C陷阱与缺陷》下载
  5. 关于int和integer
  6. sql server 2008 NULL值
  7. 使用R语言预测产品销量
  8. python爬虫笔记之re.compile.findall()
  9. python基础知识四 小数据池,深浅拷贝,集合+菜中菜
  10. Ubuntu搭建hugo博客