Изменения с весны mvc не отражаются в базе данных oracle - PullRequest
0 голосов
/ 24 апреля 2020

Я учусь устанавливать sh соединение с oracle базой данных из Spring MVC. Итак, вот что я сделал до сих пор

весна. xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context.xsd">

    <context:annotation-config/>
    <context:component-scan base-package="org.springdemo" />

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



</beans> 

Круг. java

package org.springdemo.model;

public class Circle {

    private int id;
    private String name;

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    public Circle(int id , String name){

        setId(id);
        setName(name);
    }


}

JdbcDaoImpl. java

package org.springdemo.dao;

import java.sql.Connection;
import java.sql.SQLException;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;

@Component
public class JdbcDaoImpl {

    @Autowired
    private DataSource dataSource;

    private JdbcTemplate jdbcTemplate = new JdbcTemplate();

    public DataSource getDataSource() {
        return dataSource;
    }

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

    public JdbcTemplate getJdbcTemplate() {
        return jdbcTemplate;
    }

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

    public void getCircle(){


        String sql = "SELECT COUNT(*) FROM circle";
        jdbcTemplate.setDataSource(getDataSource());
        int count = jdbcTemplate.queryForObject(sql,Integer.class);
        System.out.println("count is"+count);

    }

    public void delete(int id) {
        JdbcTemplate delete = new JdbcTemplate(dataSource);
        delete.update("DELETE from CIRCLE where ID= ?",
                new Object[] {id});
        System.out.println("deleted successfully");
    }

}

JdbcDemo. java

package org.springdemo;

import org.springdemo.dao.JdbcDaoImpl;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class JdbcDemo {



    public static void main(String[] args) {

        ApplicationContext ctxt = new ClassPathXmlApplicationContext("spring.xml");
        JdbcDaoImpl circleDao =(JdbcDaoImpl) ctxt.getBean("jdbcDaoImpl", JdbcDaoImpl.class);
        circleDao.getCircle();
        circleDao.delete(2);

    }

}

Кажется, все работает без ошибок, и я получаю следующий вывод.

enter image description here

, но в базе данных у меня есть 3 строки, и моя таблица не обновляется.

enter image description here

когда я пытался запросить несуществующую таблицу, чтобы подтвердить, подключен ли я к БД, я получаю исключение, указывающее, что я подключен только к базе данных. Может кто-нибудь объяснить мне, что может быть причиной того, что мои изменения не отражаются в базе данных.

1 Ответ

0 голосов
/ 24 апреля 2020

Давайте Spring создадим экземпляр вашей jdbctemplate

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">    
<property name="dataSource" ref="dataSource"></property>    
</bean> 

@Autowired
private JdbcTemplate jdbcTemplate

Не используйте Obect [], а только id.

Что возвращает метод delete.update?

...