JAVA JDBC Template的使用
阿新 • • 發佈:2020-07-28
JAVA JDBC Template的使用
什麼是Template?
Spring框架對JDBC的簡單封裝。提供了一個JDBCTemplate物件簡化JDBC的開發
Template使用步驟
-
匯入jar包
-
建立JdbcTemplate物件。依賴於資料來源DataSource
* JdbcTemplate template = new JdbcTemplate(ds); -
呼叫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的一些知識點,如有錯誤還請各位批評指正,喜歡我的可以點贊收藏加關注,嘻嘻