依赖包
<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 方法
queryForObject(sql ,返回数据类型的字节码对象, 实际传递的参数)
; 查询指定的字段queryForObject(sql, BeanPropertyRowMapper, 实际传递的参数)
查询对象queryForMap(sql , 实际传递的参数)
返回的是一个Map , map对象中存放的是对象的数据, 以键值对方式存储queryForList(sql , 实际参数)
返回的是List<Map<String,Object>> 查询一个List的结果,但是list中有mapquery(sql,BeanPropertyRowMapper)
查询一个List<POJO对象>