一.queryXxx方法:
1.query();
//参数1:为需要执行的sql语句 参数2:RowMapper接口的实现类 BeanPropertyRowMapper对象 此对象可以自动的将数据库中的字段与标准的JavaBean匹配,创建一个新的JaveBean实例 返回一个list集合 参数3:可变长参数,是要执行的sql语句的真实参数值
注意:1.底层是通过反射实现 使用无参构造创建实例 并且通过setXxx()方法对属性进行赋值
2.去掉set后忽略大小写只要能和数据库中表字段匹配就可以赋值
3.数据库字段多余实体字段 不报错 顶多不赋值
4.实体字段多余数据库字段 不报错 顶多不赋值
5.写实体类必须使用 包装类 因为数据库值中有null 而基本类型没有null 所以必须使用 包装类(int没有null Integer 有null)
@Test
public void quereyMethod(){
//query()能够自动将数据库中的字段值封装成一个标准的java类对象
//通过无参构造创建instance
//通过set方法进行属性赋值操作 要求只要方法名去掉set后 忽略大小写能够与数据库中的字段名想匹配就可以封装
JdbcTemplate jdbcTemplate =new JdbcTemplate(DruidDataSourceUtil.getDataSource());
String sql="SELECT * FROM `student`";
Object[] params={
};
//参数1 要执行的sql语句
//参数2 RowMapper对象 RowMapper是一个接口 所以使用实现类BeanPropertyRowMapper 能够自动进行封装
//参数3 可变长参数 真实的参数
//返回的是一个list集合 可以自己转型
ArrayList query =(ArrayList) jdbcTemplate.query(sql, new BeanPropertyRowMapper(Student.class), params);
System.out.println(query);
}
2.queryForObject();
//此方法有两种用处
//(1)用来查询单行单列的一个数据
//参数1:sql语句 参数2:返回值类型的class对象 参数3:可变长参数 执行sql语句所需要的参数
@Test
//queryForObject返回一个单行单列的数值
public void queryForObject1(){
JdbcTemplate jdbcTemplate=new JdbcTemplate(DruidDataSourceUtil.getDataSource());
String sql="select name from student where id=1";
//有两种用法
//返回单行单列的一个值
//参数1 要执行的sql语句
//参数2 返回结果的类型 和 数据库中的类型匹配
String s = jdbcTemplate.queryForObject(sql, String.class);
System.out.println(s);
}
//(2)用来返回一封装好的javaBean对象
//参数1:sql语句 参数2: BeanPropertyRowMapper(javaBean.class)对象 参数3:可变长参数 执行sql语句所需要的参数
@Test
//queryForObject返回一个封装好的对象
public void queryForObject2(){
JdbcTemplate jdbcTemplate =new JdbcTemplate(DruidDataSourceUtil.getDataSource());
String sql="select * from student where id=1";
Object object = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper(Student.class));
System.out.println(object);
}
3.queryForMap();
//查询结果是一行多列的结果 返回一个map集合 集合的key存放数据库的表头 value用来存放 值
//参数1:sql语句 参数2:可变长参数 执行sql语句所需要的参数
@Test
public void queryForMapMethod() throws Exception {
JdbcTemplate jdbcTemplate =new JdbcTemplate(DruidDataSourceUtil.getDataSource());
String sql="select * from student where id=2";
//queryForMap()方法查询一行多列 返回一个map集合 key存出列表头 value 存储真实的值
Map stringObjectMap = jdbcTemplate.queryForMap(sql);
System.out.println(stringObjectMap);
}
4.queryForList();
//查询结果是多行多列的结果 返回一个lsit集合,集合中存放的是一个map集合map集合的key存放数据库的表头 value用来存放 值
//参数1:sql语句 参数2:可变长参数 执行sql语句所需要的参数
@Test
public void queryForListMethod() {
//需要一个dataSource
JdbcTemplate jdbcTemplate=new JdbcTemplate(DruidDataSourceUtil.getDataSource());
//sql语句
String sql="select * from student where id BETWEEN ? AND ?";
//queryForList()方法 查询多行多列 返回一个list(Map<,>)<>集合 list集合中存放的是map集合
// 参数1:需要执行的sql语句 参数2: 可变参数的真实参数
Object[] params={
1,3
};
List