Spring之jdbcTemplate:查詢的三種方式(單個值、單個對象、對象集合)
阿新 • • 發佈:2017-12-17
res finally 結構 execute date rep frame 參數 system
JdbcTemplateDemo2.java
1 package helloworld.jdbcTemplate; 2 3 import org.springframework.jdbc.core.JdbcTemplate; 4 5 import java.sql.*; 6 import java.util.List; 7 8 /** 9 * 功能:通過JdbcTemplate實現查詢操作 10 * 查詢結果需要自己封裝(實現RowMapper接口) 11 */ 12 13 public class JdbcTemplateDemo2 {14 // JdbcTemplate使用步驟: 15 // 1、導入jar包;2、設置數據庫信息;3、設置數據源;4、調用jdbcTemplate對象中的方法實現操作 16 17 public static void main(String[] args) { 18 // 設置數據庫信息和據源 19 JdbcTemplateObject jdbcTemplateObject = new JdbcTemplateObject(); 20 JdbcTemplate jdbcTemplate = jdbcTemplateObject.getJdbcTemplate();21 22 // 插入數據 23 // insertData(); 24 25 // 查詢返回某一個值:查詢表中數據總數 26 queryForOne(jdbcTemplate); 27 28 // 查詢返回對象 29 queryForObject(jdbcTemplate); 30 31 // 查詢返回list集合 32 queryForList(jdbcTemplate); 33 34 // 使用JDBC底層實現查詢 35 queryWithJDBC();36 } 37 38 // 插入數據 39 public static void insertData() { 40 JdbcTemplateObject jdbcTemplateObject = new JdbcTemplateObject(); 41 JdbcTemplate jdbcTemplate = jdbcTemplateObject.getJdbcTemplate(); 42 // 調用jdbcTemplate對象中的方法實現操作 43 String sql = "insert into user value(?,?,?)"; 44 //表結構:id(int、自增),name(varchar 100),age(int 10) 45 int rows = jdbcTemplate.update(sql, null, "Tom", 35); 46 System.out.println("插入行數:" + rows); 47 } 48 49 /** 50 * 查詢返回某一個值:查詢表中數據總數 51 */ 52 public static void queryForOne(JdbcTemplate jdbcTemplate) { 53 String sql = "select count(*) from user"; 54 // 調用方法獲得記錄數 55 int count = jdbcTemplate.queryForObject(sql, Integer.class); 56 System.out.println("數據總數:" + count); 57 } 58 59 /** 60 * 功能:查詢返回單個對象 61 * 步驟:新建MyRowMapper類實現RowMapper接口,重寫mapRow方法,指定返回User對象 62 */ 63 public static void queryForObject(JdbcTemplate jdbcTemplate) { 64 String sql = "select * from user where name = ?"; 65 // 新建MyRowMapper類實現RowMapper接口,重寫mapRow方法,指定返回User對象 66 User user = jdbcTemplate.queryForObject(sql, new MyRowMapper(), "Tom"); 67 System.out.println(user); 68 } 69 70 /** 71 * 功能:查詢返回對象集合 72 * 步驟:新建MyRowMapper類實現RowMapper接口,重寫mapRow方法,指定返回User對象 73 */ 74 public static void queryForList(JdbcTemplate jdbcTemplate) { 75 String sql = "select * from user"; 76 // 第三個參數可以省略 77 List<User> users = jdbcTemplate.query(sql, new MyRowMapper()); 78 System.out.println(users); 79 } 80 81 /** 82 * 使用JDBC底層實現查詢 83 */ 84 public static void queryWithJDBC() { 85 Connection conn = null; 86 PreparedStatement psmt = null; 87 ResultSet rs = null; 88 String jdbcUrl = "jdbc:mysql://192.168.184.130:3306/gxrdb"; 89 90 try { 91 // 加載驅動 92 Class.forName("com.mysql.jdbc.Driver"); 93 // 創建連接 94 conn = DriverManager.getConnection(jdbcUrl, "root", "root"); 95 String sql = "select * from user where name = ?"; 96 // 預編譯sql 97 psmt = conn.prepareStatement(sql); 98 // 從1開始,沒有就不需要 99 psmt.setString(1, "Tom"); 100 // 執行sql 101 rs = psmt.executeQuery(); 102 // int num = psmt.executeUpdate(); //增刪改,返回操作記錄數 103 104 // 遍歷結果集 105 while (rs.next()) { 106 //根據列名查詢對應的值,也可以是位置序號 107 String name = rs.getString("name"); 108 String age = rs.getString("age"); 109 System.out.println(name); 110 System.out.println(age); 111 } 112 } catch (Exception e) { 113 e.printStackTrace(); 114 } finally { 115 try { 116 rs.close(); 117 psmt.close(); 118 conn.close(); 119 } catch (SQLException e) { 120 e.printStackTrace(); 121 } 122 } 123 } 124 125 }
MyRowMapper.java
1 package helloworld.jdbcTemplate; 2 3 import org.springframework.jdbc.core.RowMapper; 4 5 import java.sql.ResultSet; 6 import java.sql.SQLException; 7 8 /** 9 * 實現RowMapper接口,返回User對象 10 * */ 11 public class MyRowMapper implements RowMapper<User>{ 12 13 @Override 14 public User mapRow(ResultSet resultSet, int i) throws SQLException { 15 // 獲取結果集中的數據 16 String name = resultSet.getString("name"); 17 String age = resultSet.getString("age"); 18 // 把數據封裝成User對象 19 User user = new User(); 20 user.setName(name); 21 user.setAge(age); 22 return user; 23 } 24 }
JdbcTemplateObject.java
1 package helloworld.jdbcTemplate; 2 3 import org.springframework.jdbc.core.JdbcTemplate; 4 import org.springframework.jdbc.datasource.DriverManagerDataSource; 5 6 /** 7 * 功能:設置數據庫信息和數據源 8 * 9 * JdbcTemplat使用 10 * 1、導入jar包;2、設置數據庫信息;3、設置數據源;4、調用jdbcTemplate對象中的方法實現操作 11 */ 12 public class JdbcTemplateObject { 13 DriverManagerDataSource dataSource; 14 JdbcTemplate jdbcTemplate; 15 16 public JdbcTemplateObject() { 17 // 設置數據庫信息 18 this.dataSource = new DriverManagerDataSource(); 19 this.dataSource.setDriverClassName("com.mysql.jdbc.Driver"); 20 this.dataSource.setUrl("jdbc:mysql://192.168.184.130:3306/gxrdb"); 21 this.dataSource.setUsername("root"); 22 this.dataSource.setPassword("root"); 23 24 // 設置數據源 25 this.jdbcTemplate = new JdbcTemplate(dataSource); 26 27 } 28 29 public DriverManagerDataSource getDataSource() { 30 return dataSource; 31 } 32 33 public void setDataSource(DriverManagerDataSource dataSource) { 34 this.dataSource = dataSource; 35 } 36 37 public JdbcTemplate getJdbcTemplate() { 38 return jdbcTemplate; 39 } 40 41 public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { 42 this.jdbcTemplate = jdbcTemplate; 43 } 44 }
User.java
1 package helloworld.jdbcTemplate; 2 3 /** 4 * 數據封裝類 5 * */ 6 public class User { 7 private String name; 8 private String age; 9 10 public String getName() { 11 return name; 12 } 13 14 public void setName(String name) { 15 this.name = name; 16 } 17 18 public String getAge() { 19 return age; 20 } 21 22 public void setAge(String age) { 23 this.age = age; 24 } 25 26 @Override 27 public String toString() { 28 return "User{姓名:" + name + "; 年齡:" + age + "}"; 29 } 30 }
Spring之jdbcTemplate:查詢的三種方式(單個值、單個對象、對象集合)