JAVA使用mybatis执行sql脚本,怎么获取sql脚本的查询结果

…………Class.forName(driver).newInstance();Connectionconn=(Connection)DriverManager.getC... …………
Class.forName(driver).newInstance();
Connection conn = (Connection) DriverManager.getConnection(url, username, password);
ScriptRunner runner = new ScriptRunner(conn);
runner.runScript(Resources.getResourceAsReader("test.sql"));
conn.close();
其实我想问的是,执行test.sql脚本后,怎么直接获取test.sql里select * from table的数据
展开
 我来答
hhxlyl
推荐于2017-12-15 · TA获得超过392个赞
知道小有建树答主
回答量:380
采纳率:100%
帮助的人:433万
展开全部
<select id="DAO接口方法名称" parameterType="参数类型" resultType="返回结果类型">
 select * from 表 where 。。。
</select>

resultType 可以是任意Object对象,如果多条数据,这这个方法返回的是List<Object?>,

如果确认是单条数据,可以直接 Object? ***(**); 。


没有封装成对象时,默认返回的是List<Map<字段名称String,列值Object>>这样的数据。

Dao接口:
List<Map<String,Object>> list(Integer id);
SQL:
<select id="list" parameterType="Integer" resultType="Map">
select * from aaa 
<where>
<if test="null!=id">
 id &gt;#{id}
</if>
</where>
</select>
以上示例中表示查询id>某个数值的所有结果,返回类型为MAP

 


执行脚本后没有返回结果的吧,看ScriptRunner源码,没有提供任何返回结果的。

private void executeStatement(String command) throws SQLException, UnsupportedEncodingException {
    boolean hasResults = false;
    Statement statement = connection.createStatement();
    statement.setEscapeProcessing(escapeProcessing);
    String sql = command;
    if (removeCRs)
      sql = sql.replaceAll("\r\n", "\n");
    if (stopOnError) {
      hasResults = statement.execute(sql);
    } else {
      try {
        hasResults = statement.execute(sql);
      } catch (SQLException e) {
        String message = "Error executing: " + command + ".  Cause: " + e;
        printlnError(message);
      }
    }
    printResults(statement, hasResults);
    try {
      statement.close();
    } catch (Exception e) {
      // Ignore to workaround a bug in some connection pools
    }
  }
  
  ...
  
有结果时,最后调用了这个方法打印出来而已。
private void print(Object o) {
    if (logWriter != null) {
      logWriter.print(o);
      logWriter.flush();
    }
  }
 
 你可以调用
public void setLogWriter(PrintWriter logWriter) {
    this.logWriter = logWriter;
  }
  传入你自己的Writer。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式