566 JDBCTemplate_快速入门 and 567 JDBCTemplate_执行DML语句
JDBCTemplate_快速入门
步骤
- 导入jar包
- 创建JDBCTemplate对象,依赖于数据源DataSourrce
- jdbcTemplate template = new JDBCTemplate(ds);
- 调用JDBCTemplate的方法来完成CRUD的操作
- update():执行DML语句。增、删、改语句
- queryForMap():查询结果将结果集封装为map集合
- queryForList():查询结果将结果集封装为list集合
- query():查询结果,将结果封装为JavaBean对象
- queryForobject :查询结果,将结果封装为对象
/**
* JDBC_template入门
*/
public class JDBC_template_demo01 {
public static void main(String[] args) {
/* 导入jar包 */
/* 创建JDBCTemplate对象 */
JdbcTemplate template = new JdbcTemplate(JDBC_utils.getDataSource());
/* 调用方法 */
String sql = "update account set balance = 3000 where id = ?";
int count = template.update(sql, 3);
System.out.println(count);
}
}
/**
* Druid连接池工具类
*/
public class JDBC_utils {
/* 定义成员变量 */
private static DataSource ds;
/* 初始化赋值 */
static {
/* 加载配置文件 */
Properties pro = new Properties();
try {
/* 通过漏的方法加载 以及链式编程 */
pro.load(JDBC_utils.class.getClassLoader().getResourceAsStream("druid.properties"));
/* 获取DataSource */
try {
ds = DruidDataSourceFactory.createDataSource(pro);
} catch (Exception e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
}
/* 获取连接 */
public static Connection getConnection() throws SQLException {
return ds.getConnection();
}
/* 释放资源 */
public static void close1(ResultSet rs ,Statement stmt,Connection conn){
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
/* 归还连接 */
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close( Statement stmt , Connection conn) {
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
/* 归还连接 */
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/* 获取连接池的方法 */
public static DataSource getDataSource() {
return ds;
}
}
JDBCTemplate_执行DML语句练习
调用dbcTemplate的方法来完成CRUD的操作
(1)update():执行DML语句。增、删、改语句
(2)queryForMap():查询结果将结果集封装为map集合,将列名作为key,将值作为value将这条记录封装为一个map集合
注意:这个方法查询的结果集长度只能是1
(3)queryForList():查询结果将结果集封装为list集合
注意:将每一条记录封装为一个Map集合,再将Map集合装载到List集合中
(4)query():查询结果,将结果封装为]avaBean对象
query的参数:RowMapper
一般我们使用BeanPropertyRowMapper实现类。可以完成数据到JavaBean的自动封装
new BeanPropertyRowMapper<类型>(类型.class)
(5)queryForobject :查询结果,将结果封装为对象
—般用于聚合函数的查询
需求:
1.修改1号数据的salary 为10000
2.添加一条记录
3.删除刚添加的记录
4.查询id为1的记录,将其封装为Map集合 注:这个方法查询的结果集长度只能是1将列名作为key,将值作为value将这条记录封装为一个map集合
5.查询所有记录,l将其封装为List 注:将每一条记录封装为一个Map集合,再将Map集合装载到List集合中
6.查询所有记录,将其封装为Emp对象的List集合
7.查询总记录数
/**
* Junit 单元测试
*/
public class JDBC_template_demo02 {
/* 获取JDBCTemplate对象 */
public JdbcTemplate template = new JdbcTemplate(JDBC_utils.getDataSource());
/* 1.修改1号数据的salary 为10000 */
@Test
public void test1() {
/* 定义sql */
String sql = "update emp set salary =10000 where id = 1001";
/* 执行sql */
int update = template.update(sql);
System.out.println(update);
}
/*-------------------------------------------------------------------------*/
/* 2.添加一条记录 */
@Test
public void test2() {
/* 定义sql */
String sql = "insert into emp(id,ename,salary,dept_id) values (?,?,?,?)";
/* 执行sql */
int update = template.update(sql,1015,"吴承恩",99999,10);
System.out.println(update);
}
/*-------------------------------------------------------------------------*/
/* 3.删除刚添加的记录 */
@Test
public void test3() {
/* 定义sql */
String sql = "delete from emp where id = ?";
/* 执行sql */
int update = template.update(sql,1015);
System.out.println(update);
}
/*-------------------------------------------------------------------------*/
/* 4.查询id为1的记录,将其封装为Map集合 */
/*
注:这个方法查询的结果集长度只能是1
将列名作为key,将值作为value将这条记录封装为一个map集合
*/
@Test
public void test4() {
/* 定义sql */
String sql = "select * from emp";
/* 执行sql */
Map<String, Object> map = template.queryForMap(sql, 1001);
System.out.println(map);
}
/*-------------------------------------------------------------------------*/
/* 5.查询所有记录,l将其封装为List */
/*
注:将每一条记录封装为一个Map集合,再将Map集合装载到List集合中
*/
@Test
public void test5() {
/* 定义sql */
String sql = "select * from emp";
/* 执行sql */
List<Map<String, Object>> list = template.queryForList(sql);
for (Map<String, Object> s : list) {
System.out.println(s);
}
}
/*-------------------------------------------------------------------------*/
/* 6.查询所有记录,将其封装为Emp对象的List集合 */
@Test
public void test6_01() {
/* 定义sql */
String sql = "select * from emp";
/* 执行sql */
List<Emp> list = template.query(sql, new RowMapper<Emp>() {
@Override /* 结果集对象 */
public Emp mapRow(ResultSet rs, int i) throws SQLException {
/* new Emp表 */
Emp emp = new Emp();
/* 获取emp表的各列数据的结果集 */
int id = rs.getInt("id");
String ename = rs.getString("ename");
int job_id = rs.getInt("job_id");
int mgt = rs.getInt("mgt");
Date joindate = rs.getDate("joindate");
double salary = rs.getDouble("salary");
double bonus = rs.getDouble("bonus");
int dept_id = rs.getInt("dept_id");
/* 结果集获取后emp对象的set方法设置值内容 */
emp.setId(id);
emp.setEname(ename);
emp.setJob_id(job_id);
emp.setMgt(mgt);
emp.setJoindate(joindate);
emp.setSalary(salary);
emp.setBonus(bonus);
emp.setDept_id(dept_id);
return emp;
}
});
for (Object o : list) {
System.out.println(o);
}
}
/*-------------------------------------------------------------------------*/
/* 6.查询所有记录,将其封装为Emp对象的List集合 */
@Test
public void test6_02() {
/* 定义sql */
String sql = "select * from emp";
/* 执行sql */
List<Emp> list = template.query(sql, new BeanPropertyRowMapper<Emp>(Emp.class));
for (Emp e :list) {
System.out.println(e);
}
}
/*-------------------------------------------------------------------------*/
/* 7.查询总记录数 */
@Test
public void test7() {
/* 定义sql */
String sql = "select count(id) from emp";
/* 执行sql */
Long aLong = template.queryForObject(sql, Long.class);
System.out.println(aLong);
}
}

浙公网安备 33010602011771号