博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mybatis Sql片段的应用
阅读量:6210 次
发布时间:2019-06-21

本文共 1663 字,大约阅读时间需要 5 分钟。

Markdown

在一个查询里,针对各种不同数据库,有时候只是一部分 SQL 是不相同的,为避免相同的部分复制多次,所以将不相同的部分进行适当的隔离,再重用就可以了。

在 MyBatis 里声明两段 片段,它们分别对应不同数据库:

可以发现,id 属性的值是相同的,而 databaseId 不同。在引用时将该 id 值赋给 include 的 refid,这样 MyBatis 就可以根据数据库的不同来选择相符的 Sql 片段。

为主 SQL 先声明好 引用:

接下来完整配置步骤如下:

为 MyBatis 准备好基础配置(mybatis.cfg.xml)

sqlserver
db2
oracle
mysql
h2
postgresql
dialect=sqlserver

配置好 PropertiesFactoryBean 和 VendorDatabaseIdProvider,然后为 SqlSessionFactoryBean 的 databaseIdProvider 属性加上 ref 引用。

在 Mapper 的 xml 文件里就可以应用 Sql 片段了(IOrgGradeCategoryDao.xml)

and orgGradeCategoryName like '%' + #{orgGradeCategoryName} + '%'
and orgGradeCategoryName like '%' || #{orgGradeCategoryName} || '%'

上述代码已针对 sqlserver 和 postgresql 两个数据库声明了 Sql 片段,在运行时,Mybatis 会根据数据库的不同而自行选择执行合适的片段。

转载于:https://www.cnblogs.com/ramantic/p/7523807.html

你可能感兴趣的文章
七牛js-sdk上传文件到服务器
查看>>
数据仓库入门(实验5)添加维度
查看>>
解决服务器复制中SID冲突问题
查看>>
OSSIM Server和Sensor间通讯问题
查看>>
两个相似SQL的查询结果,以前未曾注意
查看>>
从VMware ESX Server 4升级到ESXi 5
查看>>
马化腾重组腾讯架构,扎根中国放眼世界
查看>>
在Hyper-V主机中支持VLAN
查看>>
VMM2012应用指南之1-实验环境概述与准备
查看>>
《Oracle AWR与ASH性能报告深入解析》-核心参数详解-手操-图文
查看>>
用大数据处理思路保护数据
查看>>
还是分了的好——看惠普、赛门铁克拆分
查看>>
yum和编译两种方式升级or降级Centos内核
查看>>
Android消息处理机制Looper和Handler详解
查看>>
C# 设置IE Cookie 从而实现自动打开需要登录的页面
查看>>
Android拓展系列(2)--Git使用
查看>>
脚踏实地,不要飘忽不定
查看>>
A Resegmentation Approach for Detecting Rectangular Objects in High-Resolution Imagery
查看>>
郁闷的时候干脆休息
查看>>
sql语句查询Oracle|sql server|access 数据库里的所有表名,字段名
查看>>