JDBCTemplate_介绍
-
概述
Spring框架对JDBC的简单封装,提供了一个JDBCTemplate对象简化JDBC的开发.
-
使用步骤
-
导入JAR包
-
创建JdbcTemplate对象(依赖于数据源DataSource)
-
JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
-
调用JdbcTemplate的方法来完成CRUD的操作
-
JDBCTemplate_快速入门
import cn.util.JDBCUtils;
import org.springframework.jdbc.core.JdbcTemplate;
public class SpringJdbcTemplateDemo_1 {
public static void main(String[] args) {
JdbcTemplate tem = new JdbcTemplate(JDBCUtils.getDataSource());
String sql = "update account set balance = 500 where id = ?";
int i = tem.update(sql,8);
System.out.println("有" + i + "条受影响");
}
}
运行结果:
JDBCTemplate_执行DML语句
-
使用方法
-
update() 执行DML语句
-
-
emp表中增加数据
-
emp表中修改数据
-
emp表中删除数据
JDBCTemplate_执行DQL语句
使用方法
-
queryForMap()
-
查询结果将结果集封装为map集合,将列名作为key,将值作为value 将这条记录封装为一个map集合
-
注意:这个方法查询的结果集记录数只能是1
-
-
queryForList()
-
查询结果将结果集封装为list集合
-
注意:将每一条记录封装为一个Map集合,再将Map集合装载到List集合中
-
-
query()
-
查询结果,将结果封装为JavaBean对象
-
query的参数:RowMapper
-
一般我们使用BeanPropertyRowMapper实现类。可以完成数据到JavaBean的自动封装
-
new BeanPropertyRowMapper<类型>(类型.class)
-
-
queryForObject()
-
查询结果,将结果封装为对象
-
一般用于聚合函数的查询
-
演示代码:
import cn.util.JDBCUtils;
import org.junit.Test;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.List;
import java.util.Map;
public class SpringJdbcTemplateDemo_2 {
//1. 获取JDBCTemplate对象
private JdbcTemplate tem = new JdbcTemplate(JDBCUtils.getDataSource());
@Test
public void addEmp(){
String sql = "insert into emp(id,ename,dept_id) values(?,?,?)";
int count = tem.update(sql, 1015, "郭靖", 10);
System.out.println(count);
}
@Test
public void deleteEmp(){
String sql = "DELETE FROM emp WHERE id = ?";
int count = tem.update(sql, 1015);
System.out.println(count);
}
@Test
public void alterEmp(){
String sql = "update emp set salary = 10000 where id = ?";
int count = tem.update(sql, 1001);
System.out.println(count);
}
/**
* 4.查询id为1001的记录,将其封装为Map集合
* 注意:这个方法查询的结果集长度只能是1
*/
@Test
public void test1(){
String sql = "select * from emp where id = ?";
Map<String, Object> map = tem.queryForMap(sql, 1001);
System.out.println(map);
}
/**
* 5. 查询所有记录,将其封装为List
*/
@Test
public void test2(){
String sql = "select * from emp";
List<Map<String, Object>> maps = tem.queryForList(sql);
for (Map<String, Object> map : maps) {
System.out.println(map);
}
}
/**
* 6. 查询所有记录,将其封装为Emp对象的List集合
*/
@Test
public void test3(){
String sql = "select * from emp";
List<emp> list = tem.query(sql, new BeanPropertyRowMapper<emp>(emp.class));
for (emp emp : list) {
System.out.println(emp);
}
}
/**
* 7. 查询总记录数
*/
@Test
public void test4(){
String sql = "select count(id) from emp";
Long aLong = tem.queryForObject(sql, Long.class);
System.out.println(aLong);
}
}
运行结果:
DML就不演示了,这里只展示DQL
test1:
test2:
test3:
test4: