Java程序中使用的sql語句一直不明白是什么作用,在網上搜索了一些資料,看到一篇博客,稍微解答了具體每條代碼的作用,因為作者加了詳細的注解,可以作為參考
《JavaWeb dao層條件查詢(模糊查詢)的sql語句》
--------------------- 本文來自 阿顧1234 的CSDN 博客 ,全文地址請點擊:https://blog.csdn.net/u010452388/article/details/80548970
目的:通過一條查詢語句能夠實現用戶所有的條件進行查詢
代碼
/** * 通過用戶輸入的參數,到數據庫中查詢到商品信息,並以集合的方式返回 * @param pname 傳入的查詢參數 * @param pdesc 傳入的查詢參數 * @return 返回一個集合,其集合由實體Product組成 * @throws SQLException */ public List<Product> findProByIndis(String pname, String pdesc) throws SQLException { //創建dbutils下的QueryRunnner QueryRunner runner = new QueryRunner(C3P0Utils.getDataSource()); //☆☆☆注意where 1=1后面一定要留空格,否則和后面進行字符串拼接后,到數據庫查詢會出現錯誤 String sql = "select * from product where 1=1 "; //創建一個集合用來存儲查詢的參數,因為我們不清楚客戶到底輸入幾個參數,所以用集合來存放 List<String> list = new ArrayList<String>(); if (pname != "") { //如果用戶輸入的pname不為空,那需要進行字符串拼接 sql += "and pname like ? "; //將用戶輸入的參數添加到集合 list.add("%" + pname + "%"); } if (pdesc != "") { sql += "and pdesc like ? "; list.add("%" + pdesc + "%"); } //最后將集合轉化成數組 Object[] params = list.toArray(); //調用runner對象的query查詢方法,並將集合返回 return runner.query(sql, new BeanListHandler<Product>(Product.class), params);
注意點:
這里作者說一定要加上空格是對的,之前敲的代碼都是在sql語句最前面加上空格,是一個道理