【学习笔记】Spring JDBCTemplate的使用

依赖包

 <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>5.2.9.RELEASE</version>
</dependency>
<dependency>
         <groupId>mysql</groupId>
         <artifactId>mysql-connector-java</artifactId>
         <version>5.1.46</version>
</dependency>

JDBCTemplate的操作流程

(1)准备数据库
(2)依赖配置
(3)给数据源DriverManagerDataSource设置四大信息
(4)调用update方法
update(sql, 实际传递的参数 ); 可以完成增删改

public class TestJdbcTemplate {
    @Test
    public void test01(){
        //创建数据源对象 四大信息
        DriverManagerDataSource dataSource=  new DriverManagerDataSource();
        dataSource.setUrl("jdbc:mysql://localhost:3306/springjdbc");
        dataSource.setUsername("root");
        dataSource.setPassword("123456");
        //JdbcTemplate对象  update 增删改
        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);//参 数据源连接池
        //调用update             参1 sql,参2 占位符对应的参数
        jdbcTemplate.update("insert into stu values(?,?,?,?)",1000,"jack","1班",100);
        
    }
}

在JdbcTemplate中执行SQL语句的方法大致分为3类:

execute:可以执行所有SQL语句,一般用于执行DDL语句。
update:用于执行INSERT、UPDATE、DELETE等DML语句。
queryXxx:用于DQL数据查询语句。

JDBCTemplate-单值查询和查询一行

(1)queryForObject
返回的结果可以是一个值也可以是一个对象
如:String Integer
如:Student
(2)如果是一个对象,则需要BeanPropertyRowMapper
》什么是BeanPropertyRowMapper
将一行表记录 赋值给 一个javaBean对象返回
但要求列名与表名相同
(3)结果赋值给Map,很少用。

    @Test
    public void test04(){
	 		单值查询  参一sql语句.2,返回结果,3,查询参数
     	String name =jdbcTemplate.queryForObject("select sname from stu where sid=?;",String.class,17);

        //一行数据转换成一个对象需要rowmapper,参数为返回类型的class对象
        BeanPropertyRowMapper rowMapper = new  BeanPropertyRowMapper(Stu.class);
        //参1 sql 参2 RowMapper 参3 赋值
        Stu s = (Stu) jdbcTemplate.queryForObject(sql,rowMapper,17);

        Map<String,Object> map = jdbcTemplate.queryForMap(sql,17);//参1 sql 参3 赋值
        System.out.println(map.get("sid"));
    }

JDBCTemplate-多值查询

(1)queryForList
返回结果是一个List
List元素可是javaBean对象也可以是Map<String,Object>

//返回结果是多个行 query
@Test
public void test05(){
	方式一	
    String sql = "select * from stu where score > 300";
    BeanPropertyRowMapper rowmapper = new BeanPropertyRowMapper(Stu.class);
    List<Stu> list = jdbcTemplate.query(sql,rowmapper);
    System.out.println(list);
    
    方式二
    List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
    System.out.println(list);
    Map<String,Object> stu1 =list.get(1);
    System.out.println(stu1.get("sname"));
}

查询的方法,重点2,5 方法

  1. queryForObject(sql ,返回数据类型的字节码对象, 实际传递的参数); 查询指定的字段
  2. queryForObject(sql, BeanPropertyRowMapper, 实际传递的参数) 查询对象
  3. queryForMap(sql , 实际传递的参数) 返回的是一个Map , map对象中存放的是对象的数据, 以键值对方式存储
  4. queryForList(sql , 实际参数) 返回的是List<Map<String,Object>> 查询一个List的结果,但是list中有map
  5. query(sql,BeanPropertyRowMapper) 查询一个List<POJO对象>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值