HibernateTemplate 怎么用

HibernateTemplate 中的

public List findByNamedQuery(String queryName)
                      throws DataAccessException

queryName 是什么呀?
问题补充

wangjia4202 写道
findByNamedQuery有三个从栽入方法:
findByNamedQuery(String queryName);
findByNamedQuery(String queryName,Object value);
findByNamedQuery(String queryName,Object values);
查看API说的很清楚 :
Execute a named query for persistent instances. A named query is defined in a Hibernate mapping file.
意思说所 :
通过 queryName 查询数据库中的持久对象,而queyName是定义在此对象对应的hibernate的映射文件中的!
定义语法如下:
<query name="定义查询名">
<![定义查询语句]]>
</query>
例1:findByNamedQuery(String queryName);
<query name="all">
<![from User]]>
</query>
findByNamedQuery("all");

例2: findByNamedQuery(String queryName,Object value);
<query name="byname">
<![from User where u.name = ?]]>
</query>

findByNamedQuery("byname","tiger");

例3: findByNamedQuery(String queryName,Object values);
<query name="byNameAndAge">
<![from User where u.name = ? and u.age = ?]]>
</query>
findByNamedQuery("byNameAndAge",new Object[]{"tiger",18});


HibernateTemplate 还有一个方法 :
findByNamedQueryAndNamedParam(String queryName,String[] paramNames, Object[] values)

这是映射文件就要用: 而不是?
如:
<query name="byNameAndAge">
<![from User where u.name = :name and u.age = :age]]>
</query>







把这些<query name="byNameAndAge">
<![from User where u.name = ? and u.age = ?]]>
</query> 写到配置文件里吗?,那样会不会就写死了,缺少灵活性
问题补充
wangjia4202 写道
findByNamedQuery有三个从栽入方法:
findByNamedQuery(String queryName);
findByNamedQuery(String queryName,Object value);
findByNamedQuery(String queryName,Object values);
查看API说的很清楚 :
Execute a named query for persistent instances. A named query is defined in a Hibernate mapping file.
意思说所 :
通过 queryName 查询数据库中的持久对象,而queyName是定义在此对象对应的hibernate的映射文件中的!
定义语法如下:
<query name="定义查询名">
<![定义查询语句]]>
</query>
例1:findByNamedQuery(String queryName);
<query name="all">
<![from User]]>
</query>
findByNamedQuery("all");

例2: findByNamedQuery(String queryName,Object value);
<query name="byname">
<![from User where u.name = ?]]>
</query>

findByNamedQuery("byname","tiger");

例3: findByNamedQuery(String queryName,Object values);
<query name="byNameAndAge">
<![from User where u.name = ? and u.age = ?]]>
</query>
findByNamedQuery("byNameAndAge",new Object[]{"tiger",18});


HibernateTemplate 还有一个方法 :
findByNamedQueryAndNamedParam(String queryName,String[] paramNames, Object[] values)

这是映射文件就要用: 而不是?
如:
<query name="byNameAndAge">
<![from User where u.name = :name and u.age = :age]]>
</query>




在api上只写了个
queryName - the name of a Hibernate query in a mapping file

我怎么才能知道它需要的是<query name="byNameAndAge">
<![from User where u.name = :name and u.age = :age]]>
</query> 这样的配置呢

api里好像很多都这样哎

问题补充
lerous 写道
cheney_love 写道
wangjia4202 写道
findByNamedQuery有三个从栽入方法:
findByNamedQuery(String queryName);
findByNamedQuery(String queryName,Object value);
findByNamedQuery(String queryName,Object values);
查看API说的很清楚 :
Execute a named query for persistent instances. A named query is defined in a Hibernate mapping file.
意思说所 :
通过 queryName 查询数据库中的持久对象,而queyName是定义在此对象对应的hibernate的映射文件中的!
定义语法如下:
<query name="定义查询名">
<![定义查询语句]]>
</query>
例1:findByNamedQuery(String queryName);
<query name="all">
<![from User]]>
</query>
findByNamedQuery("all");

例2: findByNamedQuery(String queryName,Object value);
<query name="byname">
<![from User where u.name = ?]]>
</query>

findByNamedQuery("byname","tiger");

例3: findByNamedQuery(String queryName,Object values);
<query name="byNameAndAge">
<![from User where u.name = ? and u.age = ?]]>
</query>
findByNamedQuery("byNameAndAge",new Object[]{"tiger",18});


HibernateTemplate 还有一个方法 :
findByNamedQueryAndNamedParam(String queryName,String[] paramNames, Object[] values)

这是映射文件就要用: 而不是?
如:
<query name="byNameAndAge">
<![from User where u.name = :name and u.age = :age]]>
</query>







把这些<query name="byNameAndAge">
<![from User where u.name = ? and u.age = ?]]>
</query> 写到配置文件里吗?,那样会不会就写死了,缺少灵活性

写到配置文件中,是增强灵活性吧,不然写到哪,JAVA代码中吗?那样才是缺少灵活性!



我是这个意思:要根据name和age查询的话要写一个<![from User where u.name = ? and u.age = ?]]>
如果有一天我要根据name和sex来查询一个人,岂不是要再改...有没有更灵活点写法


问题补充:
那你就自己写个配置文件,然后自己读取它,然后再让hibernate查询嘛

比如
selectbynameandage=from User where u.name = ? and u.age = ?
selectbynameandsex=from User where u.name = ? and u.sex = ?

那怎么和Hibernate的query标签结合起来?

[quote="cheney_love"][quote="wangjia4202"]findByNamedQuery有三个从栽入方法:
findByNamedQuery(String queryName);
findByNamedQuery(String queryName,Object value);
findByNamedQuery(String queryName,Object values);
查看API说的很清楚 :
Execute a named query for persistent instances. A named query is defined in a Hibernate mapping file.
意思说所 :
通过 queryName 查询数据库中的持久对象,而queyName是定义在此对象对应的hibernate的映射文件中的!
定义语法如下:

<![定义查询语句]]>

例1:findByNamedQuery(String queryName);

<![from User]]>

findByNamedQuery("all");

例2: findByNamedQuery(String queryName,Object value);

<![from User where u.name = ?]]>

findByNamedQuery("byname","tiger");

例3: findByNamedQuery(String queryName,Object values);

<![from User where u.name = ? and u.age = ?]]>

findByNamedQuery("byNameAndAge",new Object[]{"tiger",18});

HibernateTemplate 还有一个方法 :
findByNamedQueryAndNamedParam(String queryName,String[] paramNames, Object[] values)

这是映射文件就要用: 而不是?
如:

<![from User where u.name = :name and u.age = :age]]>

[/quote]

把这些
<![from User where u.name = ? and u.age = ?]]>
写到配置文件里吗?,那样会不会就写死了,缺少灵活性[/quote]
写到配置文件中,是增强灵活性吧,不然写到哪,JAVA代码中吗?那样才是缺少灵活性!

findByNamedQuery有三个从栽入方法:
findByNamedQuery(String queryName);
findByNamedQuery(String queryName,Object value);
findByNamedQuery(String queryName,Object values);
查看API说的很清楚 :
Execute a named query for persistent instances. A named query is defined in a Hibernate mapping file.
意思说所 :
通过 queryName 查询数据库中的持久对象,而queyName是定义在此对象对应的hibernate的映射文件中的!
定义语法如下:

<![定义查询语句]]>

例1:findByNamedQuery(String queryName);

<![from User]]>

findByNamedQuery("all");

例2: findByNamedQuery(String queryName,Object value);

<![from User where u.name = ?]]>

findByNamedQuery("byname","tiger");

例3: findByNamedQuery(String queryName,Object values);

<![from User where u.name = ? and u.age = ?]]>

findByNamedQuery("byNameAndAge",new Object[]{"tiger",18});

HibernateTemplate 还有一个方法 :
findByNamedQueryAndNamedParam(String queryName,String[] paramNames, Object[] values)

这是映射文件就要用: 而不是?
如:

<![from User where u.name = :name and u.age = :age]]>

要根据name和age查询的话要写一个<![from User where u.name = ? and u.age = ?]]>
如果有一天我要根据name和sex来查询一个人,岂不是要再改...有没有更灵活点写法

那你就自己写个配置文件,然后自己读取它,然后再让hibernate查询嘛

比如
selectbynameandage=from User where u.name = ? and u.age = ?
selectbynameandsex=from User where u.name = ? and u.sex = ?