当前位置:Gxlcms > 数据库问题 > Spring之jdbcTemplate:查询的三种方式(单个值、单个对象、对象集合)

Spring之jdbcTemplate:查询的三种方式(单个值、单个对象、对象集合)

时间:2021-07-01 10:21:17 帮助过:23人阅读

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:查询的三种方式(单个值、单个对象、对象集合)

标签:his   数据封装   mysq   this   使用   dstat   通过   三种方式   nbsp   

人气教程排行