Java 在数据库中搜索
我需要一些建议如何在数据库中执行搜索。例如,我在数据库中有一个名为:Java 在数据库中搜索,java,mysql,hibernate,Java,Mysql,Hibernate,我需要一些建议如何在数据库中执行搜索。例如,我在数据库中有一个名为:Student的表,列为:姓名、姓氏、大学、年龄、课程 当我填写搜索表时,我没有指定姓氏和大学,我希望我的搜索结果是每个学生,其中姓名=我指定的姓名、年龄-我指定的年龄和课程-我指定的课程和姓氏和大学可以是任何一个 有人能给我一些建议吗 编辑 感谢您的快速重播。但似乎我不明白,或者它不起作用。这是我真正的疑问: SELECT UNIVERSITY, INFORMANT_NAME, AGE FROM informant WHE
Student
的表,列为:姓名、姓氏、大学、年龄、课程
当我填写搜索表时,我没有指定姓氏和大学,我希望我的搜索结果是每个学生,其中姓名=我指定的姓名、年龄-我指定的年龄和课程-我指定的课程和姓氏和大学可以是任何一个
有人能给我一些建议吗
编辑
感谢您的快速重播。但似乎我不明白,或者它不起作用。这是我真正的疑问:
SELECT UNIVERSITY, INFORMANT_NAME, AGE
FROM informant
WHERE UNIVERSITY='%VDU%'
AND INFORMANT_NAME='%Mindaugas Jonaitis%'
AND AGE='%21%';
它不会给我任何结果
SELECT UNIVERSITY, INFORMANT_NAME, AGE
FROM informant
WHERE UNIVERSITY='VDU'
AND INFORMANT_NAME='Mindaugas Jonaitis'
AND AGE='21';
此查询没有,但仅针对指定的值。我希望返回的结果将是表中的所有数据,其中UNIVERSITY='VDU'
或其他未提供或提供null的值,或将被跳过的内容
SELECT UNIVERSITY, INFORMANT_NAME, AGE
FROM informant
WHERE UNIVERSITY='VDU'
AND INFORMANT_NAME='????'
AND AGE='????';
有很多方法可以做到这一点。但是对于所有这些,您都需要从
Hibernate
获取会话。从那时起,您可以:
- 从
命名查询创建查询
对象
- 从
sql字符串创建Query
对象
- 创建
标准
对象
然后,只需一个query.list()
或criteria.list()
有关更多信息:
如果你想使用通配符,你需要像一样使用,而不是=
SELECT UNIVERSITY, INFORMANT_NAME, AGE
FROM informant
WHERE UNIVERSITY LIKE '%VDU%'
AND INFORMANT_NAME LIKE '%Mindaugas Jonaitis%'
AND AGE LIKE '%21%';
但是,如果在前导通配符中使用之类的
,则无法在该字段上使用索引。
如果您在MyISAM中使用MySQL,请在要使用通配符搜索的字段上放置全文索引,并使用:
SELECT UNIVERSITY, INFORMANT_NAME, AGE
FROM informant
WHERE UNIVERSITY LIKE '%VDU%'
AND MATCH(INFORMANT_NAME) AGAINST('Mindaugas Jonaitis')
AND AGE LIKE '21%';
匹配。。反
仅适用于长度超过4个字符的搜索短语。而且,在年龄上使用前导通配符搜索也没有任何意义。我通常不想得到所有21,31,41
的人,但我通常想得到所有20多岁的人。findByExample DAO方法在这里总是有用的