字符串中占位符替换-mybatis学习笔记

  1. 编写TokenHandler实现类(从输入参数中获取value替换sql中的占位符,这里使用Map<String,String>承载)
    private static class VariableTokenHandler implements TokenHandler {
      private Map<String, String> variables = new HashMap<>();
      private VariableTokenHandler(Map<String, String> variables) {
          this.variables = variables;
      }
      @Override
      public String handleToken(String content) {
          String value = variables.get(content);
          if (StringUtils.isEmpty(value)){
              return null ;
          }else {
              return "'"+value+"'" ;
          }
      }
    }
    
  2. 整理输入参数到Map<String,String>对象中
    Map<String,String> params = new HashMap<>() ;
    params.put("name","zhangsan") ;
    params.put("age","18") ;
    
  3. 编写字符串模板
    String sqlTemplate = "insert into user(username,age,sequence) values(${name},${age},myseq.nextval)" ;
    
  4. 根据输入参数和字符串模板替换
    VariableTokenHandler handler = new VariableTokenHandler(params);
    // 替换sql模板中的${xxx}占位符
    GenericTokenParser parser = new GenericTokenParser("${", "}", handler);
    String retContent = parser.parse(sqlTemplate);
    
  5. 输出结果
    System.out.println(retContent);
    // 输入结果:
    insert into user(username,age,sequence) values('zhangsan','18',myseq.nextval)
    
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值