Search code examples
javaspring-mvcoracle-sqldeveloperjdbctemplateoracle18c

Changes from spring mvc not getting reflected in oracle database


I am learning to establish connection to oracle database from Spring MVC . so here is what i have done so far

spring.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> 

Circle.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);

    }

}

Everything seems to be working fine without any errors and i am getting following output.

enter image description here

but in database i have 3 rows and my table is not getting updated .

enter image description here

when i tried to query for a non existing table to confirm whether i am connected to DB , i am getting exception indicating that i am connected to database only . Can someone explain me what would be the possible reason for my changes not reflecting in database.


Solution

  • Let's Spring instantiate your jdbctemplate

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

    Don't use Obect[] but only id.

    What is returned by the method delete.update ?