栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mybatis 自动构造SQL学习

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mybatis 自动构造SQL学习

Mybatis 自动构造SQL学习
输出均为

select count(*) from users u where u.id in
         (      
            1  
         ,     
            2  
         ,     
            3  
         ,     
            4  
         ,     
            5  
         )

三种方式

import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import org.apache.ibatis.builder.xml.XMLMapperBuilder;
import org.apache.ibatis.builder.xml.XMLMapperEntityResolver;
import org.apache.ibatis.mapping.BoundSql;
import org.apache.ibatis.mapping.SqlSource;
import org.apache.ibatis.parsing.XNode;
import org.apache.ibatis.parsing.XPathParser;
import org.apache.ibatis.scripting.xmltags.XMLLanguageDriver;
import org.apache.ibatis.session.Configuration;
import org.junit.jupiter.api.Test;

import java.io.ByteArrayInputStream;
import java.util.List;
import java.util.Map;


class LanguageDriverRegistryTest2 {

  @Test
  void registerByInstanceNull() {
    String sql = "";

    Configuration configuration = new Configuration();
    LanguageDriver languageDriver = new XMLLanguageDriver();
    SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, Object.class);
    Map map = Maps.newHashMap();
    map.put("ids", Lists.newArrayList(1, 2, 3, 4, 5));
    BoundSql boundSql = sqlSource.getBoundSql(map);
    System.out.println(boundSql.getSql());
  }

  @Test
  void XMLMapperBuilder() {
    String sql = "n" +
      "n" +
      "n" +
      "       n" +
      "    select count(*) from users u where u.id inn" +
      "            n" +
      "            ${item}  n" +
      "        n" +
      "    n" +
      "";

    Configuration configuration = new Configuration();
    XMLMapperBuilder xmlMapperBuilder = new XMLMapperBuilder(new ByteArrayInputStream(sql.getBytes()),
      configuration, "", configuration.getSqlFragments());
    xmlMapperBuilder.parse();
    Map map = Maps.newHashMap();
    map.put("ids", Lists.newArrayList(1, 2, 3, 4, 5));
    BoundSql boundSql = configuration.getMappedStatement("query").getBoundSql(map);
    System.out.println(boundSql.getSql());


  }

  @Test
  void XMLMapperBuilder2() {
    String sql = "n" +
      "n" +
      "n" +
      "    n" +
      "";

    Configuration configuration = new Configuration();
    XPathParser parser = new XPathParser(new ByteArrayInputStream(sql.getBytes()),
      true, configuration.getVariables(), new XMLMapperEntityResolver());
    XNode xNode = parser.evalNode("/mapper");
    List xNodes = xNode.evalNodes("select|insert|update|delete");
    LanguageDriver languageDriver = new XMLLanguageDriver();
    SqlSource sqlSource = languageDriver.createSqlSource(configuration, xNodes.get(0), Object.class);
    Map map = Maps.newHashMap();
    map.put("ids", Lists.newArrayList(1, 2, 3, 4, 5));
    BoundSql boundSql = sqlSource.getBoundSql(map);
    System.out.println(boundSql.getSql());
  }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/659074.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号