spring-jdbcTemplate

一. spring 数据库jdbc

spring-jdbc 是一款spring提供的数据库工具操作包

类似于dbutils!对比dbutils来说,他更加灵活;

数据库的好坏再看处理结果集的时候

dbutils: resultSetHandler list …

Spring-jdbc 没有提供 只提供resultset,结果可以自己任意封装!

spring-jdbc介绍

​ spring-jdbc是一款数据库工具,对应的是Apache的dbutils:他对多表查询不灵活

​ spring-jdbc没有对结果集进行封装,直接给用户暴露resultset,需要用户自己封装结果集

​ 单表查询效率不高,但是多表查询性能良好

相同点:都可以直接导入连接池(DataSource),自动管理连接

spring-jdbc初步体验
步骤一:导包

​ ioc|di core beans conrtext expression

​ test junit test

​ aop cglib apring-aop spring-aspects aspectjweaver

​ spring jdbc mysql-container

步骤二: 创建数据连接池对象

创建JdbcTemplate对象,并传入连接池

方式一:构造函数传参

方式二:调用setter方法

步骤三: 进行crud操作
DDL :

​ void excute(sql,object…args);

DML:

​ int update(sql,object…args);

DQL:

​ 1. List query(String sql,new RowMapper<>(),Object…args)

​ 适合场景:

​ 返回值为list集合

​ 泛型是一个自定义类型的

  1. List queryForList(String sql,基本类型.class,object…args)

​ 适合场景: 返回值为list集合 、String 类型的

​ 泛型为基本类型的

  1. T queryForObject(String sql,基本类型.class|RoeMapper<>(),object…args);

​ 使用场景:

​ 返回单一对象的场景,要求查询列市住建或者是为一列

​ 例如聚合函数单一结果,可以使用他;

RowMapper结果解析器
  1. 帮我们移动光标,自动指向下一条记录
  2. 处理返回结果

创建方式:

public class RoMapper implements RowMapper<User> {

 @Override
 public User mapRow(ResultSet rs, int rowNum) throws SQLException {
     /**
            * //todo 作用 1:帮我们自动移动光标
            * //TODO 2:处理结果集
            * 此方法会执行多次,执行此处就是查询的数据有多少条决定,
            * spring-jdbc会自动移动光标
      *我们只需要去管当前行的数据返回即可返回的整体是一个集合
            * 由于此方法要多次执行,因此我们只需要处理一个结果就行
      */
     System.out.println("rowNum=="+rowNum);//记录条数
     //第一步:获取结果
     String name = rs.getString("name");
     //第二步:创建实体类,setter 设值
     User user = new User();
     user.setName(name);
     return user;
 }
}
spring-jdbc练习
1. 创建一个user表

​ 包含主键int 类型 的 id

​ name varchar 类型

​ age int 类型

2. 修改所有用户年龄增加1岁
public class JdbcTemplateTest {
@Test
public void testTemplate(){
  //创建连接池对象
  DataSource dataSource = new ComboPooledDataSource();
  JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
  String sql  ="select * from user";
  List<User> query = jdbcTemplate.query(sql, new UserRowMapper());
  System.out.println(query);
}
class UserRowMapper implements RowMapper<User>{

  @Override
  public User mapRow(ResultSet rs, int rowNum) throws SQLException {
      User user = new User();
      String name = rs.getString("name");
      int age = rs.getInt("age");
      int id = rs.getInt("id");
      user.setName(name);
      user.setId(id);
      user.setAge(age+1);
      return user;
  }
}
}
##### result:
[User{id=1, name='hfh', age=24}, User{id=2, name='zxc', age=56}, ...
3. 查询id = 1 的用户
String sql  ="select * from user where id =?";
  List<User> query = jdbcTemplate.query(sql, new UserRowMapper(),1);
result:
[User{id=1, name='hfh', age=23}]
result:5
4. 查询所有用户信息

如上1

5. 查询一共有多少用户
String sql  ="select count(1) from user";
  Integer integer = jdbcTemplate.queryForObject(sql, Integer.class);
  System.out.println(integer);
6. 查询用户姓名
String sql  ="select name from user";
  List<String> list = jdbcTemplate.queryForList(sql, String.class);
  System.out.println(list);
result:
[hfh, zxc, gkj, ytoerip, gklkeg]
7. 删除id = 2 的用户
String sql = "delete from user where id = ?";
     int update = jdbcTemplate.update(sql, 2);
     System.out.println(update);


or:
String sql = "delete from  user where id=3";
     jdbcTemplate.execute(sql);
springjdbc 基于ioc|di思想的练习
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值