MyBatis动态SQL支持

                  **MyBatis动态SQL支持**

MyBatis聚焦于SQL Mapping,支持动态SQL,这使得MyBatis很强大。当然针对不同的数据厂商会有特殊函数的情况,也可以使用动态SQL功能实现差异化调用。

一、XMLScriptBuilder解析配置
在SQL Mapping构建阶段会根据需要初始化一个XMLScriptBuilder的实例。XMLScriptBuilder会解析生成SqlSource对象。SqlSource需要一个重要的对象:SqlNode。XMLScriptBuilder的parseDynamicTags(XNode node)会解析配置文件来构建必要的SqlNode对象。SqlNode正是MyBatis的重要特性,即动态SQL的关键对象。(Ctrl+alt+h)

当XML节点类型为CDATA_SECTION_NODE和TEXT_NODE时,节点会被当做静态配置,其他节点则会被XMLScriptBuilder的处理器NodeHandler处理成动态的SqlNode。MyBatis用策略模式实现对配置文件中不同标签的解析,如下所示是动态SQL与处理器的映射关系。

private void initNodeHandlerMap() {
nodeHandlerMap.put(“trim”, new TrimHandler());
nodeHandlerMap.put(“where”, new WhereHandler());
nodeHandlerMap.put(“set”, new SetHandler());
nodeHandlerMap.put(“foreach”, new ForEachHandler());
nodeHandlerMap.put(“if”, new IfHandler());
nodeHandlerMap.put(“choose”, new ChooseHandler());
nodeHandlerMap.put(“when”, new IfHandler());
nodeHandlerMap.put(“otherwise”, new OtherwiseHandler());
nodeHandlerMap.put(“bind”, new BindHandler());
}
二、动态SQL配置
(1)trim标签

trim标签一般用于去除sql语句中多余的and关键字,逗号,或者给sql语句前拼接 “where“、“set“以及“values(“ 等前缀,或者添加“)“等后缀,可用于选择性插入、更新、删除或者条件查询等操作。
以下是trim标签中涉及到的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值