mybatis 查询数据库返回值某字段是 List 该怎么搞

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis 查询数据库返回值某字段是 List 该怎么搞相关的知识,希望对你有一定的参考价值。

参考技术A <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。本回答被提问者采纳
参考技术B 八阵图(杜甫)

基于注解的mybatis插入一条数据如何返回这条数据的对象或者他的id?

很奇怪,使用xml配置文件可以获得id或者对象,使用注解就不知道怎么弄了,而且mapper接口返回的竟然是1,估计应该返回的是受影响的行,即插入的行数??

参考技术A

参考技术B 直接在插入语句后面,写上select的语句就可以了啊。这个对象的主键是自动生成吗。如果是mysql里,是select max(id);否则,可以根据刚刚插入的标识字段进行查询。追问

如果多个用户同时操作的话,查询max(id)应该就是错误的吧,如果通过刚插入的标识字段查询是不是又要单独发送一次sql查询了?

追答

不会的。事物的操作具有原子性。要么全都执行,要么全都不执行

本回答被提问者和网友采纳
参考技术C 对比一下生成的SQL看看哪里缺少了追问

生成的sql当然只是insert into ...看不出返回值是什么,那个Mapper接口我自己写的返回值是int

以上是关于mybatis 查询数据库返回值某字段是 List 该怎么搞的主要内容,如果未能解决你的问题,请参考以下文章

mybatis 查询数据库返回值某字段是 List 该怎么搞

mybatis 查询数据库返回值某字段是 List 该怎么搞

mybatis返回一个count加一个字段该怎么设置返回resultType

mybatis多表查询,只取某些字段,其余字段返回为空,怎么处理??

java mybatis 查询列表会返回为null吗

mybatis里面xml文件中resultType值说明