本帖最后由 小蜀哥哥 于 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 }
|