2020-07-28

JAVA JDBC Template的使用

JAVA JDBC Template的使用

什么是Template?

Spring框架对JDBC的简单封装。提供了一个JDBCTemplate对象简化JDBC的开发

Template使用步骤

  1. 导入jar包

  2. 创建JdbcTemplate对象。依赖于数据源DataSource
    * JdbcTemplate template = new JdbcTemplate(ds);

  3. 调用JdbcTemplate的方法来完成CRUD的操作
    * update():执行DML语句。增、删、改语句
    * queryForMap():查询结果将结果集封装为map集合,将列名作为key,将值作为value 将这条记录封装为一个map集合
    * 注意:这个方法查询的结果集长度只能是1
    * queryForList():查询结果将结果集封装为list集合
    * 注意:将每一条记录封装为一个Map集合,再将Map集合装载到List集合中
    * query():查询结果,将结果封装为JavaBean对象
    * query的参数:RowMapper
    * 一般我们使用BeanPropertyRowMapper实现类。可以完成数据到JavaBean的自动封装
    * new BeanPropertyRowMapper<类型>(类型.class)
    * queryForObject:查询结果,将结果封装为对象
    * 一般用于聚合函数的查询

代码演示

获取数据库连接池的工具类

package JDBC;import com.alibaba.druid.pool.DruidDataSourceFactory;import javax.sql.DataSource;import java.io.IOException;import java.io.InputStream;import java.sql.Connection;import java.sql.SQLException;import java.sql.Statement;import java.util.Properties;public class DruidUtils { private static DataSource dataSource=null;//获取数据库连接池 public static DataSource getDataSource() {  return dataSource; } //关闭statement,归还connection public static void close(Statement statement, Connection connection){  if (statement!=null){   try {    statement.close();   } catch (SQLException e) {    e.printStackTrace();   }  }  if (connection!=null){   try {    connection.close();   } catch (SQLException e) {    e.printStackTrace();   }  } } public static void setDataSource(DataSource dataSource) {  DruidUtils.dataSource = dataSource; } static {  try {   //加载配置文件经内存   Properties properties = new Properties();   InputStream resourceAsStream = DruidUtils.class.getClassLoader().getResourceAsStream("druid.properties");   properties.load(resourceAsStream);    dataSource = DruidDataSourceFactory.createDataSource(properties);  } catch (IOException e) {   System.out.println(e);  } catch (Exception e) {   e.printStackTrace();  } } public static Connection getConnection() throws SQLException {  return dataSource.getConnection(); }}

查询所有记录,将其封装为Emp对象的List集合

1.query():查询结果,将结果封装为JavaBean对象

package JDBC;import org.springframework.jdbc.core.BeanPropertyRowMapper;import org.springframework.jdbc.core.JdbcTemplate;import javax.sql.DataSource;import java.sql.SQLException;import java.util.List;public class Template { public static void main(String[] args) throws SQLException {  //获取数据库连接池  DataSource dataSource = DruidUtils.getDataSource();  //获取template对象  JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);  //定义sql语句  String sql="select *from count";  //执行sql  List<Person> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<Person>(Person.class));  for (Person person : list) {   System.out.println(person);  } }}

* 2. 添加一条记录

@Test			 public void test2(){			  String sql = "insert into emp(id,ename,dept_id) values(?,?,?)";			  int count = template.update(sql, 1015, "郭靖", 10);			  System.out.println(count);						 }

3.删除刚才添加的记录

@Test			 public void test3(){			  String sql = "delete from emp where id = ?";			  int count = template.update(sql, 1015);			  System.out.println(count);			 }			

4.查询id为1001的记录,将其封装为Map集合

注意:这个方法查询的结果集长度只能是1

 @Test				 public void test4(){				  String sql = "select * from emp where id = ? or id = ?";				  Map<String, Object> map = template.queryForMap(sql, 1001,1002);				  System.out.println(map);				  //{id=1001, ename=孙悟空, job_id=4, mgr=1004, joindate=2000-12-17, salary=10000.00, bonus=null, dept_id=20}								 }

5. 查询所有记录,将其封装为List

 @Test				 public void test5(){				  String sql = "select * from emp";				  List<Map<String, Object>> list = template.queryForList(sql);								  for (Map<String, Object> stringObjectMap : list) {				   System.out.println(stringObjectMap);				  }				 }

6. 查询所有记录,将其封装为Emp对象的List集合

 @Test				 public void test6(){				  String sql = "select * from emp";				  List<Emp> list = template.query(sql, new RowMapper<Emp>() {								   @Override				   public Emp mapRow(ResultSet rs, int i) throws SQLException {				    Emp emp = new Emp();				    int id = rs.getInt("id");				    String ename = rs.getString("ename");				    int job_id = rs.getInt("job_id");				    int mgr = rs.getInt("mgr");				    Date joindate = rs.getDate("joindate");				    double salary = rs.getDouble("salary");				    double bonus = rs.getDouble("bonus");				    int dept_id = rs.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);								    return emp;				   }				  });												  for (Emp emp : list) {				   System.out.println(emp);				  }				 }				

7. 查询总记录数

 @Test				 public void test7(){				  String sql = "select count(id) from emp";				  Long total = template.queryForObject(sql, Long.class);				  System.out.println(total);				 }								
			以上就是Template的一些知识点,如有错误还请各位批评指正,喜欢我的可以点赞收藏加关注,嘻嘻

在这里插入图片描述

JAVA JDBC Template的使用FEN美森凹凸曼直击两会--2019年政府工作报告(全文)亚马逊美国返校季的数据报告 和消费者报告(二)电商,亚马逊图片必备工具跟着心灵去旅行 走进尼泊尔_尼泊尔旅游最冷而有人居住的地方:俄罗斯奥伊米亚康_俄罗斯联邦旅游德国一个冬天的神话_德国旅游

No comments:

Post a Comment