jdbcTemplate实现crud操作(查询介绍)

本文介绍了使用 JdbcTemplate 实现数据库查询操作的具体方法,包括查询单个记录、查询单个对象及查询多个对象并返回列表。文章详细展示了如何通过 JdbcTemplate 的 queryForObject 和 query 方法进行查询,并提供了 MyRowMapper 类用于数据封装。

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

05-jdbcTemplate实现crud操作(查询介绍)




  查询具体实现
    第一个查询返回某一个值   
My  my=	jdbcTemplate.queryForObject(sql, new MyRowMapper());
   (1)第一个参数是sql语句
    (2)第二个参数   返回类型的class
public  void testCount(){
		// 设置数据库信息
		DriverManagerDataSource dataSource=new DriverManagerDataSource();
		dataSource.setDriverClassName("com.mysql.jdbc.Driver");
		dataSource.setUrl("jdbc:mysql:///news");
		dataSource.setUsername("root");
		dataSource.setPassword("root");

		//创建jdbcTemplate对象,设置数据源
		JdbcTemplate  jdbcTemplate=new JdbcTemplate(dataSource);

		//调用JdbcTemplate对象里面的方法实现操作
		//创建语句
		String sql="select count(*) from my ";
		//调用方法
    	int  count=	jdbcTemplate.queryForObject(sql, Integer.class);	
		System.out.println("记录条数"+count);

	}


jdbc查询
    
	@Test
	public void testCount(){
		Connection conn=null;
		PreparedStatement psmt=null;
		ResultSet rs=null;
		//加载驱动
		try {
			Class.forName("com.mysql.jdbc.Driver");
			//创建连接
			conn=DriverManager.getConnection("jdbc:mysql:///news", "root", "root");
			String sql="select * from my where  id=?";
			psmt=	conn.prepareStatement(sql);
			psmt.setString(1, "zhu");
			rs=psmt.executeQuery();
			while(rs.next()){
				My  my=new My();
				String id=	rs.getString("id");
				String password=	rs.getString("password");
				my.setId(id);
				my.setPassword(password);
				System.out.println(my);
			}

		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			try {
				rs.close();
				psmt.close();
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

		}
	}


  第二个 查询返回对象     
My  my=	jdbcTemplate.queryForObject(sql, new MyRowMapper(), "zhu");
      第一个参数是sql语句
      第二个参数是RowMapper ,是接口,类似于dbutils里面接口
      第三个参数是  可变参数
     
	//查询功能  返回一个对象
	@Test
	public  void testObject(){
		// 设置数据库信息
		DriverManagerDataSource dataSource=new DriverManagerDataSource();
		dataSource.setDriverClassName("com.mysql.jdbc.Driver");
		dataSource.setUrl("jdbc:mysql:///news");
		dataSource.setUsername("root");
		dataSource.setPassword("root");
		//创建jdbcTemplate对象
		JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource);
		//写sql语句,根据my查询
		String  sql="select  * from my where id=? ";
		//调用jdbcTemplate的方法实现 
		//第二个参数是接口 RowMapper ,需要自己写类实现接口,自己做数据封装。
		My  my=	jdbcTemplate.queryForObject(sql, new MyRowMapper(), "zhu");
		System.out.println(my);
	}
    第三个  查询返回list集合
      (1)sql 语句
//调用jdbcTemplate的方法实现 
		//第二个参数是接口 RowMapper ,需要自己写类实现接口,自己做数据封装。
	     List<My>  list=	jdbcTemplate.query(sql, new MyRowMapper());


      (2)RowMapper接口,自己写类实现数据封装
      (3)可变参数
	//4 查询返回集合
	@Test
	public  void testList(){
		// 设置数据库信息
		DriverManagerDataSource dataSource=new DriverManagerDataSource();
		dataSource.setDriverClassName("com.mysql.jdbc.Driver");
		dataSource.setUrl("jdbc:mysql:///news");
		dataSource.setUsername("root");
		dataSource.setPassword("root");
		//创建jdbcTemplate对象
		JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource);
		//写sql语句,根据my查询
		String  sql="select  * from my";
		//调用jdbcTemplate的方法实现 
		//第二个参数是接口 RowMapper ,需要自己写类实现接口,自己做数据封装。
	     List<My>  list=	jdbcTemplate.query(sql, new MyRowMapper());
		System.out.println(list);
	}


MyRowMapper类

class MyRowMapper implements RowMapper<My>{
	@Override
	public My mapRow(ResultSet rs, int num) throws SQLException {
		// TODO Auto-generated method stub
		//从结果集里面把数据得到
		String id=rs.getString("id");
		String password=rs.getString("password");
		//2 把得到数据到对象里面
		My my=new My();
		my.setId(id);
		my.setPassword(password);
		return my;
	}

}
程序截图




程序地址: http://pan.baidu.com/s/1o8Rt9rk

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值