Spring之jdbcTemplate:查詢的三種方式(單個值、單個對象、對象集合)

  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 }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章