package com.itheima.demo01_jdbctemplate;
import com.itheima.pojo.Student;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.List;
import java.util.Map;
//需求: 测试JdbcTemplate操作表数据: 查询功能.
/*
JdbcTemplate查询数据涉及到的API:
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对象>
我们要完成的案例:
1. 根据根据id查询学生name
2. 查询一共有多少个学生数
3. 查询id为7 的student对象,返回Student
4. 查询id为8的student对象返回map
5. 查询所有的student对象 返回List<Map<String ,Object>> queryForList
6. 如果只想查询结果放到List<Bean> query
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:bean.xml")
public class Demo03_JdbcTemplate {
//1. 定义JdbcTemplate类的引用, 通过自动装配给其赋值.
@Autowired
private JdbcTemplate jdbcTemplate;
//2. 需求: 根据根据id查询学生name
@Test
public void method01() {
//定义sql语句
String sql = "select sname from stu where sid = ? ;";
//执行SQL语句, 获取结果
//参数1: 要执行的SQL语句, 参数2: 返回值的类型, 参数3: 执行SQL语句所需的参数
String sname = jdbcTemplate.queryForObject(sql, String.class, 6); //类似于DBUtils中的 ScalarHandler
//操作结果集
System.out.println(sname);
}
//3. 需求: 查询一共有多少个学生数
@Test
public void method03() {
//定义sql语句
String sql = "select count(*) from stu;";
//执行SQL语句, 获取结果
//参数1: 要执行的SQL语句, 参数2: 返回值的类型, 参数3: 执行SQL语句所需的参数
int num = jdbcTemplate.queryForObject(sql, int.class); //类似于DBUtils中的 ScalarHandler
//操作结果集
System.out.println(num);
}
//4. 需求: 查询id为5 的student对象,返回Student
@Test
public void method04() {
//定义sql语句
String sql = "select * from stu where sid = ?;";
//执行SQL语句, 获取结果
//参数1: 要执行的SQL语句, 参数2: 返回值的类型, 参数3: 执行SQL语句所需的参数
Student stu = jdbcTemplate.queryForObject(sql,new BeanPropertyRowMapper<Student>(Student.class),5); //类似于DBUtils中的 BeanHandler
//操作结果集
System.out.println(stu);
}
//5. 需求: 查询id为5的student对象返回map
@Test
public void method05() {
//定义sql语句
String sql = "select * from stu where sid = ?;";
//执行SQL语句, 获取结果
Map<String, Object> map = jdbcTemplate.queryForMap(sql, 5); //类似于DBUtils#MapHandler
//操作结果集
System.out.println(map);
}
//6. 需求: 查询所有的student对象 返回List<Map<String ,Object>> queryForList
@Test
public void method06() {
//定义sql语句
String sql = "select * from stu;";
//执行SQL语句, 获取结果
List< Map<String, Object>> list = jdbcTemplate.queryForList(sql); //类似于DBUtils#MapListHandler
//操作结果集
for (Map<String, Object> map : list) {
System.out.println(map);
}
}
//7. 需求: 如果只想查询结果放到List<Bean> query
@Test
public void method07() {
//定义sql语句
String sql = "select * from stu;";
//执行SQL语句, 获取结果
List<Student> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<Student>(Student.class)); //类似于DBUtils#BeanListHandler
//操作结果集
for (Student s : list) {
System.out.println(s);
}
}
}
JDBCTemplate常用API
最新推荐文章于 2024-04-18 09:39:50 发布