Spring JdbcTemplate.queryForList()

这篇具有很好参考价值的文章主要介绍了Spring JdbcTemplate.queryForList()。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

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

<T> List<T> 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&lt;T&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&lt;T&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&lt;T&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

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

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 表(人)屏幕截图。

Spring JdbcTemplate.queryForList()

参考

类 Jdbc 模板文章来源地址https://www.toymoban.com/news/detail-434053.html

下载源代码

spring-jdbctemplate-queryforlist.zip

到了这里,关于Spring JdbcTemplate.queryForList()的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 13、Spring之JdbcTemplate

    ++++++++++++++++++++++++++++++分割线++++++++++++++++++++++++++++++ JdbcTemplate的增删改都是用update这个方法 ++++++++++++++++++++++++++++++分割线++++++++++++++++++++++++++++++

    2024年02月11日
    浏览(32)
  • Spring-JDBCTemplate

    一、引子 我们在JavaWeb阶段向读者介绍过JDBC(请回顾JDBC基本概念),由于JDBC使用上的繁琐,又介绍了MyBatis的使用(请回顾MyBatis基本概念)。现在又写一篇文章用来介绍JDBCTemplate,似乎是翻来覆去讲一些重复的东西。实则不然,虽然只了解一门技术便可完成需求的实现,但是

    2024年02月22日
    浏览(30)
  • Spring:JDBCTemplate

    JDBC(Java DataBase Connectivity,Java 数据库连接) , 一 种用于执行 SQL 语句的 Java API(Application Programming Interface , 应用程序设计接口 ),可以为多种关系数据库提供统一访问,由一组用 Java 语言编写的类和接口组成。 JDBCTemplate ,是一个 JDBC 的模板,Spring 封装了 JDBC 常用的操作

    2024年02月14日
    浏览(33)
  • Spring JdbcTemplate

    三联支持 一起鼓励 一起进步 JdbcTemplate 用于和数据库交互的,实现对表的CRUD操作。 它是Spring框架提供的一个对象,是对原始Jdbc API对象的简单封装。Spring框架为我们提供了很多的操作模板类。 JdbcTemplate在spring-jdbc-5.0.2.RELEASE.jar中,我们在导包的时候,除了要导入这个jar包,

    2024年02月08日
    浏览(34)
  • Spring JdbcTemplate.queryForObject()

    Spring  JdbcTemplate  是JDBC核心包中的中心类。它简化了 JDBC 与 Spring 的使用,并有助于避免常见错误。在此页面上,我们将学习使用 它 的 queryForObject  方法。 JdbcTemplate.queryForObject不同参数的方法。 1.   执行给定的 SQL 并返回所需类型的对象。 2. 查询给定的 SQL 以从 SQL 创建预

    2024年02月12日
    浏览(33)
  • Spring6 JdbcTemplate和事务

    1.1、简介 Spring 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库操作 1.2、准备工作 ①搭建子模块 搭建子模块:spring-jdbc-tx ②加入依赖 ③创建jdbc.properties ④配置Spring的配置文件 beans.xml ⑤准备数据库与测试表 1.3、实现CURD ①装配 JdbcTemplate 创建测试类,整合JUnit,注入

    2024年02月09日
    浏览(42)
  • javaee spring jdbcTemplate的使用

    spring配置文件 测试类

    2024年02月11日
    浏览(34)
  • 对比Spring Boot中的JdbcClient与JdbcTemplate

    本文我们一起看看Spring Boot中 JdbcClient 和 JdbcTemplate 之间的差异。 以下内容使用的Java和Spring Boot版本为: Java 21 Spring Boot 3.2.1 假设我们有一个 ICustomerService 接口: 其中,涵盖了我们常见的数据CRUD操作。 下面就来一起看看,分别使用 JDBC Client 和 JDBC Template 的实现。 JdbcTemplat

    2024年02月03日
    浏览(40)
  • 6、Spring_Junit与JdbcTemplate整合

    1.1新建项目结构 1.2导入依赖 导入 junit 与 Spring 依赖 1.3正常的写 spring 代码 添加 mapper 添加配置类 1.4通过测试类拿去mapper 先建立测试类 1.5@Runwith 说明 @Runwith 位置 测试类上方 作用 测试类注解,设置 junit 运行器的 属性 使用测试运行的环境,SpringJUnit4ClassRunner.class 1.5@ContextC

    2024年02月11日
    浏览(41)
  • 设置JdbcTemplate打印sql语句的几种实现方式使用Spring Boot打印SQL语句

    在使用JdbcTemplate执行SQL查询时,可以将其配置为打印SQL语句,以便调试和优化查询。以下是一些方法可以设置JdbcTemplate打印SQL语句: 如果你使用Log4j作为日志框架,可以在log4j.properties或log4j.xml文件中添加以下配置,将JdbcTemplate打印的SQL语句输出到控制台或日志文件中: 这将

    2024年02月15日
    浏览(150)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包