2016-04-07 13 views
0

MapベースのストレージをDBベースのストレージにアップグレードするタスクがあります。プロジェクトの設定はアノテーションに基づいています。それを実現するためにどのステップを取るべきですか?そして、どのように私のdao層のコードを変更します:アノテーションに基づくSpring JDBCサポートの追加

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

あなたはSpringのJDBCテンプレートを使用しますか? – jchampemont

+0

はい、使用しますか –

+0

注釈はどこにありますか? – Charlie

答えて

2
  1. デシベルとスキーマ
  2. 設定DataSourceJdbcTemplateを作成します。最も単純な構成:

    @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. を注入JdbcTemplate DAOとには、使用して

    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); 
        } 
    } 
    
関連する問題