jdbcTemplate实现查询操作

本文详细介绍了如何利用jdbcTemplate这个Spring框架中的组件执行数据库查询操作,包括基本的查询、条件查询等,帮助开发者高效地与数据库交互。
摘要由CSDN通过智能技术生成

jdbcTemplate实现查询操作

//查询总条数
	@Test
	public void testCount(){
		//创建数据库信息
		DriverManagerDataSource dataSource= new DriverManagerDataSource();
		dataSource.setDriverClassName("com.mysql.jdbc.Driver");
		dataSource.setUrl("jdbc:mysql:///springday03");
		dataSource.setUsername("root");
		dataSource.setPassword("root");
		
		//创建jdbcTemplate模板对象
		JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
		
		//调用模板方法进行实现操作
		   //创建sql语句
		String sql="select count(*) from user";
		
		int rows=jdbcTemplate.queryForObject(sql, Integer.class);
		System.out.println(rows);
		   
	}
public class TemplateDemo2 {
	/*
	 * QueryRunner runner = new QueryRunner(datasource);
	 * 返回对象
	 * runner.query(sql,new BeanHandler<User>(User.class));
	 * 
	 * 返回list集合
	 * runner
以下是使用JdbcTemplate实现流式查询的示例代码: ```java import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.sql.DataSource; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.PreparedStatementSetter; import org.springframework.jdbc.core.RowCallbackHandler; public class JdbcStreamQueryExample { private JdbcTemplate jdbcTemplate; public JdbcStreamQueryExample(DataSource dataSource) { this.jdbcTemplate = new JdbcTemplate(dataSource); } public void streamQuery(String sql, RowCallbackHandler rowCallbackHandler, PreparedStatementSetter preparedStatementSetter) throws SQLException { jdbcTemplate.query(con -> { PreparedStatement stmt = con.prepareStatement(sql, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); stmt.setFetchSize(Integer.MIN_VALUE); preparedStatementSetter.setValues(stmt); return stmt; }, rowCallbackHandler); } } ``` 在上面的代码中,我们使用了`jdbcTemplate.query()`方法来执行查询操作。在这个方法中,我们传入了一个`PreparedStatementCreator`对象,它用于创建一个`PreparedStatement`对象。在这个对象中,我们设置了`ResultSet.TYPE_FORWARD_ONLY`和`ResultSet.CONCUR_READ_ONLY`参数,以便启用流式查询。我们还设置了`setFetchSize(Integer.MIN_VALUE)`,以便告诉JDBC驱动程序我们希望使用流式查询。 我们还传入了一个`RowCallbackHandler`对象,它用于处理查询结果集中的每一行数据。在这个对象中,我们可以将每一行数据转换为Java对象,并将其添加到一个集合中,以便后续处理。 最后,我们还传入了一个`PreparedStatementSetter`对象,它用于设置查询参数。在这个对象中,我们可以设置查询参数的值。 使用上面的代码,我们可以像下面这样执行流式查询: ```java String sql = "SELECT * FROM my_table WHERE some_column = ?"; jdbcTemplate.streamQuery(sql, new RowCallbackHandler() { @Override public void processRow(ResultSet rs) throws SQLException { // 处理每一行数据 } }, new PreparedStatementSetter() { @Override public void setValues(PreparedStatement ps) throws SQLException { ps.setString(1, "some_value"); } }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值