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


JdbcTemplateDemo2.java 

package helloworld.jdbcTemplate;

import org.springframework.jdbc.core.JdbcTemplate;

import java.sql.*;
import java.util.List;

/**
 * 功能:通過JdbcTemplate實現查詢操作
 * 查詢結果需要自己封裝(實現RowMapper接口)
 */

public class JdbcTemplateDemo2 {
// JdbcTemplate使用步驟:
// 1、導入jar包;2、設置數據庫信息;3、設置數據源;4、調用jdbcTemplate對象中的方法實現操作

    public static void main(String[] args) {
        // 設置數據庫信息和據源
        JdbcTemplateObject jdbcTemplateObject = new JdbcTemplateObject();
        JdbcTemplate jdbcTemplate = jdbcTemplateObject.getJdbcTemplate();

//        插入數據
//        insertData();

//        查詢返回某一個值:查詢表中數據總數
        queryForOne(jdbcTemplate);

//        查詢返回對象
        queryForObject(jdbcTemplate);

//        查詢返回list集合
        queryForList(jdbcTemplate);

//        使用JDBC底層實現查詢
        queryWithJDBC();
    }

    //  插入數據
    public static void insertData() {
        JdbcTemplateObject jdbcTemplateObject = new JdbcTemplateObject();
        JdbcTemplate jdbcTemplate = jdbcTemplateObject.getJdbcTemplate();
//        調用jdbcTemplate對象中的方法實現操作
        String sql = "insert into user value(?,?,?)";
        //表結構:id(int、自增),name(varchar 100),age(int 10)
        int rows = jdbcTemplate.update(sql, null, "Tom", 35);
        System.out.println("插入行數:" + rows);
    }

    /**
     * 查詢返回某一個值:查詢表中數據總數
     */
    public static void queryForOne(JdbcTemplate jdbcTemplate) {
        String sql = "select count(*) from user";
//        調用方法獲得記錄數
        int count = jdbcTemplate.queryForObject(sql, Integer.class);
        System.out.println("數據總數:" + count);
    }

    /**
     * 功能:查詢返回單個對象
     * 步驟:新建MyRowMapper類實現RowMapper接口,重寫mapRow方法,指定返回User對象
     */
    public static void queryForObject(JdbcTemplate jdbcTemplate) {
        String sql = "select * from user where name = ?";
//        新建MyRowMapper類實現RowMapper接口,重寫mapRow方法,指定返回User對象
        User user = jdbcTemplate.queryForObject(sql, new MyRowMapper(), "Tom");
        System.out.println(user);
    }

    /**
     * 功能:查詢返回對象集合
     * 步驟:新建MyRowMapper類實現RowMapper接口,重寫mapRow方法,指定返回User對象
     */
    public static void queryForList(JdbcTemplate jdbcTemplate) {
        String sql = "select * from user";
//        第三個參數可以省略
        List<User> users = jdbcTemplate.query(sql, new MyRowMapper());
        System.out.println(users);
    }

    /**
     * 使用JDBC底層實現查詢
     */
    public static void queryWithJDBC() {
        Connection conn = null;
        PreparedStatement psmt = null;
        ResultSet rs = null;
        String jdbcUrl = "jdbc:mysql://192.168.184.130:3306/gxrdb";

        try {
//            加載驅動
            Class.forName("com.mysql.jdbc.Driver");
//            創建連接
            conn = DriverManager.getConnection(jdbcUrl, "root", "root");
            String sql = "select * from user where name = ?";
//            預編譯sql
            psmt = conn.prepareStatement(sql);
//            從1開始,沒有就不需要
            psmt.setString(1, "Tom");
//            執行sql
            rs = psmt.executeQuery();
//            int num = psmt.executeUpdate(); //增刪改,返回操作記錄數

//            遍歷結果集
            while (rs.next()) {
                //根據列名查詢對應的值,也可以是位置序號
                String name = rs.getString("name");
                String age = rs.getString("age");
                System.out.println(name);
                System.out.println(age);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                rs.close();
                psmt.close();
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

}

  MyRowMapper.java 

package helloworld.jdbcTemplate;

import org.springframework.jdbc.core.RowMapper;

import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * 實現RowMapper接口,返回User對象
 * */
public class MyRowMapper implements RowMapper<User>{

    @Override
    public User mapRow(ResultSet resultSet, int i) throws SQLException {
//        獲取結果集中的數據
        String name = resultSet.getString("name");
        String age = resultSet.getString("age");
//        把數據封裝成User對象
        User user = new User();
        user.setName(name);
        user.setAge(age);
        return user;
    }
}

  JdbcTemplateObject.java

package helloworld.jdbcTemplate;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;

/**
 * 功能:設置數據庫信息和數據源
 *
 * JdbcTemplat使用
 * 1、導入jar包;2、設置數據庫信息;3、設置數據源;4、調用jdbcTemplate對象中的方法實現操作
 */
public class JdbcTemplateObject {
    DriverManagerDataSource dataSource;
    JdbcTemplate jdbcTemplate;

    public JdbcTemplateObject() {
        //        設置數據庫信息
        this.dataSource = new DriverManagerDataSource();
        this.dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        this.dataSource.setUrl("jdbc:mysql://192.168.184.130:3306/gxrdb");
        this.dataSource.setUsername("root");
        this.dataSource.setPassword("root");

//        設置數據源
        this.jdbcTemplate = new JdbcTemplate(dataSource);

    }

    public DriverManagerDataSource getDataSource() {
        return dataSource;
    }

    public void setDataSource(DriverManagerDataSource dataSource) {
        this.dataSource = dataSource;
    }

    public JdbcTemplate getJdbcTemplate() {
        return jdbcTemplate;
    }

    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }
}

User.java

package helloworld.jdbcTemplate;

/**
 * 數據封裝類
 * */
public class User {
    private String name;
    private String age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{姓名:" + name + "; 年齡:" + age + "}";
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM