Spring学习之JdbcTemplate笔记2

本文详细介绍如何使用JdbcTemplate进行数据库查询,包括返回单个值、单个对象及对象集合的三种情况,提供具体代码实例,帮助读者掌握不同场景下的查询方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现对数据库的查询操作
分为以下三种情况
1.返回值是一个值
2.返回值是一行(即一个对象)
3.返回值是多行(即一个对象集合)

前两种调用的执行方法与第三种方法不同

数据库user表数据:
在这里插入图片描述
首先创建数据库对象User:

package jdbctemplate;

public class User {
	private String username;
	private String password;
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	@Override
	public String toString() {
		return "User [name=" + username + ", password=" + password + "]";
	}
}

1.返回值是一个值,代码如下:

public static void select1(){
		//1:查询返回某一个值
		DriverManagerDataSource datasource=new DriverManagerDataSource();
		datasource.setDriverClassName("com.mysql.jdbc.Driver");
		datasource.setUrl("jdbc:mysql://localhost:3307/spring?useUnicoding=true&characterEncoding=utf-8&useSSL=false");
		datasource.setUsername("root");
		datasource.setPassword("513721abcd");
		JdbcTemplate jdbcTemplate=new JdbcTemplate(datasource);
		String sql="select count(*) from user";
		//注意方法中的参数
		int count=jdbcTemplate.queryForObject(sql, Integer.class);//调用JdbcTemplate中的queryForObject方法,返回值是泛型
		//这里返回值是一个Integer
		System.out.println(count);
	}

执行效果:
在这里插入图片描述
2.返回值是一行(即一个对象),代码如下:

public static void select2(){
		//查询返回某一个对象
		DriverManagerDataSource datasource=new DriverManagerDataSource();
		datasource.setDriverClassName("com.mysql.jdbc.Driver");
		datasource.setUrl("jdbc:mysql://localhost:3307/spring?useUnicoding=true&characterEncoding=utf-8&useSSL=false");
		datasource.setUsername("root");
		datasource.setPassword("513721abcd");
		JdbcTemplate jdbcTemplate=new JdbcTemplate(datasource);
		String sql="select* from user where username=?";//?占位符
		//第二个参数是自己写的实现RowMapper接口的类,类型为之前写的User
		User user=jdbcTemplate.queryForObject(sql, new myRowMapper(), "tom");//使用queryupdate方法,需要自己写一个继承rowmapper接口的类
		System.out.println(user);
	}

第二种执行方法queryForObject中第二个参数是手写的实现RowMapper接口
的myRowMapper类

class myRowMapper implements RowMapper<User>{//实现接口类的类型是User####
	@Override
	public User mapRow(ResultSet arg0, int arg1) throws SQLException {
		//得到结果
		String username=arg0.getString("username");//获取数据库中username
		String password=arg0.getString("password");//获取数据库中password
		//将结果封装到对象中
		User user=new User();
		user.setUsername(username);//设置User对象的username属性
		user.setPassword(password);//User对象的password属性
		return user;
	}
}

执行效果:
在这里插入图片描述
3返回值是多行(即一个对象集合),代码如下:

public static void select3(){
		//查询返回一个对象集合
		DriverManagerDataSource datasource=new DriverManagerDataSource();
		datasource.setDriverClassName("com.mysql.jdbc.Driver");
		datasource.setUrl("jdbc:mysql://localhost:3307/spring?useUnicoding=true&characterEncoding=utf-8&useSSL=false");
		datasource.setUsername("root");
		datasource.setPassword("513721abcd");
		JdbcTemplate jdbcTemplate=new JdbcTemplate(datasource);
		String sql="select* from user";
		List<User> user=jdbcTemplate.query(sql, new myRowMapper());//**使用query方法**
		//System.out.println(user);
		for (User user2 : user) {//遍历集合
			System.out.println(user2.getUsername()+"\t"+user2.getPassword());
		}
	}

调用得执行方法是query,第二个参数是手写的实现RowMapper接口
手动写的myRowMapper类,返回值是一个数据库对象集合

执行效果:
在这里插入图片描述
注意:当返回值为一个对象或者一个对象集合时,前者调用queryForObjec,后者调用query,两个方法第二个参数(new 类名()),此类是手写的实现RowMapper接口的类,并且泛型类型是数据库对象类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值