0


Spring JdbcTemplate.queryForList()

在本文中,我们将学习使用

  1. JdbcTemplate.queryForList()

方法。queryForList()方法执行给定的 SQL 并返回结果

  1. List

对象。
queryForList()方法通过以下方式接受参数。
1.

  1. List<Map<String,Object>> queryForList(String sql) throws DataAccessException

执行给定的静态查询并返回一个列表。它使用 JDBC Statement语句,而不是 PreparedStatement。结果列表包含映射。一个映射实例表示一行,其中映射键是列名,映射值是列值。
2.

  1. <T> List<T> queryForList(String sql, Class<T> elementType) throws DataAccessException

执行给定的静态查询并返回一个列表。它使用 JDBC Statement语句,而不是PreparedStatement。结果列表包含给定元素类型的元素。
3.

  1. <T> List<T> queryForList(String sql, Class<T> elementType, @Nullable Object... args) throws DataAccessException

给定 SQL 的查询从 SQL 创建预准备语句和要绑定到查询的参数列表,需要结果列表。结果列表包含给定元素类型的元素。
4.

  1. List<Map<String,Object>> queryForList(String sql, @Nullable Object... args) throws DataAccessException

查询给定的 SQL 从 SQL 创建预准备语句和要绑定到查询的参数列表,期望结果列表。结果列表包含映射。一个映射实例表示一行,其中映射键是列名,映射值是列值。
5.

  1. List<Map<String,Object>> queryForList(String sql, Object[] args, int[] argTypes) throws DataAccessException

给定 SQL 的查询从 SQL 创建预准备语句和要绑定到查询的参数列表,需要结果列表。结果列表包含映射。一个映射实例表示一行,其中映射键是列名,映射值是列值。
6.

  1. <T> List<T> queryForList(String sql, Object[] args, int[] argTypes, Class<T> elementType) throws DataAccessException

给定 SQL 的查询从 SQL 创建预准备语句和要绑定到查询的参数列表,需要结果列表。结果列表包含给定元素类型的元素。

参数:
sql是要执行的 SQL 查询。
args 是要绑定到查询的参数
argType是参数的SQL类型,即java.sql.Types
elementType 是结果列表中必需的元素类型

返回
它返回对象

  1. List

抛出:
如果查询失败,则会引发DataAccessException。

使用Spring Boot的示例

PersonDAO.java

  1. package com.concretepage;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import java.util.Map;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.jdbc.core.JdbcTemplate;
  7. import org.springframework.stereotype.Repository;
  8. @Repository
  9. public class PersonDAO {
  10. @Autowired
  11. private JdbcTemplate jdbcTemplate;
  12. // queryForList(String sql)
  13. public List<Person> getAllPersons() {
  14. String sql = "select * from person";
  15. List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
  16. List<Person> plist = new ArrayList<>();
  17. list.forEach(m -> {
  18. Person p = new Person((String) m.get("name"), (Integer) m.get("age"));
  19. p.setId((Integer) m.get("id"));
  20. plist.add(p);
  21. });
  22. return plist;
  23. }
  24. // queryForList(String sql, Class&lt;T&gt; elementType)
  25. public List<String> getAllNames() {
  26. String sql = "select name from person";
  27. List<String> list = jdbcTemplate.queryForList(sql, String.class);
  28. List<String> plist = new ArrayList<>();
  29. list.forEach(name -> plist.add(name));
  30. return plist;
  31. }
  32. // queryForList(String sql, Class&lt;T&gt; elementType, Object... args)
  33. public List<Integer> getIdsByNameNAge1(String name, int age) {
  34. String sql = "select id from person where name = ? and age = ?";
  35. List<Integer> list = jdbcTemplate.queryForList(sql, Integer.class, name, age);
  36. List<Integer> plist = new ArrayList<>();
  37. list.forEach(id -> plist.add(id));
  38. return plist;
  39. }
  40. // queryForList(String sql, Object... args)
  41. public List<Person> getPersonsByNameNAge1(String name, int age) {
  42. String sql = "select * from person where name = ? and age = ?";
  43. List<Map<String, Object>> list = jdbcTemplate.queryForList(sql, name, age);
  44. List<Person> plist = new ArrayList<>();
  45. list.forEach(m -> {
  46. Person p = new Person((String) m.get("name"), (Integer) m.get("age"));
  47. p.setId((Integer) m.get("id"));
  48. plist.add(p);
  49. });
  50. return plist;
  51. }
  52. // queryForList(String sql, Object[] args, int[] argTypes)
  53. public List<Person> getPersonsByNameNAge2(String name, int age) {
  54. String sql = "select * from person where name = ? and age = ?";
  55. Object[] args = {name, age};
  56. int[] argTypes = {java.sql.Types.CHAR, java.sql.Types.INTEGER};
  57. List<Map<String, Object>> list = jdbcTemplate.queryForList(sql, args, argTypes);
  58. List<Person> plist = new ArrayList<>();
  59. list.forEach(m -> {
  60. Person p = new Person((String) m.get("name"), (Integer) m.get("age"));
  61. p.setId((Integer) m.get("id"));
  62. plist.add(p);
  63. });
  64. return plist;
  65. }
  66. // queryForList(String sql, Object[] args, int[] argTypes, Class&lt;T&gt; elementType)
  67. public List<Integer> getIdsByNameNAge2(String name, int age) {
  68. String sql = "select id from person where name = ? and age = ?";
  69. Object[] args = {name, age};
  70. int[] argTypes = {java.sql.Types.CHAR, java.sql.Types.INTEGER};
  71. List<Integer> list = jdbcTemplate.queryForList(sql, args, argTypes, Integer.class);
  72. List<Integer> plist = new ArrayList<>();
  73. list.forEach(id -> plist.add(id));
  74. return plist;
  75. }
  76. }

Person.java

  1. package com.concretepage;
  2. public class Person {
  3. private int id;
  4. private String name;
  5. private int age;
  6. public Person(String name, int age) {
  7. this.name = name;
  8. this.age = age;
  9. }
  10. public int getId() {
  11. return id;
  12. }
  13. public void setId(int id) {
  14. this.id = id;
  15. }
  16. public String getName() {
  17. return name;
  18. }
  19. public int getAge() {
  20. return age;
  21. }
  22. @Override
  23. public String toString() {
  24. return id + " - " + name + " - " + age;
  25. }
  26. }

application.properties

  1. spring.datasource.url=jdbc:mysql://localhost:3306/concretepage?autoReconnect=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
  2. spring.datasource.username=root
  3. spring.datasource.password=root
  4. spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

pom.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <groupId>com.concretepage</groupId>
  7. <artifactId>soap-ws</artifactId>
  8. <version>0.0.1-SNAPSHOT</version>
  9. <packaging>jar</packaging>
  10. <name>spring-demo</name>
  11. <description>Spring Demo Application</description>
  12. <parent>
  13. <groupId>org.springframework.boot</groupId>
  14. <artifactId>spring-boot-starter-parent</artifactId>
  15. <version>2.7.4</version>
  16. <relativePath />
  17. </parent>
  18. <properties>
  19. <java.version>17</java.version>
  20. </properties>
  21. <dependencies>
  22. <dependency>
  23. <groupId>org.springframework.boot</groupId>
  24. <artifactId>spring-boot-starter</artifactId>
  25. </dependency>
  26. <dependency>
  27. <groupId>org.springframework.boot</groupId>
  28. <artifactId>spring-boot-starter-jdbc</artifactId>
  29. </dependency>
  30. <dependency>
  31. <groupId>mysql</groupId>
  32. <artifactId>mysql-connector-java</artifactId>
  33. <version>8.0.30</version>
  34. </dependency>
  35. </dependencies>
  36. <build>
  37. <plugins>
  38. <plugin>
  39. <groupId>org.springframework.boot</groupId>
  40. <artifactId>spring-boot-maven-plugin</artifactId>
  41. </plugin>
  42. </plugins>
  43. </build>
  44. </project>

MyApplication.java

  1. package com.concretepage;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.context.ApplicationContext;
  5. @SpringBootApplication
  6. public class MyApplication {
  7. public static void main(String[] args) {
  8. ApplicationContext ctx = SpringApplication.run(MyApplication.class, args);
  9. PersonDAO personDAO = ctx.getBean(PersonDAO.class);
  10. System.out.println(personDAO.getAllPersons()); // [1 - Rakesh - 30, 2 - Mohan - 25, 3 - Mohan - 25]
  11. System.out.println(personDAO.getAllNames()); // [Rakesh, Mohan, Mohan]
  12. System.out.println(personDAO.getIdsByNameNAge1("Mohan", 25)); // [2, 3]
  13. System.out.println(personDAO.getPersonsByNameNAge1("Mohan", 25)); // [2 - Mohan - 25, 3 - Mohan - 25]
  14. System.out.println(personDAO.getPersonsByNameNAge2("Mohan", 25)); // [2 - Mohan - 25, 3 - Mohan - 25]
  15. System.out.println(personDAO.getIdsByNameNAge2("Mohan", 25)); // [2, 3]
  16. }
  17. }

查找我们的演示中使用的 MySQL 表(人)屏幕截图。

参考

类 Jdbc 模板

下载源代码

spring-jdbctemplate-queryforlist.zip

标签: spring java sql

本文转载自: https://blog.csdn.net/allway2/article/details/127603759
版权归原作者 allway2 所有, 如有侵权,请联系我们删除。

“Spring JdbcTemplate.queryForList()”的评论:

还没有评论