本文中,我们学习使用JdbcTemplate.queryForList() 方法queryForList()方法执行给定的 SQL 并返回结果List 对象
queryForList()方法通过以下方式接受参数
1. 

List<Map<String,Object&gt;&gt; queryForList(String sql) throws DataAccessException 

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

<T&gt; List<T&gt; queryForList(String sql, Class<T> elementType) throws DataAccessException 

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

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

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

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

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

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

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

<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 是结果列表中必需的元素类型

返回
返回对象List 。

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

使用Spring Boot示例

PersonDAO.java

package com.concretepage;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

@Repository
public class PersonDAO {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    // queryForList(String sql)
    public List<Person> getAllPersons() {
        String sql = "select * from person";
        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
        List<Person> plist = new ArrayList<>();
        list.forEach(m -> {
            Person p = new Person((String) m.get("name"), (Integer) m.get("age"));
            p.setId((Integer) m.get("id"));
            plist.add(p);
        });
        return plist;
    }

    // queryForList(String sql, Class&amp;lt;T&amp;gt; elementType)
    public List<String> getAllNames() {
        String sql = "select name from person";
        List<String> list = jdbcTemplate.queryForList(sql, String.class);
        List<String> plist = new ArrayList<>();
        list.forEach(name -> plist.add(name));
        return plist;
    }

    // queryForList(String sql, Class&amp;lt;T&amp;gt; elementType, Object... args)
    public List<Integer> getIdsByNameNAge1(String name, int age) {
        String sql = "select id from person where name = ? and age = ?";
        List<Integer> list = jdbcTemplate.queryForList(sql, Integer.class, name, age);
        List<Integer> plist = new ArrayList<>();
        list.forEach(id -> plist.add(id));
        return plist;
    }

    // queryForList(String sql, Object... args)
    public List<Person> getPersonsByNameNAge1(String name, int age) {
        String sql = "select * from person where name = ? and age = ?";
        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql, name, age);
        List<Person> plist = new ArrayList<>();
        list.forEach(m -> {
            Person p = new Person((String) m.get("name"), (Integer) m.get("age"));
            p.setId((Integer) m.get("id"));
            plist.add(p);
        });
        return plist;
    }

    // queryForList(String sql, Object[] args, int[] argTypes)
    public List<Person> getPersonsByNameNAge2(String name, int age) {
        String sql = "select * from person where name = ? and age = ?";
        Object[] args = {name, age};
        int[] argTypes = {java.sql.Types.CHAR, java.sql.Types.INTEGER};
        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql, args, argTypes);
        List<Person> plist = new ArrayList<>();
        list.forEach(m -> {
            Person p = new Person((String) m.get("name"), (Integer) m.get("age"));
            p.setId((Integer) m.get("id"));
            plist.add(p);
        });
        return plist;
    }

    // queryForList(String sql, Object[] args, int[] argTypes, Class&amp;lt;T&amp;gt; elementType)
    public List<Integer> getIdsByNameNAge2(String name, int age) {
        String sql = "select id from person where name = ? and age = ?";
        Object[] args = {name, age};
        int[] argTypes = {java.sql.Types.CHAR, java.sql.Types.INTEGER};
        List<Integer> list = jdbcTemplate.queryForList(sql, args, argTypes, Integer.class);
        List<Integer> plist = new ArrayList<>();
        list.forEach(id -> plist.add(id));
        return plist;
    }
}

Person.java

package com.concretepage;

public class Person {

    private int id;
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    @Override
    public String toString() {
        return id + " - " + name + " - " + age;
    }
}

application.properties

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.concretepage</groupId>
    <artifactId>soap-ws</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>spring-demo</name>
    <description>Spring Demo Application</description>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.4</version>
        <relativePath />
    </parent>
    <properties>
        <java.version>17</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.30</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

MyApplication.java

package com.concretepage;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;

@SpringBootApplication
public class MyApplication {

    public static void main(String[] args) {
        ApplicationContext ctx = SpringApplication.run(MyApplication.class, args);
        PersonDAO personDAO = ctx.getBean(PersonDAO.class);

        System.out.println(personDAO.getAllPersons()); // [1 - Rakesh - 30, 2 - Mohan - 25, 3 - Mohan - 25]
        System.out.println(personDAO.getAllNames()); // [Rakesh, Mohan, Mohan]
        System.out.println(personDAO.getIdsByNameNAge1("Mohan", 25)); // [2, 3]
        System.out.println(personDAO.getPersonsByNameNAge1("Mohan", 25)); // [2 - Mohan - 25, 3 - Mohan - 25]
        System.out.println(personDAO.getPersonsByNameNAge2("Mohan", 25)); // [2 - Mohan - 25, 3 - Mohan - 25]
        System.out.println(personDAO.getIdsByNameNAge2("Mohan", 25)); // [2, 3]
    }
}

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

参考

类 Jdbc 模板

下载源代码

原文地址:https://blog.csdn.net/allway2/article/details/127603759

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_19775.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注