Spring JDBC
Spring对JDBC简单封装。提供了一个JDBCTemplate对象简化JDBC的开发
步骤:
——1.导入jar包。
——2.创建JDBCTemplate对象。依赖于数据源。
————JDBCTemplate template = new JDBCTemplate(DataSource);
——3.调用JDBCTemplate的方法来完成CRUD操作
————update():执行DML语句。增,删,改
————queryForMap():查询结果将结果集封装为map集合
——————注意:queryForMap():这个方法查询结果集的长度只能是1,即只能装一条数据
————queryForList():将结果集封装为list集合
——————注意:将每一条记录封装为一个map集合在将map集合装在到List集合。
————query():查询结果封装为JavaBean对象
——————query的参数:RowMapper
——————一般我们使用 BeanPropertyRowMapper实现类,可以完成数据到JavaBean的自动封装
——————:new BeanPropertyRowMapper<类型>(类型.class)
————queryForObject():查询结果,将结果封装为对象。
——————:一般用于聚合函数的查询
基本的入门程序,来更新一条数据信息:代码如下
package cn.itcast.jdbctemplate;
import cn.itcast.utils.JDBCUtils;
import org.springframework.jdbc.core.JdbcTemplate;
/**
* JdbcTemplate入门
*/
public class JdbcTemplateDemo1 {
public static void main(String[] args) {
//1.导入jar包
//2.创建JDBCTemplate对象
JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
//定义sql
String sql = "update user set username='急先锋' where id=?";
//3.调用方法(里面传入sql语句和相关的语句参数)
int count = template.update(sql, 196);
//返回影响的行数
System.out.println(count);
}
}
练习:
1.修改数据
2.添加一条数据
3.删除数据
4.查询特定条件的数据封装为map集合
5.查询所有数据,将其封装为List集合
6.查询所有数据,将其封装为特定的对象的List集合
7.查询总的记录数
package cn.itcast.jdbctemplate;
import cn.itcast.domain.Student;
import cn.itcast.utils.JDBCUtils;
import org.junit.Test;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
/**
*
*/
public class JdbcTemplateDemo2 {
//Junit单元测试。可以让方法独立执行
//1.获取JDBCTemplate对象
private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
/**
* 1.修改数据
*/
@Test
public void test1(){
//2.定义sql
String sql="update student set name=? where id=?";
//3.执行sql
int count = template.update(sql, "魏无羡",20);
System.out.println(count);
}
/**
*2.添加一条数据
*/
@Test
public void test2(){
String sql="insert into student values(null,?,?,?,?,?)";
int count = template.update(sql,"猪八戒","男",78,"天宫","zhubajie@111");
System.out.println(count);
}
/**
* 3.删除数据
*/
@Test
public void test3(){
String sql="delete from student where id=?";
int count = template.update(sql, 21);
System.out.println(count);
}
/**
* 4.查询特定条件的数据封装为map集合
* 注意:queryForMap():这个方法查询结果集的长度只能是1
*/
@Test
public void test4(){
String sql="select * from student where id=?";
Map<String, Object> map = template.queryForMap(sql, 20);
System.out.println(map);
//结果:{id=20, name=魏无羡, gender=男, age=23, address=黑龙江, email=kkk.@qq}
}
/**
* 5.查询所有数据,将其封装为List集合
*
*/
@Test
public void test5(){
String sql="select * from student";
List<Map<String, Object>> list = template.queryForList(sql);
for (Map<String,Object> stringObjectMap:list){
System.out.println(stringObjectMap);
}
}
/**
* 6.查询所有数据,将其封装为特定的对象的List集合
*
*/
@Test
public void test6(){
String sql="select * from student";
List<Student> list = template.query(sql, new RowMapper<Student>() {
@Override
public Student mapRow(ResultSet resultSet, int i) throws SQLException {
Student stu = new Student();
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
String gender = resultSet.getString("gender");
int age = resultSet.getInt("age");
String address = resultSet.getString("address");
String email = resultSet.getString("email");
stu.setId(id);
stu.setName(name);
stu.setGender(gender);
stu.setAge(age);
stu.setAddress(address);
stu.setEmail(email);
return stu;
}
});
for (Student stu:list){
System.out.println(stu);
}
}
/**
* 6_2.查询所有数据,将其封装为特定的对象的List集合
*简化版本
*/
@Test
public void test6_2(){
String sql="select * from student";
List<Student> list = template.query(sql, new BeanPropertyRowMapper<Student>(Student.class));
for (Student stu:list){
System.out.println(stu);
}
}
/**
* 7.查询总的记录数
*/
@Test
public void test7(){
String sql="select count(id) from student";
Long total = template.queryForObject(sql, Long.class);
System.out.println(total);
}
}