zoukankan      html  css  js  c++  java
  • Spring之jdbcTemplate:查询的三种方式(单个值、单个对象、对象集合)

    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 }
  • 相关阅读:
    Salesforce: 测试代码写在非测试类中
    Salesforce: 使用代码编辑日期时间
    测试用例练习
    DFA算法实现敏感词过滤
    基于redis实现分布式锁
    Python检查字符串之间的相似度
    二维码生成器
    MySQL 备份/恢复
    实现阿里云短信验证
    SnowFlake 生成唯一订单id
  • 原文地址:https://www.cnblogs.com/gongxr/p/8053010.html
Copyright © 2011-2022 走看看