Hibernate中的命名查询 (一)

2014-11-24 10:33:34 · 作者: · 浏览: 2

介绍下面几种方式:


方法一:在配置文件中标记的下面,声明查询语句

[xml]
ping>
catalog="users">
<id name="id" type="integer">
<column name="id" />


tring">





ex" type="string">





findStudentByName">





















备注:是什么意思

标明是纯文本的,没有这个的话 < > & 字符是不能直接存入XML的,需要转义,而用这个标记则不需要转义而将这些符号存入XML文档。可以避免未预料的特殊符号导致XML解析出错。


[java]
public List query(){
Session session = HibernateSessionFactory.getSession();
Query q = session.getNamedQuery("findStudentByName");
q.setString("name", "zhangsan");
List list = q.list();
return list;
}

public List query(){
Session session = HibernateSessionFactory.getSession();
Query q = session.getNamedQuery("findStudentByName");
q.setString("name", "zhangsan");
List list = q.list();
return list;
}
方法二:也可以在配置文件中标记的里面,声明查询语句, 但是java代码调用时需要指定(包+类+配置名)

[xml]









































[java]
public List query(){
Session session = HibernateSessionFactory.getSession();
Query q = session.getNamedQuery("com.test.bean.Student.findStudentByName");
q.setString("name", "zhangsan");
List list = q.list();
return list;
}

public List query(){
Session session = HibernateSessionFactory.getSession();
Query q = session.getNamedQuery("com.test.bean.Student.findStudentByName");
q.setString("name", "zhangsan");
List list = q.list();
return list;
}
方法三:使用原生sql查询,使用此种方式必须把表所有的列写全才可以,否则会出现‘列名无效’的错误 ,除非你使用return-scalar来设置字段类型。

[xml]


















alias="s" class="com.test.bean.Student">

























备注:也可以在标记里面应用标记将表的所有字段列出来,与上面描述的方法一样,都是查询出来所有列。


[java]
public List query(){
Session session = HibernateSessionFactory.getSession();
Query q = session.getNamedQuery("findStudentByName");
q.setString("name", "zhangsan");
List list = q.list();
return list;
}

public List query(){
Session session = HibernateSessionFactory.getSession();
Query q = session.getNamedQuery("findStudentByName");
q.setString("name", "zhangsan");
List list = q.list();
return list;
}


方法四:使用原生sql查询, 如果应用return-scalar来设置字段类型, 就可以实现查询部分字段。

[xml]