JavaとMySQLを用いたアプリケーション作成
最近はJavaとMySQLを使用して、掲示板のようなアプリケーションを作成していました。
今日コードレビューを受けた際に、初めて知った知識があったのでここに備忘録として残します。
掲示板を使用するユーザーの情報を編集する際に、編集するユーザーのidを取得してデータベースからそのユーザーの情報を引っ張ってくるという時のお話。
前提として、データベース上のuserテーブルのidカラムはint型の数値が入ります。
DAOでsql文を作成する際に、user_id = ?とバインド変数を使用して、後からメソッドの引数としてint型のidを渡していました。
id自体はrequest.getParameter("userId")という形で取得してきていたので、String型での取得ということになります。これをint型にキャストして、
int userId = Integer.parseInt(request.getParameter("userId"))
という形にしてたんですね。
一応機能としては、動きました。
しかし打鍵テストの際に、編集画面のURLに直接、http~userId=hogeと打ち込むと、エラーが発生しました。
理由としては、hogeをint型にキャストできませんよということでした。
ただ、そうなるとint型でもメソッドに引数としてuserIdを渡すのは無理なのでは?と
ハマってしまいました。
結論、ユーザーを検索してくるselectメソッド(引数にString userId)を新しく追加してできました。
データベースから引っ張ってくる際に、String型の数値を(語弊があるかも)用いて検索がかけれることを知りませんでした。
レビューの際に教えていただき、勉強になりましたとさ。