Как каждый раз избавляться от имени столбца из jdbcTemplate.queryForList (sql) при весенней загрузке в java sql - PullRequest
0 голосов
/ 13 июля 2020

Вот код:

public void readOperation() {
        String sql="select * from std";
        List list=jdbcTemplate.queryForList(sql);
        
   for(int i=0;i<list.size();i++)
        System.out.println(list.get(i));
}

Я слишком много пробовал напечатать таким образом

id name father
2451 mofiz kudda
1524 ahsan abdullah

, но всегда печатается так:

{id=2451, name=mofiz, father=kudda}
{id=1524, name=ahsan, father=abdullah}

Ответы [ 2 ]

1 голос
/ 13 июля 2020

В Spring мы можем использовать jdbcTemplate.query () для запроса записей из базы данных и преобразования строк в список объектов через преобразователь строк, переопределив метод toString () в объекте для печати данных.

public void readOperation()
{
    String sql = "SELECT * FROM STD";
    List<Std> stds = jdbcTemplate.query(sql, (rs, rowNum) -> new Std(rs.getInt("id"), rs.getString("name"), rs.getString("father")));

    for (Std std : stds)
        std.toString();
}

public class Std
{
    private int id;

    private String name;

    private String father;

    @Override
    public String toString()
    {
        StringBuffer buff = new StringBuffer();
        buff.append(this.id).append(" ").append(this.name).append(" ").append(this.father);
        return buff.toString();
    }
}
0 голосов
/ 13 июля 2020

jdbcTemplate.queryForList возвращает список > и если вы передадите этот список в System.out.println, он вызовет метод toString для List, а затем для Map и записей. Вот почему результат выглядит именно так.

Вы должны написать код, чтобы распечатать его вот так.

System.out.println("id\\tname\\tfather");
for(Map<String,Object> map : list) {
    System.out.println(map.get("id") + "\\t" + map.get("name") + "\\t" + map.get("father"));
}
...