1

Java Spring と JDBC を使用した CRUD アプリケーションに取り組んでいます。私はチュートリアルを見てきましたが、crUd の「U」文字で立ち往生しました :)。いろいろやってしまいましたが、お役に立てれば幸いです。

これが私がやったことです:

トーナメントDAO:

public void edit(Tournament tournament){
    String sql = "update TOURNAMENT.TOURNAMENT set name = ? , location = ? , date = ? , where id = ?";

    m_jdbcTemplate.update(sql, 
              new Object[]{ 
              tournament.getName(),
              tournament.getLocation(),
              tournament.getDate(), 
              Long.toString(tournament.getId())
    });
}

コントローラー「EditTournament」:

@Controller
public class EditTournament {

    @Autowired
    private TournamentService turnirSer;

    @RequestMapping(value = "/editTournament", method = RequestMethod.GET)
    public ModelAndView edit(@RequestParam("id") Integer id) {
        ModelAndView mav = new ModelAndView("editTournament");
        Tournament Tournament = turnirSer.getById(id);
        mav.addObject("editTournament", tournament);
        return mav;
    }

    @RequestMapping(value = "/editTournament", method = RequestMethod.POST)
    public String update(Model model, @Valid Tournament tournament,
            BindingResult bindingResult,
            @ModelAttribute("tournamentList") ArrayList<Tournament> TournamentList) {
        if (!bindingResult.hasErrors()) {
            turnirSer.editTournament(tournament);
            tournamentList.add(tournament);         
        }
        return "editTournament";
    }

}

今、私はこれが完全に混乱していることを知っているので、あなたの助けが必要です!

この行で:

Tournament Tournament = turnirSer.getById(id);

私は method を持ってgetById(id)いません。使用していない Hibernate に基づいたフォームのチュートリアルを使用しましたが、作成方法がわかりません!

私の更新が機能するように、何が間違っているのか、このコードをどのように書くのかを誰かが説明してくれませんか。

PS。作成、読み取り、削除は正常に機能しています。この質問をここに投稿するのが私の最後の選択肢でした。できる限りのことをしました。

4

2 に答える 2

4

余分なものがあります

 ,

whereクエリの前

date = ? , where id = ?";
于 2012-08-27T12:03:58.700 に答える
0

TournamentDAOname を使用して、(または少し汎用的に実装する場合はそのスーパークラスに)もう1つのメソッドを含めることができますgetById(String id)。実装は次のようになります

public Tournament getById(String id){
    String sql = "select name, location, date from TOURNAMENT.TOURNAMENT where id = :id";
    List<Map<String, String>> results = m_jdbcTemplate.queryForList(sql, new HashMap<String, String>(){{put("id", id)}});
    //as id would be the primary key, at max you may one record (one entry in the list).
    Map<String, Object> result = results.get(0); //add a check for no results
        Tournament t = new Tournament();
        t.setName(result.get("name"));
        //set all your properties as mentioned above
    return t;
    }

同様のものをjdbctemplate提供し、プロパティ名とすべてのハードコーディングを自動化するのに役立つ 他のオプションがあります。RowMaperRowCallbackHandler

基本的な例については、このリンクを参照してください。

于 2012-08-27T12:22:43.643 に答える