1. queryForMap
public Map<String, Object> queryForMap(String sql); public Map<String, Object> queryForMap(String sql, Object... args); public Map<String, Object> queryForMap(String sql, Object[] args, int[] argTypes); // The methods above are meant to be s single row query.
As we can see from API Doc:
1) Return type is Map<String, Object>. One entry for each column, using the column name as the key.
2) As we cannot have ?duplicate keys, this query is meant to be a single row query.
3) This methods is appropriate when you don't have a domain model,?
? ? Otherwise, consider using one of the queryForObject() methods.
4) If the row count that matches the sql is bigger than one, IncorrectResultSizeDataAccessException will be thrown.
package edu.xmu.jdbc.dao; import java.util.List; import java.util.Map; import javax.sql.DataSource; import org.springframework.jdbc.core.JdbcTemplate; import edu.xmu.jdbc.bean.Student; public class JdbcTemplateDao { private DataSource dataSource; private JdbcTemplate jdbcTemplate; public void setDataSource(DataSource dataSource) { this.dataSource = dataSource; this.jdbcTemplate = new JdbcTemplate(this.dataSource); } public void prepareData(List<Student> studentList) { String sql = "insert into student(name, age) values (?, ?)"; for (Student student : studentList) { jdbcTemplate .update(sql, new Object[] { student.getName(), student.getAge() }, new int[] { java.sql.Types.VARCHAR, java.sql.Types.INTEGER }); } } public Map<String, Object> queryForMap() { String sql = "select id, name, age from student"; return jdbcTemplate.queryForMap(sql); } public Map<String, Object> queryForMap2(int id) { String sql = "select id, name, age from student where id=?"; return jdbcTemplate.queryForMap(sql, new Object[] { id }); } public Map<String, Object> queryForMap3(int id) { String sql = "select id, name, age from student where id<=?"; return jdbcTemplate.queryForMap(sql, new Object[] { id }, new int[] { java.sql.Types.INTEGER }); } public void truncateTable() { String sql = "truncate table student"; jdbcTemplate.execute(sql); } }
package edu.xmu.jdbc.dao; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.springframework.jdbc.datasource.DriverManagerDataSource; import edu.xmu.jdbc.bean.Student; public class JdbcTemplateTest { private DriverManagerDataSource dataSource; private String url = "jdbc:mysql://localhost:3306/jdbctest"; private String username = "root"; private String password = "root"; private JdbcTemplateDao dao; @Before public void setUp() { dataSource = new DriverManagerDataSource(url, username, password); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dao = new JdbcTemplateDao(); dao.setDataSource(dataSource); List<Student> studentList = new ArrayList<Student>(); Student student = new Student("Davy", 24); studentList.add(student); dao.prepareData(studentList); } @Test public void queryForMapTest() { Map<String, Object> resultMap = dao.queryForMap(); Set<Map.Entry<String, Object>> entrySet = resultMap.entrySet(); for (Entry<String, Object> entryMap : entrySet) { System.out.println(entryMap.getKey() + "=" + entryMap.getValue()); } }