没有提交的Spring JDBC更新

时间:2017-07-21 07:12:41

标签: spring oracle jdbc

我有一张简单的桌子"员工"定义为:

create table employee (id int, name varchar2(40));

我想编写一个应用程序来在其中插入值,并且只在插入所有值后才提交。这是我的代码:

Employee.java:

package com.empl;

public class Employee {
    private int id;
    private String name;

    public void setId(int id) {
        this.id = id;
    }

    public int getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }
}

EmployeeDAO.java:

package com.empl;

import javax.sql.DataSource;

public interface EmployeeDAO {
    public void setDataSource(DataSource dataSource);

    public void create(int id, String name);
}

EmployeeJDBCTemplate.java:

package com.empl;

import javax.sql.DataSource;

import org.springframework.jdbc.core.JdbcTemplate;

public class EmployeeJDBCTemplate {
    private DataSource dataSource;
    private JdbcTemplate jdbcTemplateObject;

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

    public DataSource getDataSource() {
        return dataSource;
    }

    public void create(int id, String name) {
        String SQL = "insert into employee (id, name) values (?, ?)";
        jdbcTemplateObject.update(SQL, id, name);
    }
}

MainApp.java:

package com.empl;

import java.sql.SQLException;

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


public class MainApp {
    public static void main(String args[]) throws SQLException {
        ApplicationContext context = new 
             ClassPathXmlApplicationContext("Beans.xml");

        EmployeeJDBCTemplate employeeJDBCTemplate = 
            (EmployeeJDBCTemplate) context.getBean("employeeJDBCTemplate");

        employeeJDBCTemplate.getDataSource().getConnection().
            setAutoCommit(false);

        employeeJDBCTemplate.create(1, "E1");
        employeeJDBCTemplate.create(2, "E2");
    }
}

beans.xml中:     

<beans xmlns = "http://www.springframework.org/schema/beans"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" 
   xsi:schemaLocation = "http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd ">

   <bean id = "dataSource" class = 
        "org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name = "driverClassName" value = 
            "oracle.jdbc.driver.OracleDriver"></property>
        <property name = "url" value = 
            "jdbc:oracle:thin:@localhost:1521/xe"></property>
        <property name = "username" value = "sys as sysdba"></property>
        <property name = "password" value = "pass"></property>
   </bean>

   <bean id = "employeeJDBCTemplate" class = 
        "com.empl.EmployeeJDBCTemplate">
        <property name = "dataSource" ref = "dataSource"></property>
   </bean>
</beans>

我执行了代码但是当我输入SQLPlus并输入rollback;命令时,记录仍在表中。

我看到了相关问题,但似乎没有任何效果。

0 个答案:

没有答案