返回顶部
首页 > 资讯 > 后端开发 > JAVA >Spring JdbcTemplate.queryForList()
  • 207
分享到

Spring JdbcTemplate.queryForList()

springjavasql 2023-10-10 08:10:00 207人浏览 八月长安
摘要

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

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

List> queryForList(String sql) throws DataAccessException 

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

 List queryForList(String sql, Class elementType) throws DataAccessException 

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

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

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

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

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

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

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

 List queryForList(String sql, Object[] args, int[] argTypes, Class 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;@Repositorypublic class PersonDAO {    @Autowired    private JdbcTemplate jdbcTemplate;    // queryForList(String sql)    public List getAllPersons() {        String sql = "select * from person";        List> list = jdbcTemplate.queryForList(sql);        List 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<T> elementType)    public List getAllNames() {        String sql = "select name from person";        List list = jdbcTemplate.queryForList(sql, String.class);        List plist = new ArrayList<>();        list.forEach(name -> plist.add(name));        return plist;    }    // queryForList(String sql, Class<T> elementType, Object... args)    public List getIdsByNameNAge1(String name, int age) {        String sql = "select id from person where name = ? and age = ?";        List list = jdbcTemplate.queryForList(sql, Integer.class, name, age);        List plist = new ArrayList<>();        list.forEach(id -> plist.add(id));        return plist;    }    // queryForList(String sql, Object... args)    public List getPersonsByNameNAge1(String name, int age) {        String sql = "select * from person where name = ? and age = ?";        List> list = jdbcTemplate.queryForList(sql, name, age);        List 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 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> list = jdbcTemplate.queryForList(sql, args, argTypes);        List 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<T> elementType)    public List 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 list = jdbcTemplate.queryForList(sql, args, argTypes, Integer.class);        List 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/Shanghaispring.datasource.username=rootspring.datasource.passWord=rootspring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

pom.xml

    4.0.0    com.concretepage    soap-ws    0.0.1-SNAPSHOT    jar    spring-demo    Spring Demo Application            org.springframework.boot        spring-boot-starter-parent        2.7.4                        17                            org.springframework.boot            spring-boot-starter                            org.springframework.boot            spring-boot-starter-jdbc                            mysql            mysql-connector-java            8.0.30                                                    org.springframework.boot                spring-boot-Maven-plugin                        

MyApplication.java

package com.concretepage;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.ApplicationContext;@SpringBootApplicationpublic 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 模板

下载源代码

spring-jdbctemplate-queryforlist.zip

来源地址:https://blog.csdn.net/allway2/article/details/127603759

--结束END--

本文标题: Spring JdbcTemplate.queryForList()

本文链接: https://lsjlt.com/news/426846.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作