JdbcTemplate数据库操作

1. JdbcTemplate数据库操作

1.1. 增删改操作

int update(String sql,Object[] param);

1.2. 查询

1.2.1. 获取多行多列的数据:List<T> JdbcTemplate.query(String sql,Object[] param,RowMapper<T>)

1.2.2. 根据sql语句查询的结果,在接口实现类中定义内部类,统一处理数据表每一行的列值与实体类的属性的对应关系

// 定义内部类:统一处理获取的表数据与Emp类属性的对应关系

private class MyRowMapper implements RowMapper<Emp> {

 

@Override

public Emp mapRow(ResultSet rs, int rowNum) throws SQLException {

System.out.println("行号:" + rowNum);

Dept dept=new Dept();

dept.setDeptid(rs.getInt(7));

Emp emp = new Emp(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getDate(4), rs.getDouble(5),

rs.getDouble(6), dept);

 

return emp;

}

 

}

 

1.2.3. 获取单行多列的数据

Emp emp= jdbcTemplate.query(sql, new Object[]{id}, new ResultSetExtractor<Emp>() {

 

@Override

public Emp extractData(ResultSet rs) throws SQLException, DataAccessException {

Emp emp=null;

Dept dept=null;

if (rs.next()) {

emp = new Emp();

emp.setEname(rs.getString("ename"));

emp.setHiredate(rs.getDate("hiredate"));

dept=new Dept();

dept.setDname(rs.getString("dname"));

emp.setDept(dept);

}

 

return emp;

}

 

});

1.2.4. 获取聚合查询的结果:使用分组或数据库函数的查询结果,例如统计每个部门的员工人数

需要在程序中定义帮助类,类的属性要与查询结果的所有列值对应

public class DeptUtil {

 

private String dname;

private Integer personNums;

}

String sql="SELECT d.dname,COUNT(1) as c from emp e "

+"LEFT JOIN dept d ON e.deptid=d.deptid "

+"GROUP BY d.dname";

List<DeptUtil> dus= jdbcTemplate.query(sql,  new RowMapper<DeptUtil>(){

 

@Override

public DeptUtil mapRow(ResultSet rs, int rowNum) throws SQLException {

DeptUtil du=new DeptUtil(rs.getString("dname"), rs.getInt("c"));

return du;

}

 

});

1.2.5. 获取单行单列的数据,例如统计所有员工的人数

String sql="select count(1) from emp";

int i=jdbcTemplate.queryForObject(sql, new RowMapper<Integer>(){

 

@Override

public Integer mapRow(ResultSet rs, int rowNum) throws SQLException {

int i= rs.getInt(1);

return i;

}

 

});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值