JDBCTemplate

Spring JDBC

	* Spring 框架对JDBC的简单封装  提供了一个jdbctemplate对象简化jdbc的开发。

步骤:

		1. 导入jar包
		2. 创建JdbcTemplate对象。依赖于数据库DataSource
			* JdbcTemplate template = new JdbcTemplate(ds);
		3. 调用JdbcTemplate的方法来完成增删改查操作
			* update(): 执行增删改语句
			* queryForMap():查询结果 将结果集封装为map集合 查询结果只能有一条
			* queryForList(): 查询结果将结果集封装为list集合
			* query(): 查询结果 将结果封装为JavaBean对象 **最常用**
				query 参数 RowMapper
				一般我们使用BeanPropertyRowMapper实现类  可以完成数据到javabean的自动封装
				通过名称匹配的方式,映射到属性中去
				  字段          bean属性
					USER_NAME --> userName
					USER_ID   --> userId
					
					但是碰到一些特殊的(暂不考虑命名是否合理)这就映射不上了!
					比如:
					ORDER_NUM2   --> OrderNum2 (should be orderNum2)
					ORDER_NUM_3      OrderNum3
				new BeanPropertyRowMapper<类型>(类型.class)
				* queryForObject:查询结果 将结果封装为对象

代码演示

	DataSource ds = DruidUtils.getDataSource();
	JdbcTemplate jdbcTemplate = new JdbcTemplate(ds);
	String sql = "update account set money = 5000 where name = ?";
	String name = "lisi";
	int count = jdbcTemplate.update(sql, name);
	System.out.println(count);

练习:

	@Test
	public void insertData() {
		String sql = "insert into account(name,money) values(?,?)";
		int count = jdbcTemplate.update(sql,"kb",81);
		System.out.println(count);
}

@Test
public void deleteData() {
	String sql = "delete from account where name = ? ";
	int count = jdbcTemplate.update(sql,"lisi");
	System.out.println(count);
}

@Test
public void selectData() {
	String sql = "select * from account where name = ?";
	List<Map<String, Object>> list = jdbcTemplate.queryForList(sql,"kb");
	for( Map<String, Object> map : list ) {
		System.out.println(map);
	}
}

@Test
public void selectDataBean() {
	String sql = "select * from account";
	List<Account> list = jdbcTemplate.query(sql, new RowMapper<Account>() {

		@Override
		public Account mapRow(ResultSet arg0, int arg1) throws SQLException {
			
			Account account = new Account();
			String name = arg0.getString("name");
			int money = arg0.getInt("money");
			account.setName(name);
			account.setMoney(money);
			return account;
		}
	});
	
	for(Account account : list) {
		System.out.println(account);
	}
	
}

//简化版本 把类的属性定义为引用数据类型 可以防止数据库中该字段内容为空时 发生错误
@Test
public void selectDataBean2() {
	String sql = "select * from account";
	List<Account> list = jdbcTemplate.query(sql,new BeanPropertyRowMapper<Account>(Account.class));
	for(Account account : list) {
		System.out.println(account);
	}
}

//queryforobject 一般用于执行一些聚合函数
@Test
public void selectCount() {
	String sql = "select count(*) from account ";
	long count = jdbcTemplate.queryForObject(sql,Long.class);
	System.out.println(count);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值