ssh:hql動態查詢+多條件自由拼接+模糊查詢
阿新 • • 發佈:2019-02-18
@Override public List<Book> getByInfo(String name, String author, String publisher) { Session session=sessionFactory.getCurrentSession(); StringBuffer hql= new StringBuffer(); hql.append( "from Book b where 1=1 "); if (name.length()!=0) { hql.append( "and b.name like '%"+name+ "%'"); } if (author.length()!=0) hql.append("and b.author like '%" + author + "%'"); if (publisher.length()!=0) hql.append("and b.publisher like '%"+publisher+"%'") ; Query query=session.createQuery(hql.toString()); list=query.list(); return list; }
% :表示任意0個或多個字元。可匹配任意型別和長度的字元,有些情況下若是中文,請使用兩個百分號(%%)表示。
比如 SELECT * FROM [user] WHERE u_name LIKE '%三%'
將會把u_name為“張三”,“張貓三”、“三腳貓”,“唐三藏”等等有“三”的記錄全找出來。
另外,如果需要找出u_name中既有“三”又有“貓”的記錄,請使用and條件
SELECT * FROM [user] WHERE u_name LIKE '%三%' AND u_name LIKE '%貓%'
若使用 SELECT * FROM [user] WHERE u_name LIKE '%三%貓%'
雖然能搜尋出“三腳貓”,但不能搜尋出符合條件的“張貓三”。