Spring JDBC
概念
Spring 框架对JDBD的简单封装。提供了一个JDBCTemplate对象简化JDBC的开发。
步骤
- 导入jar包(5个+1个数据库连接池的包+1个驱动的包)
- 依赖数据源DataSource,创建JDBCTemplate对象。
JdbcTemplate template=new JdbcTemplate(ds); - 调用JdbcTemplate的方法来完成CRUD(增删改查)的操作
update():执行DML语句(增删改语句)
queryForMap():查询结果将结果集封装成map集合(查询的结果集长度只能是1)
queryForList():查询结果将结果集封装成List< Map<String,Object>>集合(将每一条记录封装到Map集合,再将Map集合封装到List集合中)
query():查询结果,将结果集封装成JavaBean对象(不用回自己实现RowMapper接口,用现成的实现类BeanPropertyRowMapper)
queryForObject():查询结果,将结果集封装成对象(一般是基本数据类型)
Jdbctemplate入门程序
package JdbcTemplate;
import Druid.DruidUtils;
import org.springframework.jdbc.core.JdbcTemplate;
public class JdbcTemplateDemo1 {
public static void main(String[] args) {
//1.导入jar包
//2.创建JdbcTemplate对象
JdbcTemplate template=new JdbcTemplate(DruidUtils.getDs());
//3.修改数据库数据操作
String sql="update account set money=5000 where id=?";
int count=template.update(sql,3);
System.out.println(count);
}
}
案例
- 修改1001号数据的salary为10000
- 添加一条记录
- 删除刚刚添加的记录
- 查询id为1001的记录,将其封装成Map集合
- 查询所有记录,将其封装成list集合
- 查询所有记录,将其封装成Emp对象的List集合
- 查询总记录数
package JdbcTemplate;
import org.junit.Test;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import java.beans.BeanProperty;
import java.sql.Date;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
public class JdbcTemplateDemo2 {
//Junit单元测试,可以让方法独立执行
JdbcTemplate template=new JdbcTemplate(DruidUtils.getDs());
/**
* 1. 修改1001号数据的salary为10000
*/
@Test
public void test1(){
String sql="update emp set salary=10000 where id=?";
int count=template.update(sql,1001);
System.out.println(count);
}
/**
* 添加一条记录
*/
@Test
public void test2(){
String sql="insert into emp(id,ename,dept_id) values(?,?,?)";
int count = template.update(sql, 1015, "郭靖", 10);
System.out.println(count);
}
/**
* 3. 删除刚刚添加的记录
*/
@Test
public void test3(){
String sql="delete from emp where id=?";
int count =template.update(sql,1015);
System.out.println(count);
}
/**
* 4. 查询id为1001的记录,将其封装成Map集合
*/
@Test
public void test4(){
String sql="select * from emp where id=?";
Map<String,Object> emp=template.queryForMap(sql,1001);
System.out.println(emp);
}
/**
* 5. 查询所有记录,将其封装成list集合
*/
@Test
public void test5(){
String sql="select * from emp";
List<Map<String, Object>> list = template.queryForList(sql);
for (Map<String,Object> emp:list){
System.out.println(emp);
}
}
/**
* 6. 查询所有记录,将其封装成Emp对象的List集合
*/
@Test
public void test6_1(){
String sql="select * from emp";
List<Emp> list = template.query(sql, new RowMapper<Emp>() {
@Override
public Emp mapRow(ResultSet resultSet, int i) throws SQLException {
Emp emp = new Emp();
int id = resultSet.getInt("id");
String ename = resultSet.getString("ename");
int job_id = resultSet.getInt("job_id");
int mgr = resultSet.getInt("mgr");
Date joindate = resultSet.getDate("joindate");
double salary = resultSet.getDouble("salary");
double bonus = resultSet.getDouble("bonus");
int dept_id = resultSet.getInt("dept_id");
emp.setId(id);
emp.setEname(ename);
emp.setJob_id(job_id);
emp.setMgr(mgr);
emp.setJoindate(joindate);
emp.setSalary(salary);
emp.setBonus(bonus);
emp.setDept_id(dept_id);
return emp;
}
});
for (Emp emp:list){
System.out.println(emp);
}
}
@Test
public void test6_2(){
String sql="select * from emp";
List<Emp> list = template.query(sql, new BeanPropertyRowMapper<Emp>(Emp.class));
for (Emp emp:list){
System.out.println(emp);
}
}
@Test
public void test7(){
String sql="select count(id) from emp";
long count= template.queryForObject(sql,long.class);
System.out.println(count);
}
}