黑马程序员技术交流社区

标题: 【成都校区】Spring之jdbcTemplate [打印本页]

作者: 小蜀哥哥    时间: 2019-9-12 15:58
标题: 【成都校区】Spring之jdbcTemplate
本帖最后由 小蜀哥哥 于 2019-9-12 16:01 编辑

Spring之JdbcTemplate:查询的三种方式(三个值,单个对象,对象集合)
JdbcTemplateDemo1.java
[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
[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
[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
[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 }








欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2