您当前所在位置:幽门梗阻 > 病情诊断 > SQL模板神器

SQL模板神器

SqlTemplate-MyBatis

SqlTemplate-MyBatis是sql模板引擎,主要解决动态拼接sql字符串。原理是比较简单,把模板内容构建成完成的xml,这样可以解析成相关的数据结构,再结合Ognl强大表达式计算条件。设计上参考了MyBatis动态sql部分,为了减少学习成本,兼容Mybatis大部分用法。目前能支持以下标签:

if

choose(when,otherwise)

trim,where,set

foreach

一、快速开始TestpublicvoidtestIf(){Configurationconfiguration=newConfiguration();SqlTemplatetemplate=configuration.getTemplate("select*,${col}fromuserwhereiftest=id!=nullid=#{id}/if");HashMapString,Objectmap=newHashMapString,Object();map.put("col","name");map.put("id","11");map.put("b","b");SqlMetameta=template.process(map);System.out.println(meta);//如果你集成了springjdbc你可以这样使用//Listlist=jdbcTemplate.queryForList(meta.getSql(),meta.getParameter());}二、示例.1where条件TestpublicvoidtestWhere(){Configurationconfiguration=newConfiguration();SqlTemplatetemplate=configuration.getTemplate("select*fromuserwhereiftest=id!=nullandid=#{id}/ififtest=name!=nullname=#{name}/if/where");HashMapString,Objectmap=newHashMapString,Object();map.put("name","1fffdsfdf1");SqlMetaprocess=template.process(map);System.out.println(process);}.for循环TestpublicvoidtestForEach(){Configurationconfiguration=newConfiguration();SqlTemplatetemplate=configuration.getTemplate("select*fromuserwhereidinforeachitem=\"item\"index=\"index\"collection=\"list\"open=\"(\"separator=\",\"close=\")\"${item}${index}/foreach/where");HashMapString,Objectmap=newHashMapString,Object();HashMapString,Objectmap=newHashMapString,Object();map.put("11","11-11");map.put("","-");map.put("list",map);SqlMetaprocess=template.process(map);System.out.println(process);}.updateTestpublicvoidtestUpdate(){Configurationconfiguration=newConfiguration(false,Charset.defaultCharset());SqlTemplatetemplate=configuration.getTemplate("updatesys_task\n"+"set\n"+"iftest=\"updatedAt!=null\"\n"+"updated_at=#{updatedAt},\n"+"/if\n"+"iftest=\"taskStatus!=null\"\n"+"task_status=#{taskStatus},\n"+"/if\n"+"iftest=\"taskMsg!=null\"\n"+"task_msg=#{taskMsg},\n"+"/if\n"+"/set\n"+"whereid=#{id}");HashMapString,Objectmap=newHashMapString,Object();map.put("id",1);map.put("taskStatus","1");SqlMetaprocess=template.process(map);System.out.println(process);}.4insertTestpublicvoidtestInsert(){Configurationconfiguration=newConfiguration(false,Charset.defaultCharset());SqlTemplatetemplate=configuration.getTemplate("insertintosys_mail\n"+"trimprefix=\"(\"suffix=\")\"suffixOverrides=\",\"\n"+"iftest=\"mailSenderId!=null\"\n"+"mail_sender_id,\n"+"/if\n"+"iftest=\"mailSenderName!=null\"\n"+"mail_sender_username,\n"+"/if\n"+"iftest=\"mailSenderHost!=null\"\n"+"mail_sender_host,\n"+"/if\n"+"iftest=\"mailSenderUsername!=null\"\n"+"mail_sender_username,\n"+"/if\n"+"iftest=\"mailSenderPassword!=null\"\n"+"mail_sender_password,\n"+"/if\n"+"iftest=\"mailSenderFrom!=null\"\n"+"mail_sender_from,\n"+"/if\n"+"/trim\n"+"trimprefix=\"values(\"suffix=\")\"suffixOverrides=\",\"\n"+"iftest=\"mailSenderId!=null\"\n"+"#{mailSenderId},\n"+"/if\n"+"iftest=\"mailSenderName!=null\"\n"+"#{mailSenderName},\n"+"/if\n"+"iftest=\"mailSenderHost!=null\"\n"+"#{mailSenderHost},\n"+"/if\n"+"iftest=\"mailSenderUsername!=null\"\n"+"#{mailSenderUsername},\n"+"/if\n"+"iftest=\"mailSenderPassword!=null\"\n"+"#{mailSenderPassword},\n"+"/if\n"+"iftest=\"mailSenderFrom!=null\"\n"+"#{mailSenderFrom},\n"+"/if\n"+"/trim");HashMapString,Objectmap=newHashMapString,Object();map.put("mailSenderId",1);map.put("mailSenderFrom","zhangsan");SqlMetaprocess=template.process(map);System.out.println(process);}三、鸣谢

部分代码摘自mybatis

Mybatis语法请参考MyBatis

四、源码地址




转载请注明:http://www.zpwkh.com/bqzd/14696.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了

  • 当前时间: