当前位置: 代码迷 >> 综合 >> Spring JdbcTemplate 的使用(spring4)
  详细解决方案

Spring JdbcTemplate 的使用(spring4)

热度:68   发布时间:2023-11-30 16:45:39.0

Spring JdbcTemplate

  • 简单介绍
  • 方法介绍
    - - 基本方法介绍
    - - 常用方法介绍

JdbcTemplate 介绍

JdbcTemplate是Spring框架对原生JDBC操作的封装,为jdbc数据库操作 (固定的流程),提供丰富callback回调接口功能,方便用户自定义加工细节,更好模块化jdbc操作,简化传统的JDBC操作的复杂和繁琐过程


Spring JdbcTemplate 基本方法

方法名 用途
execute() 可用于执行任何sql语句,但是一般用来执行DDL语句
query() queryForXxx() 用来执行查询相关的语句
update() batchUpdate() update()方法用来执行增加 修改和删除等语句 batchUpdate()方法用来执行批处理相关的语句
call()方法 用于执行存储过程、函数相关的语句

Spring JdbcTemplate 常用方法

  • query(sql)
public List<Record> findDataById(int newId,int row) {
Object[] args = new Object[] { newId, row };
sql = "select id,room_id,room_code,start_time,ifnull(online_time,0),end_time,create_time from acdn_record where id> ? limit 0,?";
RowMapper<Record> im=     
BeanPropertyRowMapper.newInstance(Record.class);return jdbcTemplate.query(sql,args,im);
}
  • queryForObject(sql,返回类.class)
public int findMaxId() {sql = "SELECT MAX(ID) FROM user";return jdbcTemplate.queryForObject(sql,Integer.class);
}
  • queryForRowSet(sql)
public SqlRowSet userInfo() {sql = "select uid,username,sex,age from user";return jdbcTemplate.queryForRowSet(sql);
}
  • queryForRowSet(sql,args)
public SqlRowSet userInfoById(String anchorId) {Object [] args = new Object [] {anchorId};sql = "select uid,username,sex,age from user where uid = ?";return jdbcTemplate.queryForRowSet(sql,args);
}
  • queryForList(sql, 返回类.class)

    注:这有个大坑,当时还让小编跳进去了
    这里的ForList返回的是一列的List 并不是多列

public List<Integer> getIdList(){sql = "select uid from user";return jdbcTemplate.queryForList(sql,Integer.class);
}
  • update(sql)
public int updateInfo(String anchorId){
Object [] args = new Object []{anchorId}sql = "update user set uaername = ? where uid = ?"; return jdbcTemplate.update(sql,args );
}
  • batchUpdate(批量新增/修改数据 两种方法大同小异)
# 批量新增数据
public void batchInsertData(List<Record> relist) {List<Record> temList = relist;sql = "insert into record (id,room_id,room_code) values(?,?,?)";jdbcTemplate.batchUpdate(sql, new    BatchPreparedStatementSetter() {@Overridepublic int getBatchSize() {return temList.size();}@Overridepublic void setValues(PreparedStatement ps, int i) {try {ps.setInt(1, temList.get(i).getId());ps.setInt(2, temList.get(i).getRoom_id());ps.setString(3, temList.get(i).getRoom_code());    }catch (SQLException e) {e.printStackTrace();    }}});
}
# 批量修改数据
public void batchUpdateData(List<Info> list) {sql = "update record set end_time=?,duration=? where id =?";jdbcTemplate.batchUpdate(sql, newBatchPreparedStatementSetter() {public void setValues(PreparedStatement ps, int i) throws SQLException {ps.setString(1, list.get(i).getEnd_time());ps.setInt(2, list.get(i).getOnline_time());ps.setInt(3, list.get(i).getId());
}public int getBatchSize() {return list.size();}});
}

目前小编常用的springjdbc的方法就这些 后期遇到会更新哟

  相关解决方案