三:Spring的JDBCTemplate
介绍:
Spring框架对JDBC的简单的封装,提供一个JDBCTemplate对象简化JDBC的开发
使用步骤:
1:导入jar
2:创建JdbcTemplate对象,依赖于数据源DataSource
JdbcTemplate template = new JdbcTemplate(dataSource)
3:调用JdbcTemplate的方法来完成CRUD操作
常用方法:update() : 执行DML语句。insert,update,delete语句;
queryForMap() : 执行select,将结果集封装为map集合;
queryForList() : 执行select,将结果集封装为list集合;
query() : 执行select,将结果集封装为JavaBean对象;
queryForObject() : 执行select,将结果集封装为数据类型的对象;
测试案例:
package JDBCTemplate;
import Druid.JdbcUtils;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.Scanner;
public class JdbcTemplateDemo00 {
public static void main(String[] args) {
//导入jar包
//创建JDBCTemplate对象
JdbcTemplate template = new JdbcTemplate(JdbcUtils.getDataSource());
//定义SQL
String sql = "update tb_item set price = ? where id = ?";
//获取控制台输入
Scanner scanner1 = new Scanner(System.in);
System.out.println("请输入price:");
Integer price = scanner1.nextInt();
Scanner scanner2 = new Scanner(System.in);
System.out.println("请输入id:");
Integer id = scanner2.nextInt();
//调用方法
int i = template.update(sql,price,id);
System.out.println(i);
}
}
常用方法测试案例:
package JDBCTemplate;
import Druid.JdbcUtils;
import org.junit.Test;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import pojo.Item;
import java.math.BigDecimal;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
public class JdbcTemplateDemo01 {
JdbcTemplate template = new JdbcTemplate(JdbcUtils.getDataSource());
//update()案例:修改价格
@Test
public void test01(){
String sql = "update tb_item set price = 1000 where id = 875724";
int count = template.update(sql);
System.out.println(count);
}
//queryForMap()案例:查询单个对象
@Test
public void test02(){
String sql = "select * from tb_item where id = 875724";
/**
* queryForMap()方法将结果集封装为map集合,
* 将列名作为key,将值作为value,将这条记录封装为一个map集合
* 这个方法查询的结果集长度只能是1
*/
Map<String,Object> map = template.queryForMap(sql);
System.out.println(map);
}
//queryForList()案例:查询多个对象
@Test
public void test03(){
/**
* queryForList()将结果集封装为list集合,
* 这个方法是把每一条记录封装为一个map集合,在将map集合装载到list集合中
*/
String sql = "select * from tb_item where id in (875724,983253)";
List<Map<String,Object>> list = template.queryForList(sql);
for (Map<String, Object> map : list) {
System.out.println(map);
}
}
//query() 案例:查询对象 自己重写RowMapper的mapRow()方法
@Test
public void test04(){
String sql = "select * from tb_item";
//匿名内部类写法
List<Item> query = template.query(sql, new RowMapper<Item>() {
//重写RowMapper的mapRow方法
@Override
public Item mapRow(ResultSet rs,int i)throws SQLException{
Item item = new Item();
Long id = rs.getLong("id");
String title = rs.getString("title");
String sellPoint = rs.getString("sell_point");
BigDecimal price = rs.getBigDecimal("price");
Integer num = rs.getInt("num");
String barcode = rs.getString("barcode");
String image = rs.getString("image");
Long cid = rs.getLong("cid");
Integer status = rs.getInt("status");
Date created = rs.getDate("created");
Date updated = rs.getDate("updated");
item.setId(id);
item.setTitle(title);
item.setSellPoint(sellPoint);
item.setPrice(price);
item.setNum(num);
item.setBarcode(barcode);
item.setImage(image);
item.setCid(cid);
item.setStatus(status);
item.setCreated(created);
item.setUpdated(updated);
return item;
}
});
for (Item item : query) {
System.out.println(item);
}
}
//query() 案例:查询对象 使用SpringTemplate提供的实现类
@Test
public void test05(){
/**
* RowMapper
* 一般我们使用BeanpropertyRowMapper实现类,
* 可以完成数据到JavaBean的自动封装
* new BeanPropertyRowMapper<实体类>(实体类.class)
*/
String sql = "select * from tb_item";
List<Item> query =
template.query(sql,new BeanPropertyRowMapper<Item>(Item.class));
for (Item item : query) {
System.out.println(item);
}
}
// queryForObject() 案例:查询条数
@Test
public void test06(){
/**
* 一般用于聚合函数的查询
*/
String sql = "select count(0) from tb_item";
int i = template.queryForObject(sql,int.class);
System.out.println(i);
}
}
本文只是个人学习内容整理的笔记,如有侵权,即联系870013269@qq.com删除