`

Spring SimpleJdbcTemplate查询例子

阅读更多
1. Querying for Single Row

Here’s two ways to show you how to query or extract a single row from database, and convert it into a model class.

1.1 Custom RowMapper

In general, It’s always recommend to implement the RowMapper interface to create a custom RowMapper to suit your needs.

package com.mkyong.customer.model;
 
import java.sql.ResultSet;
import java.sql.SQLException;
 
import org.springframework.jdbc.core.RowMapper;
 
public class CustomerRowMapper implements RowMapper
{
	public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
		Customer customer = new Customer();
		customer.setCustId(rs.getInt("CUST_ID"));
		customer.setName(rs.getString("NAME"));
		customer.setAge(rs.getInt("AGE"));
		return customer;
	}
 
}


public Customer findByCustomerId(int custId){
 
	String sql = "SELECT * FROM CUSTOMER WHERE CUST_ID = ?";
 
	Customer customer = getSimpleJdbcTemplate().queryForObject(
			sql,  new CustomerRowMapper(), custId);
 
	return customer;
}



1.2 BeanPropertyRowMapper
In SimpleJdbcTemplate, you need to use ‘ParameterizedBeanPropertyRowMapper’ instead of ‘BeanPropertyRowMapper’.
public Customer findByCustomerId2(int custId){
 
	String sql = "SELECT * FROM CUSTOMER WHERE CUST_ID = ?";
 
	Customer customer = getSimpleJdbcTemplate().queryForObject(sql,
          ParameterizedBeanPropertyRowMapper.newInstance(Customer.class), custId);
 
	return customer;
}


2. Querying for Multiple Rows

Query or extract multiple rows from database, and convert it into a List.
2.1 ParameterizedBeanPropertyRowMapper
public List<Customer> findAll(){
 
	String sql = "SELECT * FROM CUSTOMER";
 
	List<Customer> customers = 
		getSimpleJdbcTemplate().query(sql, 
		   ParameterizedBeanPropertyRowMapper.newInstance(Customer.class));
 
	return customers;
}


3. Querying for a Single Value

Query or extract a single column value from database.
3.1 Single column name

It shows how to query a single column name as String.
public String findCustomerNameById(int custId){
 
	String sql = "SELECT NAME FROM CUSTOMER WHERE CUST_ID = ?";
 
	String name = getSimpleJdbcTemplate().queryForObject(
		sql, String.class, custId);
 
	return name;
 
}


3.2 Total number of rows

It shows how to query a total number of rows from database.

public int findTotalCustomer(){
 
	String sql = "SELECT COUNT(*) FROM CUSTOMER";
 
	int total = getSimpleJdbcTemplate().queryForInt(sql);
 
	return total;
}


下面是运行例子.
package com.mkyong.common;
 
import java.util.ArrayList;
import java.util.List;
 
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.mkyong.customer.dao.CustomerDAO;
import com.mkyong.customer.model.Customer;
 
public class SimpleJdbcTemplateApp 
{
    public static void main( String[] args )
    {
    	 ApplicationContext context = 
    		new ClassPathXmlApplicationContext("Spring-Customer.xml");
 
         CustomerDAO customerSimpleDAO = 
                (CustomerDAO) context.getBean("customerSimpleDAO");
 
         Customer customerA = customerSimpleDAO.findByCustomerId(1);
         System.out.println("Customer A : " + customerA);
 
         Customer customerB = customerSimpleDAO.findByCustomerId2(1);
         System.out.println("Customer B : " + customerB);
 
         List<Customer> customerAs = customerSimpleDAO.findAll();
         for(Customer cust: customerAs){
         	 System.out.println("Customer As : " + customerAs);
         }
 
         List<Customer> customerBs = customerSimpleDAO.findAll2();
         for(Customer cust: customerBs){
         	 System.out.println("Customer Bs : " + customerBs);
         }
 
         String customerName = customerSimpleDAO.findCustomerNameById(1);
         System.out.println("Customer Name : " + customerName);
 
         int total = customerSimpleDAO.findTotalCustomer();
         System.out.println("Total : " + total);
 
    }
}


query object list
	public List<CitiriskApp> getCitiriskApp(){
        SimpleJdbcTemplate simpleJdbc = new SimpleJdbcTemplate(getJdbcTemplate().getDataSource()); 
        String querySQL = "select * from citirisk_application";
        return simpleJdbc.query(querySQL, new ParameterizedRowMapper<CitiriskApp>() {

			@Override
			public CitiriskApp mapRow(ResultSet rs, int i) throws SQLException {
				CitiriskApp citiriskApp = new CitiriskApp();
				citiriskApp.setAppId(rs.getInt("app_id"));
				citiriskApp.setCsiId(rs.getInt("csi_id"));
				citiriskApp.setShortName(StringUtils.cleanSpace(rs.getString("short_name")));
				citiriskApp.setLongName(StringUtils.cleanSpace(rs.getString("long_name")));
				citiriskApp.setSmtSOEID(StringUtils.cleanSpace(rs.getString("smt_soe_id")));
				citiriskApp.setTechOwnerSOEID(StringUtils.cleanSpace(rs.getString("tech_owner_soe_id")));
				citiriskApp.setCitiriskContactSOEID(StringUtils.cleanSpace(rs.getString("citirisk_contact_soe_id")));
				citiriskApp.setRiskArchOwnerSOEID(StringUtils.cleanSpace(rs.getString("risk_arch_owner_soe_id")));
				citiriskApp.setBizOwnerSOEID(StringUtils.cleanSpace(rs.getString("biz_owner_soe_id")));				
				return citiriskApp;
			}
		});
	}


insert exmaple
	public void insert(Customer customer){
 
		String sql = "INSERT INTO CUSTOMER " +
			"(CUST_ID, NAME, AGE) VALUES (?, ?, ?)";
 
		jdbcTemplate = new JdbcTemplate(dataSource);
 
		jdbcTemplate.update(sql, new Object[] { customer.getCustId(),
			customer.getName(),customer.getAge()  
		});
 
	}


Conclusion

The SimpleJdbcTemplate isn’t a replacement for JdbcTemplate, it’s just a java5-friendly supplement to it.
分享到:
评论

相关推荐

    Spring之SimpleJdbcTemplate的使用

    1. **执行SQL查询**:SimpleJdbcTemplate提供了query()系列方法,可以执行SQL查询并返回结果集,支持多种结果映射方式,如List、Map、自定义对象等。 2. **执行更新操作**:update()方法用于执行INSERT、UPDATE、...

    使用Spring的SimpleJdbcTemplate完成DAO操作

    本篇文章将详细讲解如何使用Spring的`SimpleJdbcTemplate`来实现DAO操作,这是一种简单易用且强大的工具,特别适合小型项目或快速开发。 `SimpleJdbcTemplate`是Spring框架提供的一个轻量级数据库访问组件,它基于`...

    Spring-Reference_zh_CN(Spring中文参考手册)

    11.2.3. SimpleJdbcTemplate类 11.2.4. DataSource接口 11.2.5. SQLExceptionTranslator接口 11.2.6. 执行SQL语句 11.2.7. 执行查询 11.2.8. 更新数据库 11.3. 控制数据库连接 11.3.1. DataSourceUtils类 11.3.2. ...

    Spring MVC+SimpleJdbcDaoSupport增删改查小例子

    **Spring MVC + SimpleJdbcDaoSupport 增删改查小例子详解** Spring MVC 是一个广泛使用的Java Web框架,用于构建高效、灵活的Web应用程序。它提供了模型-视图-控制器(MVC)架构,使得开发者可以将业务逻辑、数据...

    Spring 2.0 开发参考手册

    11.2.3. SimpleJdbcTemplate类 11.2.4. DataSource接口 11.2.5. SQLExceptionTranslator接口 11.2.6. 执行SQL语句 11.2.7. 执行查询 11.2.8. 更新数据库 11.3. 控制数据库连接 11.3.1. DataSourceUtils类 ...

    Spring中文帮助文档

    11.2.7. 执行查询 11.2.8. 更新数据库 11.2.9. 获取自动生成的主键 11.3. 控制数据库连接 11.3.1. DataSourceUtils类 11.3.2. SmartDataSource接口 11.3.3. AbstractDataSource类 11.3.4. ...

    Spring API

    11.2.7. 执行查询 11.2.8. 更新数据库 11.2.9. 获取自动生成的主键 11.3. 控制数据库连接 11.3.1. DataSourceUtils类 11.3.2. SmartDataSource接口 11.3.3. AbstractDataSource类 11.3.4. ...

    Spring.3.x企业应用开发实战(完整版).part2

    11.5.2 SimpleJDBCTemplate 11.6 以OO方式访问数据库 11.6.1 使用MappingSqlQuery查询数据 11.6.2 使用SqlUpdate更新数据 11.6.3 使用StoredProcedure执行存储过程 11.6.4 SqlFunction类 11.7 小结 第12章 整合其他...

    spring chm文档

    11.2.3. SimpleJdbcTemplate类 11.2.4. DataSource接口 11.2.5. SQLExceptionTranslator接口 11.2.6. 执行SQL语句 11.2.7. 执行查询 11.2.8. 更新数据库 11.3. 控制数据库连接 11.3.1. DataSourceUtils类 ...

    Maven+spring3.0MVC注释方式开发的Web应用

    在项目中,你可以看到使用`SimpleJdbcTemplate`进行数据访问的例子,比如通过`update()`或`queryForList()`方法执行SQL语句。 在文件列表中提到的"MavenCRUD"可能是指项目的主要源代码文件夹,其中包括了以下几个...

    Spring3.x企业应用开发实战(完整版) part1

    11.5.2 SimpleJDBCTemplate 11.6 以OO方式访问数据库 11.6.1 使用MappingSqlQuery查询数据 11.6.2 使用SqlUpdate更新数据 11.6.3 使用StoredProcedure执行存储过程 11.6.4 SqlFunction类 11.7 小结 第12章 整合其他...

    mybatistest.7z

    这些例子可能涉及到如何配置MyBatis,如何编写Mapper接口和XML配置,如何使用MyBatis-Spring进行事务管理,以及如何在Spring Boot中集成MyBatis等实际操作。 总的来说,这个压缩包对于学习和理解Java数据库操作,...

    存储过程.docx

    以下是如何使用Spring的`JdbcTemplate`来调用这个存储过程: ```java public int getUserTopicNum(final int userId) { String sql = "{call P_GET_TOPIC_NUM(?,?)}"; Object obj = getJdbcTemplate().execute...

Global site tag (gtag.js) - Google Analytics