第四章、Spring JDBC
简介:Spring框架对JDBC的简单封装。提供了一个JDBCTemplate对象简化JDBC的开发
步骤:
导入jar包
创建JdbcTemplate对象。依赖于数据源DataSource
调用JdbcTemplate的方法来完成CRUD的操作
代码实现
<dependencies>
<!--jdbcTemplate-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.1.2.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.1.2.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>4.1.2.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.1.2.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
<scope>compile</scope>
</dependency>
</dependencies>
1. update():执行DML语句。增、删、改语句
//获取JdbcTemplate对象
private JdbcTemplate template = new JdbcTemplate(JDBCutils.getDataSource());
//1.1添加一条记录
//无参方法
public void add(){
String sql = "insert student3 value(?,?,?,?,?,?,?)";
int count = template.update(sql, 10, "黄药师", 20, "男", "桃花岛", 66, 99);
}
//有参方法
public void add2(Student student){
String sql = "insert student3 value(?,?,?,?,?,?,?)";
int count = template.update(sql,student.getId(),
student.getName(),student.getAge(),
student.getSex(),student.getAddress(),
student.getMath(),student.getEnglish());
}
//1.2删除一条记录
public void delect(){
String sql = "DELETE from student3 where id = ?";
int count = template.update(sql, 10);
}
//1.3修改记录
//无参方法
public void update1(){
String sql = "update student3 set math = 99 where id = 10";
int count = template.update(sql);
}
//有参方法
public void update2(Student student){
String sql = "update student3 set math = 99 where id = ?";
int count = template.update(sql,emp.getId());
}
2. queryForMap():查询结果将结果集封装为map集合,将列名作为key,将值作为value 将这条记录封装为一个map集合,这个方法查询的结果集长度只能是1。
//2.查询单条记录,将其封装为map集合;map集合的结果集长度只能为1
public void selectMap(){
String sql = "select * from student3 where id = ?";
Map<String, Object> map = template.queryForMap(sql, 10);
System.out.println(map);
}
3. queryForList():查询结果将结果集封装为list集合,将每一条记录封装为一个Map集合,再将Map集合装载到List集合中。
//3.查询所有记录,将其封装为list集合
public void selectList(){
String sql = "select * from student3";
List<Map<String, Object>> list = template.queryForList(sql);
System.out.println(list);
}
4. query():查询结果,将结果封装为JavaBean对象,一般我们使用BeanPropertyRowMapper实现类。可以完成数据到JavaBean的自动封装。
//4.封装为JavaBean对象的list集合
public void selectJavaBean(){
String sql = "select * from student3";
//指定泛型
//new BeanPropertyRowMapper<类型>(类型.class)
List<Student> list = template.query(sql, new BeanPropertyRowMapper<Student>(Student.class));
//增强for循环遍历集合
for (Student student : list) {
System.out.println(student);
}
}
5. 查询指定对象,返回对象全部信息
/*
查询指定对象,返回对象全部信息
@param student 查询时只有学生的姓名和性别
@return student 返回查询到学生的所有结果,没有查询到返回null值
*/
public Student selectStudent(Student(student){
try {
String sql = "select * from student3 where name = ? and sex = ?";
Student student1 = template.queryForObject(sql,
new BeanPropertyRowMapper<Student>(Student.class),
student .getName(), student .getSex());
return student1;
} catch (DataAccessException e) {
e.printStackTrace();
return null;
}
}
@Test
//单元测试类,可单独运行;
public void test(){
Student student = new Student ();
student .setName("黄药师");
student .setSex("男");
Demo1DaoImpl demo1Dao = new Demo1DaoImpl();
Emp emp1 = demo1Dao.selectStudent(student);
System.out.println(student1);
}
6. queryForObject:查询结果,将结果封装为对象,一般用于聚合函数的查询。
//5.查询总记录数
public void count(){
String sql = "select count(id) from student3";
//指定泛型
Long total = template.queryForObject(sql, Long.class);
System.out.println(total);
}
四、附录
maven中央仓库网址
封装student3表的JavaBean(实体类),基本数据类不能接收null,所以变量得定义为引用数据类型。
代码展示
//基本数据类不能接收null,所以定义为引用数据类型
//封装student3表的JavaBean
public class Student {
private Integer id;
private String name;
private Integer age;
private String sex;
private String address;
private Integer math;
private Integer english;
public Integer getId() {return id;}
public void setId(Integer id) {this.id = id;}
public String getName() {return name;}
public void setName(String name) {this.name = name;}
public Integer getAge() {return age;}
public void setAge(Integer age) {this.age = age;}
public String getSex() {return sex;}
public void setSex(String sex) {this.sex = sex;}
public String getAddress() {return address;}
public void setAddress(String address) {this.address = address;}
public Integer getMath() {return math;}
public void setMath(Integer math) {this.math = math;}
public Integer getEnglish() {return english;}
public void setEnglish(Integer english) {this.english = english;}
@Override
public String toString() {
return "Emp{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
", address='" + address + '\'' +
", math=" + math +
", english=" + english +
'}';
}
}
版权声明:本文为LUSH_BOY原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。