mybatis 查询数据库返回值某字段是 List 该怎么搞
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis 查询数据库返回值某字段是 List 该怎么搞相关的知识,希望对你有一定的参考价值。
<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 >#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。 参考技术A
解决方法:如果确认是单条数据,可以直接 Object? ***(**); 。没有封装成对象时,默认返回的是List<Map<字段名称String,列值Object>>这样的数据。Dao接口:
List<Map<String,Object>> list(Integer id);
SQL:
<select id="list" parameterType="Integer" resultType="Map">。
拓展:
1、MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。iBATIS一词来源于"internet"和"abatis"的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(sDAO)。
2、MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
关于mybatis查询集合返回为[null]的问题
最近项目当中做功能遇到查询集合list为null,判非空却还是进入了非空的判断里面,后面才知道sql查询中
如果你是查询几个字段,必须加上不为空,否则sql查询前面的值是有值得,只是恰巧你查询的字段为Null
在此记录一下
以上是关于mybatis 查询数据库返回值某字段是 List 该怎么搞的主要内容,如果未能解决你的问题,请参考以下文章
mybatis 查询数据库返回值某字段是 List 该怎么搞
mybatis 查询数据库返回值某字段是 List 该怎么搞
mybatis返回一个count加一个字段该怎么设置返回resultType