`

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的使用

    NULL 博文链接:https://1194867672-qq-com.iteye.com/blog/1291025

    使用Spring的SimpleJdbcTemplate完成DAO操作

    我的使用Spring的SimpleJdbcTemplate完成DAO操作实例 博文链接:https://zmx.iteye.com/blog/373749

    Spring 通过连接mysql,通过JdbcTemplate和SimpleJdbcTemplate来操作数据库

    本代码总结了,spring通过JdbcTemplate和SimpleJdbcTemplate来操作数据库的各种方法。 本代码使用的maven project。

    Spring mysql数据库的配置与链接

    SimpleJdbcTemplate Spring Mysql

    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 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类 ...

    Spring4.0从入门到精通springmvcjdbctemplatedemo

    spring4.0的jdbctemplate与springmvc全注解的整合登陆例子.里面已经包括需要的jar包.使用的是j2ee6如果没有请升级你的eclipse或myeclipse

    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章 整合其他...

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

    使用Maven+spring3.0MVC注释方式+SimpleJdbcTemplate开发的Web CRUD应用,没有将jar包上传,可以自己去下载

    SPRING API 2.0.CHM

    All Classes AbstractAdvisorAutoProxyCreator AbstractApplicationContext AbstractApplicationEventMulticaster AbstractAspectJAdvice AbstractAspectJAdvisorFactory AbstractAspectJAdvisorFactory....

    用java调用oracle存储过程

    通过实例详细介绍了用java调用oracle存储过程的方法和步骤,包括无返回值的存储过程、有返回值的存储过程(非列表)和返回列表的存储过程的编写、JAVA调用,是一个对存储过程调用的一个全面总结,对程序开发具体实际...

Global site tag (gtag.js) - Google Analytics