Spring使用原生JDBC

Spring使用原生JDBC

为加深对Spring解耦的理解,本次实验学习用Spring连接JDBC

一、POM配置文件

pom.xml


    4.0.0

    fanghao
    myspring
    1.0-SNAPSHOT
    jar

    myspring
    http://maven.apache.org

    
        UTF-8
    

    
        
            junit
            junit
            3.8.1
            test
        

        
        
            org.springframework
            spring-context
            5.0.5.RELEASE
        

        
        
            mysql
            mysql-connector-java
            8.0.9-rc
        

        
            org.springframework
            spring-jdbc
            5.0.5.RELEASE
        

    

二、用户类

Customer.java

package newHello.customer;


public class Customer {
    private String name;
    private int age;

    public Customer(String name, int age) {
        this.name = name;
        this.age = age;

    }

    @Override
    public String toString() {
        return "Customer{" +
                "name=" + name +
                ", age=" + age +
                '}';
    }


    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

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

三、用户DAO接口

CustomerDAO.java

package newHello.customer;

/**
 * DAO(Data Access Object)数据存取对象
 */
public interface CustomerDAO {
    void insert(Customer customer);

    Customer findByCustomerId(int custId);
}

四、用户DAO接口实现类

package newHello.customer;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class JdbcCustomerDAO implements CustomerDAO {
    private DataSource dataSource;

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

    /**
     * 使用prepareStatement拼接SQL
     * @param customer 获取输入对象的属性
     */
    public void insert(Customer customer) {
        String sql = "insert into CUSTOMER " +
                "(NAME, AGE) VALUES(?, ?)";
        Connection conn = null;
        try {
            conn = dataSource.getConnection();
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setString(1, customer.getName());
            ps.setInt(2, customer.getAge());
            ps.executeUpdate();
            ps.close();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            if (conn != null)
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
        }
    }

    public Customer findByCustomerId(int custId) {
        String sql = "select * from CUSTOMER where CUST_ID = ?";
        Connection conn = null;
        try {
            conn = dataSource.getConnection();
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setInt(1, custId);
            Customer customer = null;
            ResultSet rs = ps.executeQuery();
            if (rs.next()) {
                customer = new Customer(
                        rs.getString("NAME"),
                        rs.getInt("Age")
                );
            }
            rs.close();
            ps.close();
            return customer;
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
        return null;
    }
}

五、资源文件

资源文件主要做配置,管理java bean

➜  resources tree .
.
├── Spring-Customer.xml
├── Spring-Datasource.xml
└── Spring-Module.xml

0 directories, 3 files

5.1 Spring-Customer.xml



    
    
        
    

5.2 Spring-Datasource.xml



    
    

        
        
        
        
    

5.3 Spring-Module.xml



    
    
    

六、应用启动程序

App.java

package newHello.customer;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App {
    public static void main(String[] args) {
        // 根据XML配置文件生成应用上下文
        ApplicationContext context =
                new ClassPathXmlApplicationContext("Spring-Module.xml");


        // 读取customerDAO的JavaBean,转型为customerDAO
        CustomerDAO customerDAO = (CustomerDAO) context.getBean("customerDAO");

        // 用封装好DAO进行类似ORM的操作
        customerDAO.insert(new Customer("Jack", 21));
        customerDAO.insert(new Customer("Tom", 24));
        customerDAO.insert(new Customer("Jane", 25));

        Customer customer = customerDAO.findByCustomerId(2);
        System.out.println(customer);
    }
}

七、运行结果

Customer{name=Tom, age=24}

转载于:https://www.cnblogs.com/fanghao/p/8764976.html

你可能感兴趣的:(Spring使用原生JDBC)