2016-04-07 15 views
0

DB tabanlı depolama alanına Map tabanlı depolama düzeyini yükseltme görevim var. Proje yapılandırmam ek açıklamalara dayanıyor. Bunun gerçekleşmesi için hangi adımları atmam gerektiğini açıklayabilir misiniz? Ve benim dao katmanı kodunu nasıl değiştireceğini:Ek Açıklamalara dayanarak Spring JDBC desteğini ekleme

public class TicketDao { 

    Set<Ticket> tickets = new HashSet<>(); 

    public Set<Ticket> getAll() { 
     return tickets; 
    } 

    public void remove(Ticket ticket){ 
     tickets.remove(ticket); 
    } 

    public void put(Ticket ticket){ 
     tickets.add(ticket); 
    } 
} 
+0

Eğer Spring'in JDBC şablonunu kullanmak istiyor musunuz? – jchampemont

+0

Evet, –

+0

kullanmasını istiyorum. Ek açıklamalar nerede? – Charlie

cevap

2
  1. db ve şemasını
  2. yapılandır DataSource ve JdbcTemplate oluşturun. En basit yapılandırma:

    @Configuration 
    public class JdbcConfig { 
    
        @Bean 
        public DataSource dataSource(){ 
         DriverManagerDataSource dataSource = new DriverManagerDataSource(); 
    
         dataSource.setDriverClassName(""); 
         dataSource.setUrl(""); 
         dataSource.setUsername(""); 
         dataSource.setPassword(""); 
    
         return dataSource; 
        } 
    
        @Bean 
        public JdbcTemplate jdbcTemplate() { 
         return new JdbcTemplate(dataSource()); 
        } 
    
    } 
    
  3. enjekte JdbcTemplate dao ve içine kullanmak bu

    public class TicketDao { 
    
        public static final String DELETE_QUERY = "delete from Ticket where id = ?"; 
        public static final String INSERT_QUERY = "insert into Ticket values(?, ?)"; 
        public static final String GET_ALL_QUERY = "select * from Tickets"; 
    
        @Autowired 
        JdbcTemplate jdbcTemplate; 
    
        public Set<Ticket> getAll() { 
         return new HashSet<>(jdbcTemplate.query(GET_ALL_QUERY, new RowMapper<Ticket>() { 
          @Override 
          public Ticket mapRow(ResultSet rs, int rowNum) throws SQLException { 
           Ticket ticket = new Ticket(); 
           ticket.setId(rs.getString(1)); 
           //other fields mapping 
           return ticket; 
          } 
         })); 
        } 
    
        public void remove(Ticket ticket){ 
         jdbcTemplate.update(new PreparedStatementCreator() { 
          @Override 
          public PreparedStatement createPreparedStatement(Connection con) throws SQLException { 
           PreparedStatement statement = con.prepareStatement(DELETE_QUERY); 
           statement.setString(1, ticket.getId()); 
    
           return statement; 
          } 
         }); 
        } 
    
        public void put(Ticket ticket){ 
         Object[] values = {ticket.getId(), ticket.getName()}; 
         int[] types = {Types.VARCHAR, Types.VARCHAR}; 
    
         jdbcTemplate.update(INSERT_QUERY, values, types); 
        } 
    } 
    
İlgili konular