zoukankan      html  css  js  c++  java
  • 使用mybatis的动态sql解析能力生成sql

    需求:

        计算平台,有很多表,打算提供一个基于sql的服务接口, sql不能完全在配置页面写死,  要能根据参数不同执行不同的语义,防止sql个数爆炸
    
    • 把mybatis原码down下来, 改造一下测试用例, 观察一下动态sql的原理

    • 可以看出IfSqlNode WhereSqlNode....这些sqlNode是解析xml文件得到的, 中间经过各种组合, 总不能再手动实现xml解析过程
      sqlSource.getBoundSql会根据入参自动计算ognl表达式,生成动态sql

    • 继续查看 XMLMapperBuilder, 这个可以自动解析xml, 但是mybatis依赖一些java pojo, 如果没有这些pojo,还能生成sql吗? 答案是肯定的

    总结:

    Q:如何把xml文本解析成各种sqlNode
    A: XMLMapperBuilder.parse自动生成各种sqlNode

    Q:没有java对象时如何使用动态解析的能力, 生成自定义sql
    A: XMLMapperBuilder指定sql文件位置,然后用mappedStatement.getBoundSql(...params).getSql()即可得到动态生成的sql
    后端只需要对每个sql生成一个xml字符串

  • 相关阅读:
    使用opencv显示视频的方法
    使用visual studio 2012 编译opencv2.4.9
    求前100个斐波那契数
    EXTJs前后台交互 常用哦3种方式
    spring 注解
    程序 人生
    ajaxs
    LNMP源码安装脚本
    系统状态统计和查看
    Shell中的${}、##和%%使用范例
  • 原文地址:https://www.cnblogs.com/yszzu/p/11005769.html
Copyright © 2011-2022 走看看