JdbcTemplate是Spring框架对JDBC的封装
package study.jdbctemplate;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import study.datasoure.Druid;
import study.jdbc.Emp;
import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Date;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import java.util.Properties;
/**
* JdbcTemplae 是spring 框架的jdbc封装工具对象
*
* 使用步骤:
* 1、导包
* 2、创建JdbcTemlplate对象
* 3、操作数据库
*/
public class JdbcTemplateDemo {
public static void main(String[] args) throws Exception {
//1、创建JdbcTemlplate对象
JdbcTemplate jt = new JdbcTemplate(getConn());
//2、调用方法
//更新数据库
String up = "update emp set mgr = ? where id = ?";
//update(sql,参数1,参数2,...)
int update = jt.update(up, 100, 1002);
System.out.println(update);//1
//查询数据库
// queryForMap() 方法查询的结果集长度只能是1条
String se = "select * from emp where id = ?";
Map<String, Object> smap = jt.queryForMap(se, 1002);
System.out.println(smap.get("ename"));
// queryForList() 方法查询的结果集长度可以是多条数据
String se1 = "select * from emp where id in (?,?)";
List<Map<String, Object>> maps = jt.queryForList(se1, 1002, 1003);
System.out.println(maps);
//查询所有记录
//query() 方法接受2个参数 ,将查询的结果封装为指定的对象
String se2 = "select * from emp";
//自定义实现数据封装对象
/*List<Emp> query = jt.query(se2, new RowMapper<Emp>() {
@Override
public Emp mapRow(ResultSet res, int i) throws SQLException {
Emp emp = new Emp();
int id = res.getInt("id");
String ename = res.getString("ename");
int job_id = res.getInt("job_id");
int mgr = res.getInt("mgr");
Date joindate = res.getDate("joindate");
double salary = res.getDouble("salary");
double bonus = res.getDouble("bonus");
int dept_id = res.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);
}
});*/
//也可以使用 预定义的封装
//BeanPropertyRowMapper(sql,new BeanPropertyRowMapper<类型>(类型.class))
List<Emp> query = jt.query(se2, new BeanPropertyRowMapper<Emp>(Emp.class));
System.out.println(query);
//查询总记录数
//queryForObject(sql,object.class) 该方法一般执行聚合查询
String se3 = "select count(id) from emp";
Object o = jt.queryForObject(se3,Long.class);
System.out.println(o);
}
/**
* 获取 Druid 连接池对象
* @return
* @throws Exception
*/
public static DataSource getConn() throws Exception {
Properties pro = new Properties();
InputStream is = Druid.class.getClassLoader().getResourceAsStream("druid.properties");
pro.load(is);
DataSource ds = DruidDataSourceFactory.createDataSource(pro);
return ds;
}
}
555