Spring之 JdbcTemplate的使用

本文详细介绍了Spring框架中的JdbcTemplate,这是一个用于简化JDBC操作的工具类。主要内容包括JdbcTemplate的基本概念、常用方法如queryForObject、query和update的使用,以及具体的数据库增删改查操作实例。通过实例展示了如何进行单值查询、键值对查询和成员列表查询。JdbcTemplate能有效管理和避免JDBC使用中的常见问题,提高开发效率。

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

目录

1、什么是JdbcTemplate

2、JdbcTemplate的常用方法

最常用方法:

【queryForObject】查询出一条记录并封装到一个对象中。可以返回的是String、Integer、Double或者自定义bean。但是如果查询的记录为0条或者大于1条,对不起抛出异常。(小本本记好)

【query方法】返回结果是list,且list中元素必须是自定义bean;

【update方法】:用于 增加、删除、修改操作(返回的值是受影响行数)

3、具体实例

增加、删除、修改(具体操作基本一致)

查询分如下几种情况

单值查询

1.不需要填充参数的单值查询

2.填充参数

键值对查询

1.queryForMap(单个键值对)

2.queryForObject(多个键值对封装成一个List集合进行查询)

成员列表查询(query)

1.不需要填充参数

2.填充参数


1、什么是JdbcTemplate

它是 Spring 框架中提供的一个对象,是对原始 Jdbc API 对象的简单封装。通过这个类可以让我们对于JDBC的使用游刃有余。并且JdbcTemplate处理了资源的建立和释放,它也能帮助我们避免一些常见的错误,比如忘了总要关闭连接。除了JdbcTemplate,spring 框架还为我们提供了很多的操作模板类。

 

2、JdbcTemplate的常用方法

1、execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;

       Execute、executeQuery、executeUpdate

2、update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句 SQL SERVCER(GO SQL语句 GO) ;

3、query方法及queryForXXX方法:用于执行查询相关语句;

4、call方法:用于执行存储过程、函数相关语句。

最常用方法:

【queryForObject】查询出一条记录并封装到一个对象中。可以返回的是String、Integer、Double或者自定义bean。但是如果查询的记录为0条或者大于1条,对不起抛出异常。(小本本记好)

【query方法】返回结果是list,且list中元素必须是自定义bean;

【update方法】:用于 增加、删除、修改操作(返回的值是受影响行数)

3、具体实例

增加、删除、修改(具体操作基本一致)

String sql="insert into team(tname,location) value (?,?)";
return  this.getJdbcTemplate().update(sql,team.getName(),team.getLocation());

查询分如下几种情况

单值查询

1.不需要填充参数的单值查询

//查询队伍中有多少只队伍(tid唯一)
String sql="select count(tid) from team";
return this.getJdbcTemplate().queryForObject(sql,Integer.class);//Integer.class表示返回值类型

2.填充参数

//SQL_LOGIN = "SELECT ID FROM EADMIN WHERE USERNAME=? AND PASSWORD=?";

public boolean login(String username, String password) {
   Integer i =  this.getJdbcTemplate().queryForObject(SQL_LOGIN,new Object[]{username,password},Integer.class);
    if (i!=null)
        return true;
        else
            return false;
}

键值对查询

1.queryForMap(单个键值对)

String sql="select max(tid),min(tid) from team";
return this.getJdbcTemplate().queryForMap(sql);

2.queryForObject(多个键值对封装成一个List集合进行查询)

public List<Map<String, Integer>> console() {

    ArrayList<Map<String, Integer>> data11 = new ArrayList<>();
     data11 =  this.getJdbcTemplate().queryForObject(SQL_CONSOLE_EXPRESSER, new RowMapper<ArrayList<Map<String, Integer>>>() {
         @Override
         public ArrayList<Map<String, Integer>> mapRow(ResultSet resultSet, int i) throws SQLException {
             ArrayList<Map<String, Integer>> data = new ArrayList<>();
             int data_size = resultSet.getInt("data_size");
             int data_day = resultSet.getInt("data_day");
             Map data1 = new HashMap();
             data1.put("data_size", data_size);
             data1.put("data_day", data_day);
             data.add(data1);
             return data;
         }
     });
     return data11;

}

成员列表查询(query)

1.不需要填充参数

String sql="select * from team where";
return this.getJdbcTemplate().query(sql, new RowMapper<Team>() {
    @Override
    public Team mapRow(ResultSet resultSet, int i) throws SQLException {
        Team team=new Team();
        team.setId(resultSet.getInt("tid"));
        team.setName(resultSet.getString("tname"));
        team.setLocation(resultSet.getString("location"));
        return team;
    }
});

2.填充参数

public List<Expresser> findAll(int limit, int offset, int pageNum) {

    return this.getJdbcTemplate().query(SQL_FIND,new Object[]{offset,pageNum}, new RowMapper<Expresser>() {
                @Override
                public Expresser mapRow(ResultSet resultSet, int i) throws SQLException {

                    return hasResultset(resultSet);
                }
            });

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值