为什么我查询出来的值,会被下一条语句中的值覆盖啊,每次查询出来的所有数据,都是最后一条数据

来源:2-7 代码重构

慕用9049269

2016-08-18 20:30

List<Message> messageList = new ArrayList<Message>();

try {

Class.forName("com.mysql.jdbc.Driver");

Connection connection;

connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/micro_message","root","root");

StringBuilder sql = new StringBuilder("select id,command,desription,content from message where 1=1");

List<String> paramList = new ArrayList<String>();

if(command != null && !"".equals(command.trim())){

sql.append("and command=?");

paramList.add(command);

}

if(desription != null && !"".equals(desription.trim())){

sql.append("and desription like '%' ? '%' ");

paramList.add(desription);

}

PreparedStatement statement = connection.prepareStatement(sql.toString());

for(int i=0;i<paramList.size();i++){

statement.setString(i + 1,paramList.get(i));

}

ResultSet rs = statement.executeQuery();

Message message = new Message();

while(rs.next()){

message.setId(rs.getString("id"));

message.setCommand(rs.getString("command"));

message.setDesription(rs.getString("desription"));

message.setContent(rs.getString("content"));

messageList.add(message);

}

} catch (ClassNotFoundException e) {

e.printStackTrace();

}catch (SQLException e) {

e.printStackTrace();

}

return messageList;


写回答 关注

3回答

  • 雪舞蔷薇
    2016-08-19 18:27:47
    已采纳

    Message message = null;

    while(rs.next()){

     message = new Message();

    message.setId(rs.getString("id"));

    message.setCommand(rs.getString("command"));

    message.setDesription(rs.getString("desription"));

    message.setContent(rs.getString("content"));

    messageList.add(message);

    }

    每次循环都要新声明一个对象,你那样写其实就只声明了一个message 对象。

    慕姐3016...

    请问为什么覆盖之后,查询个数却是对的呢

    2017-06-19 11:11:45

    共 2 条回复 >

  • 慕姐3016913
    2017-06-19 11:10:35

    谢谢楼上的答案,我纠结了几天了,真是豁然开朗啊


  • Uauslman
    2016-09-16 11:21:22

    这个初学者经常碰到,我以前也是,一般把新生成的对象放到循环里就ok了!

通过自动回复机器人学Mybatis---基础版

微信公众号自动回复功能学习Mybatis,基础教程加案例实战方式学习

107412 学习 · 786 问题

查看课程

相似问题