双while循环里,mybatis的selectOne查询数据库不起作用
背景:
查询X表中某字段status的值,该值可取范围为 0,1,4,5。
0表示准备执行,1表示执行成功,4表示正在执行, 5表示执行失败。
首先进入第1个while循环更新该值为0,然后status的值开始变化,若该值为0或者4则进入第2个while循环一直取
status值,若status的值为1或者5跳出第2个while循环。
代码如下:
String status = null ;
int i = 1;
while(!"1".equalsIgnoreCase(status)) {
System.out.println("开始第" + i + "次更新");
i++;
session.update(statement2, regsno);
session.commit();
status = session.selectOne(statement1, regsno);
System.out.println("初始化status: " + status);
while("0".equalsIgnoreCase(status) || "4".equalsIgnoreCase(status)) {
status = session.selectOne(statement1, regsno);
System.out.println("status的值: " + status);
}
}
采用log4j输出mybatis的sql语句。
Debug时,当程序进入第2个while循环之后,单步执行,控制台输出
初始化status: 0
status的值: 0
status的值: 0
status的值: 0
status的值: 0
status的值: 0
status的值: 0
status的值: 0
status的值: 0
status的值: 0
status的值: 0
status的值: 0
status的值: 0
问题:第2个while循环中mybatis的selectOne方法为什么没有运行。
查询X表中某字段status的值,该值可取范围为 0,1,4,5。
0表示准备执行,1表示执行成功,4表示正在执行, 5表示执行失败。
首先进入第1个while循环更新该值为0,然后status的值开始变化,若该值为0或者4则进入第2个while循环一直取
status值,若status的值为1或者5跳出第2个while循环。
代码如下:
String status = null ;
int i = 1;
while(!"1".equalsIgnoreCase(status)) {
System.out.println("开始第" + i + "次更新");
i++;
session.update(statement2, regsno);
session.commit();
status = session.selectOne(statement1, regsno);
System.out.println("初始化status: " + status);
while("0".equalsIgnoreCase(status) || "4".equalsIgnoreCase(status)) {
status = session.selectOne(statement1, regsno);
System.out.println("status的值: " + status);
}
}
采用log4j输出mybatis的sql语句。
Debug时,当程序进入第2个while循环之后,单步执行,控制台输出
初始化status: 0
status的值: 0
status的值: 0
status的值: 0
status的值: 0
status的值: 0
status的值: 0
status的值: 0
status的值: 0
status的值: 0
status的值: 0
status的值: 0
status的值: 0
问题:第2个while循环中mybatis的selectOne方法为什么没有运行。
...全文
相关推荐
求救!!mybatis Expected one result (or null) to be returned by selectOne(), but found:18
"mybatis 错误:Expected one result (or null) to be returned by selectOne(), but found:18"在MyBatis中,`s
MyBatisPlusselectById、selectOne、selectBatchIds、selectByMap、selectPage的使用示例代码
MyBatisPlus是一款基于MyBatis的扩展工具,在简化MyBatis操作的同时,提供了更为强大的功能,特别是对于数据库的CRUD操作。
登录发生问题提出:Expected one result (or null) to be returned by selectOne(), but found: 2
"在开发过程中,用户登录时遇到一个异常问题:Expected one result (or null) to be returned by selectOne(), but found: 2。这个问
Mybatis执行SQL语句的方式
我们也可以使用 selectOne 方法和 selectList 方法来执行 SQL 语句。Mybatis 提供了多种方式来执行 SQL 语句,开发者可以根据需要选择合适的方式来实现业务逻辑。
【MyBatis源码全面解析】MyBatis一二级缓存介绍
如果缓存中没有结果,则查询数据库并将结果存储在缓存中在MyBatis中,无论selectOne还是selectList方法,最终都被转换为了selectList方法来执行。


