where 1=1の役割

818 ワード

プログラムにコードを書いて、多条件クエリに使います。お客様が入ってきたクエリパラメータに基づいてsql文を構築する必要があります。例えば、中国語名、英語名に基づいて学生表を調べます。
String sql = "SELECT * FROM student WHERE 1=1 ";
 
ユーザーが中国語名を入力したら
if (StringUtils.isNotBlank(request.name)) {
    sql = sql + "name = ? ";
}
ユーザが英語名を入力したら
if (StringUtils.isNotBlank(request.englishName)) {
    sql = sql + "englishName= ?";
}
このようにsql文をつづり合わせて、もしユーザーの一つのパラメータが全部伝わらなかったら、sqlは「SELECT*FROM student WHERE」です。
そのため、第一行コードはWHEREの後に1=1を加えると、お客様がパラメータを伝えていない時も正常に実行できます。