问题定义:
1. 完全匹配歌曲名或歌手名,必须放在开头
2. 模糊匹配歌曲名或歌手名,位置可以不确定
3. 能实现分页
检索歌曲SQL语句(本人用的是Mysql数据库,limit有些数据库不支持)
select * from (select * from music where MUSIC_NAME = :keyword or MUSIC_SINGER=:keyword union select * from music where MUSIC_NAME like :like or MUSIC_SINGER like :like) as song limit :indexStart,:size
其中:keyword=关键字,like=%关键字%(之所以这样,而不使用MUSIC_NAME like ‘%keyword%’,是因为Hibernate绑定参数时,不识别”中的参数名),indexStart=分页起始索引,size=每页大小
建议:*如果能用存储过程,最好用存储过程封装,因为存储过程会预先编译查询语句,对于一些常用检索能提高性能。*