`
Inmethetiger
  • 浏览: 112034 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spring jdbc之query详细实例1

阅读更多

  首发:http://inmethetiger.iteye.com/blog/1687442

 

  spring的jdbc里面对查询的的实现比较多,除了queryForXXX之外,还有重载了很多query方法。我根据这个写了一些query方法的小实例。

准备:

 

@BeforeClass
	public static void setUpClass() {
		String url = "jdbc:hsqldb:mem:test";
		String username = "sa";
		String password = "";
		DriverManagerDataSource dataSource = new DriverManagerDataSource(url,
				username, password);
		dataSource.setDriverClassName("org.hsqldb.jdbcDriver");
		jdbcTemplate = new JdbcTemplate(dataSource);
	}

	// 创建表结构
	@Before
	public void before() {
		String createTableSql = "create memory table test"
				+ "(id int GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, "
				+ "name varchar(100))";
		jdbcTemplate.update(createTableSql);
	}
 

结果集处理回调

回调函数使用RowMapper的方法

1:<T> List<T> query(String sql, RowMapper<T> rowMapper)方法

 

根据给定的sql语句执行query方法。通过RowMapper将每行映射成为一个java对象。 使用一个JDBC

Statement,而不是使用预编译的的PrepareStatement。如果想用PrepareStatement执行 一个查询,使用重载的方法。

 

@Test
	public void SqlRowMapper() {

		jdbcTemplate.update("insert into test(name) values('name1')");
		jdbcTemplate.update("insert into test(name) values('name2')");
		jdbcTemplate.update("insert into test(name) values('name2')");
		jdbcTemplate.update("insert into test(name) values('name4')");

		String listSql = "select * from test";
		List<Map> objList = jdbcTemplate.query(listSql, new RowMapper<Map>() {
			@Override
			public Map mapRow(ResultSet rs, int rowNum) throws SQLException {
				Map row = new HashMap();
				row.put(rowNum, rs.getString("name"));
				return row;
			}

		});
		for (int i = 0; i < objList.size(); i++) {
			Object obj = objList.get(i);
			System.out.println(obj.toString());
		}
	}
 

如果想使用预编译的可以写成这个样子:使用这个方法,然后参数为空

 

@Test
	public void SqlRowMapper() {

		jdbcTemplate.update("insert into test(name) values('name1')");
		jdbcTemplate.update("insert into test(name) values('name2')");
		jdbcTemplate.update("insert into test(name) values('name2')");
		jdbcTemplate.update("insert into test(name) values('name4')");

		String listSql = "select * from test";
		List<Map> objList = jdbcTemplate.query(listSql,new Object{}{}, new RowMapper<Map>() {
			@Override
			public Map mapRow(ResultSet rs, int rowNum) throws SQLException {
				Map row = new HashMap();
				row.put(rowNum, rs.getString("name"));
				return row;
			}

		});
		for (int i = 0; i < objList.size(); i++) {
			Object obj = objList.get(i);
			System.out.println(obj.toString());
		}
	}

 

2:<T> List<T> query(String sql, Object[] args, RowMapper<T> rowMapper)

 

@Test
	public void SqlArgsRowMapper() {
		jdbcTemplate.update("insert into test(name) values('name1')");
		jdbcTemplate.update("insert into test(name) values('name2')");
		jdbcTemplate.update("insert into test(name) values('name2')");
		jdbcTemplate.update("insert into test(name) values('name4')");
		String listSql = "select * from test where name=?";

		List<Map> objList = jdbcTemplate.query(listSql,
				new Object[] { "name2" }, new RowMapper<Map>() {

					@Override
					public Map mapRow(ResultSet rs, int rowNum)
							throws SQLException {
						Map row = new HashMap();
						row.put(rowNum, rs.getString("name"));
						return row;
					}

				});
		for (int i = 0; i < objList.size(); i++) {
			Object obj = objList.get(i);
			System.out.println(obj.toString());
		}

	}
 

 

3:<T> List<T> query(String sql, Object[] args, int[] argTypes, RowMapper<T> rowMapper)

 

@Test
	public void SqlArgsArgsTypeRowMapper() {
		jdbcTemplate.update("insert into test(name) values('name1')");
		jdbcTemplate.update("insert into test(name) values('name2')");
		jdbcTemplate.update("insert into test(name) values('name2')");
		jdbcTemplate.update("insert into test(name) values('name4')");
		String listSql = "select * from test where name=?";

		List<Map> objList = jdbcTemplate.query(listSql,
				new Object[] { "name2" },new int[]{java.sql.Types.ARRAY}, new RowMapper<Map>() {
					@Override
					public Map mapRow(ResultSet rs, int rowNum)
							throws SQLException {
						Map row = new HashMap();
						row.put(rowNum, rs.getString("name"));
						return row;
					}

				});

		for (int i = 0; i < objList.size(); i++) {
			Object obj = objList.get(i);
			System.out.println(obj.toString());
		}

	}
 

4:<T> List<T> query(String sql, RowMapper<T> rowMapper, Object... args)

 

@Test
	public void SqlRowMapperArgs() {
		jdbcTemplate.update("insert into test(name) values('name1')");
		jdbcTemplate.update("insert into test(name) values('name2')");
		jdbcTemplate.update("insert into test(name) values('name2')");
		jdbcTemplate.update("insert into test(name) values('name4')");
		String listSql = "select * from test where name=?";

		List<Map> objList = jdbcTemplate.query(listSql, new RowMapper<Map>() {

			@Override
			public Map mapRow(ResultSet rs, int rowNum) throws SQLException {
				Map row = new HashMap();
				row.put(rowNum, rs.getString("name"));
				return row;
			}

		}, "name2");
		for (int i = 0; i < objList.size(); i++) {
			Object obj = objList.get(i);
			System.out.println(obj.toString());
		}

	}

 

5:<T> List<T> query(PreparedStatementCreator psc, RowMapper<T> rowMapper)

 

@Test
	public void PreRowMapper() {
		jdbcTemplate.update("insert into test(name) values('name1')");
		jdbcTemplate.update("insert into test(name) values('name2')");
		jdbcTemplate.update("insert into test(name) values('name2')");
		jdbcTemplate.update("insert into test(name) values('name4')");
		final String listSql = "select * from test where name=?";
		List<Map> objList = jdbcTemplate.query(new PreparedStatementCreator() {

			@Override
			public PreparedStatement createPreparedStatement(Connection con)
					throws SQLException {
				PreparedStatement pstmt = con.prepareStatement(listSql);
				pstmt.setString(1, "name2");
				return pstmt;
			}
		}, new RowMapper<Map>() {
			@Override
			public Map mapRow(ResultSet rs, int rowNum) throws SQLException {
				Map row = new HashMap();
				row.put(rowNum, rs.getString("name"));
				return row;
			}

		});
		for (int i = 0; i < objList.size(); i++) {
			Object obj = objList.get(i);
			System.out.println(obj.toString());
		}

	}
 

 

6:<T> List<T> query(String sql, PreparedStatementSetter pss, RowMapper<T> rowMapper)

 

@Test
	public void SqlPreRowMapper() {
		jdbcTemplate.update("insert into test(name) values('name1')");
		jdbcTemplate.update("insert into test(name) values('name2')");
		jdbcTemplate.update("insert into test(name) values('name2')");
		jdbcTemplate.update("insert into test(name) values('name4')");
		String listSql = "select * from test where name=?";

		List<Map> objList = jdbcTemplate.query(listSql,
				new PreparedStatementSetter() {
					@Override
					public void setValues(PreparedStatement ps)
							throws SQLException {
						ps.setString(1, "name2");
					}
				}, new RowMapper<Map>() {

					@Override
					public Map mapRow(ResultSet rs, int rowNum)
							throws SQLException {
						Map row = new HashMap();
						row.put(rowNum, rs.getString("name"));
						return row;
					}

				});
		for (int i = 0; i < objList.size(); i++) {
			Object obj = objList.get(i);
			System.out.println(obj.toString());
		}

	}
	
	
 

在spring的api中query方法中,涉及RowMapper的都写了一个简单的实例。

下一篇,是关于query方法中,涉及RowCallbackHandler的实例。总体来说类似。但是不同的是,返回值为空,并没有包装。

0
3
分享到:
评论

相关推荐

    Spring+JDBC实例

    1. **依赖注入**:Spring的核心特性之一是依赖注入(DI),它允许我们通过配置文件或注解来管理对象之间的依赖关系。在使用JdbcTemplate时,我们可以声明一个JdbcTemplate的bean,并在需要的地方通过@Autowired注解...

    Spring JDBC应用实例讲解

    在本文中,我们将深入探讨Spring JDBC的应用实例,了解如何利用它来实现高效且灵活的数据访问。首先,我们需要理解Spring JDBC是如何通过JdbcTemplate和NamedParameterJdbcTemplate这两个主要工具来封装JDBC操作的。...

    spring_JDBC整合包

    1. **JdbcTemplate**: 这是Spring JDBC的核心接口,提供了一组用于执行SQL语句的方法,如`update()`, `query()`, `execute()`等。它能处理数据库连接的打开和关闭,事务管理,异常处理等,让开发者专注于SQL语句本身...

    SpringJDBC.rar_SpringJDBC_spring jdbc

    通过这个SpringJDBC.rar的案例,初学者可以学习到如何配置DataSource,如何创建JdbcTemplate实例,以及如何编写和执行SQL语句。同时,实践中还可以了解到如何将Spring JDBC整合到Spring Boot项目中,以及如何处理...

    springjdbc.zip_SpringJDBC_spring jdbc_spring 增删改查_springjdbc xml

    这个`springjdbc.zip`压缩包很可能包含了示例代码和配置文件,用于演示如何使用Spring JDBC来执行基本的数据库操作,如增、删、改、查。 1. **Spring JDBC模块**:Spring JDBC模块主要由`org.springframework.jdbc`...

    spring JDbc

    在本实例中,我们将深入探讨Spring JDBC的使用,并以`SpringJdbcTemplate`为例来阐述其主要功能和优势。 首先,Spring JDBC通过`JdbcTemplate`和`NamedParameterJdbcTemplate`类提供了强大的数据库访问功能。`...

    SpringJDBC.rar_jdbc spring_spring jd_spring jdbc_spring使用JDBC进行数

    这个“SpringJDBC.rar”压缩包文件可能包含了关于如何在Spring框架中集成和使用JDBC的相关示例和教程。下面将详细解释Spring JDBC的核心概念、功能以及使用方法。 首先,Spring JDBC的核心目标是简化传统的JDBC编程...

    spring jdbc 实例源码

    1. **JdbcTemplate**: 这是Spring JDBC提供的主要类,用于简化数据库操作。它封装了基本的JDBC模板方法,如执行SQL查询、更新和存储过程,从而避免了手动管理数据库连接和结果集。 2. **DataSource**: 数据源是连接...

    Spring JDBC相关jar包:spring_jdbc_4.0.0.zip

    1. **数据源管理**:`JdbcTemplate`需要一个数据源(DataSource)实例来连接数据库。Spring框架支持多种数据源实现,如Apache Commons DBCP或C3P0,它们能够管理数据库连接的创建和回收。 2. **SQL查询**:`...

    使用Spring JDBC 案例

    在本文中,我们将深入探讨如何使用Spring JDBC进行数据库操作,并结合使用不同的连接池技术,包括Spring自带的、C3P0、DBCP和Druid。此外,我们还将介绍一个自定义的行映射器工具类,它在处理数据库查询结果时能提供...

    Spring JDBC实现代码

    在Spring 2.5中,我们可以创建一个JdbcTemplate实例并注入DataSource,如下所示: ```java @Autowired private DataSource dataSource; @Bean public JdbcTemplate jdbcTemplate() { return new JdbcTemplate...

    springjdbc.rar_SpringJDBC_spring jdbc

    下面将详细阐述两种在Spring中测试JDBC的方法。 ### 方法一:基于`JdbcTemplate` `JdbcTemplate`是Spring JDBC提供的一个关键类,它提供了大量的模板方法来执行SQL查询、更新和存储过程。使用`JdbcTemplate`测试...

    使用spring jdbc template简化jdbc数据库操作实例代码

    本实例将深入解析如何使用Spring JDBC Template进行数据库操作,并包含详细的测试用例。 首先,我们需要在项目中引入Spring JDBC的相关依赖。在Maven工程中,可以在pom.xml文件中添加如下依赖: ```xml ...

    SpringJDBC.rar_SpringJDBC_jdbctemplate_jdbctemplate spring

    下面我们将详细探讨Spring JDBC的核心概念、工作原理以及如何使用JdbcTemplate进行数据库操作。 1. **Spring JDBC概述** Spring JDBC是Spring框架的一部分,它提供了一种抽象层,使得开发者可以避免编写大量的JDBC...

    Spring JDBC模板类—org.springframework.jdbc.core.JdbcTemplate

    Spring JDBC模板类——`org.springframework.jdbc.core.JdbcTemplate`是Spring框架中的核心组件,它为Java开发者提供了一种方便、安全的方式来执行SQL语句,而无需直接管理数据库连接。`JdbcTemplate`通过抽象出低...

    springJdbcDemo11_java_springjdbc_

    在这个"springJdbcDemo11_java_springjdbc_"项目中,我们将深入探讨Spring集成JDBC的基本概念、配置和核心组件,以及如何通过实例快速上手并理解其工作原理。 1. **Spring JDBC简介** Spring JDBC模块是为了简化...

    Spring与JDBC整合

    - 配置JdbcTemplate:通过@Autowired注解注入DataSource,然后Spring会自动创建并配置JdbcTemplate实例。 - 执行SQL:JdbcTemplate提供了多种方法,如update()用于执行更新操作,query()用于查询,它们都处理了...

    spring jdbc mysql example

    1. **Spring JDBC模块**: Spring JDBC是Spring框架中的一个核心模块,它为Java数据库连接(JDBC)提供了一种更高级别的抽象,降低了直接使用JDBC的复杂性,如处理数据库连接、事务管理和异常处理。 2. **DataSource...

    JDBC_Spring.zip_spring jdbc

    标题"JDBC_Spring.zip_spring jdbc"暗示我们将学习如何在Spring项目中配置并使用JDBC来连接MySQL数据库。首先,我们需要在Spring的配置文件(通常为`applicationContext.xml`)中配置数据源。一个典型的XML配置如下...

Global site tag (gtag.js) - Google Analytics