jdbcTemplate使用的简单笔记

/**
jdbcTmeplate的使用
其提供了增、删、改、查的方法
仔细说一下查询过程,其他的都差不多

单个查询:
1.他们都可以在sql中把参数写死
	select * from table where id = 1;
2.但是如果要动态拼接参数的时候,jdbcTemplate提供了简单的接口来实现
	在写sql的时候:
	select * from table where id = : id and name = : name
	上边的 * 可有拼接得来
	上边的 id = : id and name = : name 也可以拼接得来
	其中where后面的是我们的查询参数,那么我们怎么才能让springJdbc知道我们的查询条件呢?
		where后便的 : id 类似于占位符,我们需要填充数据进去,这里应该使用Map结构的数据结构来填充数据
		例如:**/
		Map<String, Object> paramSorce = new HashMap<String, Object>();
		paramSource.put("id", id);  // 这里键值必须与 :后面的 标记一样,jdbcTemlate就是根据键值去填充我们用 : 标记的参数的
		//然后调用接口去查询
		jdbcTemplate.queryForObject(sql, paramSource, new MyRowMapper(record)); //其中record是类型为MyRecord的一个java对象引用
		//结果回返回一个封装好的java对象,类型和 record类型一致为MyRecord
		//为什么回返回一个我们指定的java类型呢?并且还是封装好了我们的查询结果,这就需要我们研究一下RowMapper了
			//下面是MyRowMapper的写法;
				public class MyRowMapper implements RowMapper<MyRecord>{
					private MyRecord record;
					public MyRowMapper(){};
					public MyRowMapper(MyRecord record){
						this.record = record;
					}

					public MyRecord mapRow(ResultSet rs, int rowNum) throws SQLException{
						//在这里我们创造指定类型的java对象,并且封装ResultSet中的查询数据
						MyRecord records = new MyRecord();
						if(record == null || record._name) records.setName(rs.getString(NAME));
						//继续获取查询数据 这里 record 的作用 一个是指定返回的java类型, 一个是记录标识,用来封装我们想要封装的数据,所以我们可以事先指定record
						//中的标记,然后在这里按标记取值,所以它很重要
						return records;
					}
				}
		/**
			这里需要注意的是
			1.实现RowMapper接口,并在<>中传入我们想要返回的java类型
			2.复写mapRow(ResultSet rs, int rowNum) 方法,返回的类型因该与第一步的一致

查询多个
	与单个查询过程一致,就是掉方法的时候用不同的接口,返回的是集合,他会自动把我们指定的返回类型的结果集封装成List集合 */
	sql = "select * from table where id= : id";
	paramSorce = new HashMap<String, Object>();
	paramSource.put("id", id);
	jdbcTemplate.query(sql, paramSource, new MyRowMapper(record));
	//返回一个Lisr<MyRecord>的集合

计数
	sql = "select count(NAME) from table where AGE : age and WEIGHT : weight";
	paramSource = new HashMap<String, Object>();
	paramSource.put("age", age);
	paramSource.put("weight", weight);
	jdbcTemplate.queryForObject(sql, paramSource, Integer.class); //这里如果要返回基本类型,直接指定class类型就好

插入
	sql = "insert into table (ID, NAME) values (:id, :name)";
	paramSource = new HashMap<String, Object>();
	paramSource.put("id" id);
	paramSource.put("name", name);
	jdbcTemplate.update(sql, paramSource);

更新
	sql = "update table set NAME=:name, AGE=:age where ID=:id";
	paramSource = new HashMap<String, Object>();
	paramSource.put("id" id);
	paramSource.put("name", name);
	paramSource.put("age", age);
	jdbcTemplate.update(sql, paramSource);

删除
	sql = "delete from table where ID=:id";
	paramSource = new HashMap<String, Object>();
	paramSource.put("id" id);
	jdbcTemplate.update(sql, paramSource);

其中 插入 更新 删除 都是使用update 方法,区别在于sql的写法和传的参数不一样,故能实现不同的功能
他们返回整型
1 成功
-1 失败




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值