定义:
是Spring框架对JDBC的封装,提供了一个JDBCTemplate对象,简化JDBC开发
使用:
1 导包
2 创建JDBCTemplate 对象 依赖于DataSource
3 调用JDBCTemplate 方法
3.1 update 增 删 改 DML语句
3.2 queryForMap() 查询结果封装为map 集合 将列名key value
3.3 queryForList() 查询结果封装List 集合
3.4 query() 查询结果 JavaBean对象
3.5queryForObject() 将结果封装成对象
JDK环境是1.9
数据库表与类的关系是相对应的,表名对应类名,字段对应类中对象
我先创建一个员工类,声明对象与数据库表相对应,
对象类型要使用引用类型,不能使用基本数据类型
public class Emp {
private Integer id;
private String ename;
private Integer job_id;
private Integer mgr;
private String joindate;
private Double salary;
private Double bonus;
private Integer dept_id;
public Emp() {
}
public Emp(Integer id, String ename, Integer job_id, Integer mgr, String joindate, Double salary, Double bonus, Integer dept_id) {
this.id = id;
this.ename = ename;
this.job_id = job_id;
this.mgr = mgr;
this.joindate = joindate;
this.salary = salary;
this.bonus = bonus;
this.dept_id = dept_id;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public Integer getJob_id() {
return job_id;
}
public void setJob_id(Integer job_id) {
this.job_id = job_id;
}
public Integer getMgr() {
return mgr;
}
public void setMgr(Integer mgr) {
this.mgr = mgr;
}
public String getJoindate() {
return joindate;
}
public void setJoindate(String joindate) {
this.joindate = joindate;
}
public Double getSalary() {
return salary;
}
public void setSalary(Double salary) {
this.salary = salary;
}
public Double getBonus() {
return bonus;
}
public void setBonus(Double bonus) {
this.bonus = bonus;
}
public Integer getDept_id() {
return dept_id;
}
public void setDept_id(Integer dept_id) {
this.dept_id = dept_id;
}
@Override
public String toString() {
return "Emp{" +
"id=" + id +
", ename='" + ename + '\'' +
", job_id=" + job_id +
", mgr=" + mgr +
", joindate='" + joindate + '\'' +
", salary=" + salary +
", bonus=" + bonus +
", dept_id=" + dept_id +
'}';
}
}
JDBC入门
public static void main(String[] args){
//创建JDBCTemplate对象 依赖DataSource
JdbcTemplate jt = new JdbcTemplate(JDBCUtils.getDataSource());
//调用JDBCTemplate方法
String sql="insert into users values (6,?,?)";
int i = jt.update(sql, "常军凯", "111");
System.out.println(i);
}
显示结果:
4月 04, 2019 4:21:11 下午 com.alibaba.druid.pool.DruidDataSource info
信息: {dataSource-1} inited
1
使用JDBCTemplate方法
public class Demo2JDBCTemplate {
JdbcTemplate jt=new JdbcTemplate(JDBCUtils.getDataSource());
//Junit单元测试 可以让方法独立运行
//修改id为1的salary
@Test
public void test1(){
//创建JDBCTemplate对象 依赖于DataSource
String sql="update emp set salary=20000 where id=?";
int i = jt.update(sql, 1001);
System.out.println(i);
}
//添加数据
@Test
public void test2(){
String sql="insert into emp (id,ename,dept_id) values (?,?,?)";
int i = jt.update(sql, 1015, "周杰伦", 11);
System.out.println(i);
}
//查询所有
@Test
public void test3(){
String sql="select * from emp";
List<Map<String, Object>> maps = jt.queryForList(sql);
for(Map<String, Object> s:maps){
System.out.println(s);
}
}
//查询所有记录 将其封装为Emp对象的List集合
@Test
public void test4(){
String sql="select * from emp";
List<Emp> list = jt.query(sql, new BeanPropertyRowMapper<Emp>(Emp.class));
for(Emp e:list){
System.out.println(e);
}
}