Java tutorial
/* * Copyright 2010-2013 Bornil Photography * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package main.java.net.bornil.db.service.jdbc; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.sql.DataSource; import main.java.net.bornil.db.entity.Event; import main.java.net.bornil.db.service.EventDao; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.IncorrectResultSizeDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.simple.SimpleJdbcInsert; import org.springframework.stereotype.Repository; /** * @author MaMuN * @since 2012/08/25 */ @Repository public class JdbcEventDao implements EventDao { private static final Logger logger = Logger.getLogger(JdbcEventDao.class.getName()); private JdbcTemplate jdbcTemplate; @Autowired public void setDataSource(DataSource dataSource) { this.jdbcTemplate = new JdbcTemplate(dataSource); } final static class EventRowMapper implements RowMapper<Event> { public Event mapRow(ResultSet resultSet, int i) throws SQLException { Event evt = new Event(); evt.setEvtId(resultSet.getInt("EVT_ID")); evt.setEvtStatus(resultSet.getInt("EVT_STATUS")); evt.setEvtClass(resultSet.getString("EVT_CLASS")); evt.setCreatedBy(resultSet.getString("EVT_CREATED_BY")); evt.setUpdatedBy(resultSet.getString("EVT_UPDATED_BY")); return evt; } } /* * (non-Javadoc) * * @see main.java.net.bornil.db.EventService#getEvents() */ @Override public List<Event> getEvents() { return this.jdbcTemplate.query( "select EVT_ID, EVT_STATUS, EVT_CLASS, EVT_CREATED_BY, EVT_UPDATED_BY from EVENT", new EventRowMapper()); } @Override public Event getEvent(int evtId) { try { return this.jdbcTemplate.queryForObject( "select EVT_ID, EVT_STATUS, EVT_CLASS, EVT_CREATED_BY, EVT_UPDATED_BY from EVENT where EVT_ID = ?", new Object[] { evtId }, new EventRowMapper()); } catch (IncorrectResultSizeDataAccessException ex) { return new Event(); } } /* * (non-Javadoc) * * @see * main.java.net.bornil.db.EventService#createEvent(main.java.net.bornil * .db.entity.Event) */ @Override public int createEvent(Event event) { SimpleJdbcInsert insertEvent = new SimpleJdbcInsert(this.jdbcTemplate).withTableName("EVENT") .usingColumns("EVT_STATUS", "EVT_CLASS", "EVT_CREATED_BY", "EVT_CREATED_ON") .usingGeneratedKeyColumns("EVT_ID"); Map<String, Object> args = new HashMap<String, Object>(4); args.put("EVT_STATUS", 1100); args.put("EVT_CLASS", event.getEvtClass()); args.put("EVT_CREATED_BY", "MaMuN"); args.put("EVT_CREATED_ON", new Date()); Number newId = insertEvent.executeAndReturnKey(args); event.setEvtId(newId.intValue()); return event.getEvtId(); } /* * (non-Javadoc) * * @see * main.java.net.bornil.db.service.EventDao#updateEvent(main.java.net.bornil * .db.entity.Event) */ @Override public int updateEvent(Event event) { return this.jdbcTemplate.update( "UPDATE EVENT SET EVT_CLASS = ?, EVT_UPDATED_BY = ?, EVT_UPDATED_ON = ? WHERE EVT_ID = ?", event.getEvtClass(), "MaMuN", Calendar.getInstance().getTime(), event.getEvtId()); } }