一个查询的方法测试(Junit)通过 
放到线程里就不行了 查不到结果 也不报错 
本来期待多线程模拟多有用户同时访问
Thread :
public void run() {
Integer s = 0;
try {
s = Lee.selectAllAccountCount();
System.out.println(s+"...............");  // 没值 也不报错
} catch (SQLException e) {
e.printStackTrace();
}
}Junit
@Test
public void threadDb(){
                Integer s = 0;
try {
s = Lee.selectAllAccountCount();
System.out.println(s+"..............."); // ----- s 有值,没问题
} catch (SQLException e) {
e.printStackTrace();
}
Tas t;
for (int i = 0; i < 3; i++) {
t= new Tas();
t.start();
}
if(1==1){
t= new Tas();
t.start();
}
}sqlMap.xml:
    <select id="selectAllLeeCount" resultClass="int">
        select count(*) from Lee
    </select>
Dao:
 public static Integer selectAllLeeCount () throws SQLException {
  System.out.println("+++++++++++++");
    return (Integer)sqlMapper.queryForObject("selectAllLeeCount");
    }

解决方案 »

  1.   

    Lee.selectAllAccountCount();
    会不会这个的返回结果就是0呢?可以debug单步跟踪以下
      

  2.   

    debug 进不去 
      就算是0他也要输出的呀
       可是他什么都没有
      

  3.   

    网友"denger" 解答 -- > 
    这跟ibatis多线程没什么问题, 一般不建议直接使用 JUnit 来测试,它对多线程支持并不好。 
    去 Google  Search Keyword:  "JUnit 多线程测试",会有你需要的答案。
      

  4.   

    如果只是查询不需要考虑锁的问题
    还有如果实现正确不存在多线程的问题
    本来Ibatis就能够在多线程下操作