iteye_17458 2009-06-18 13:07 采纳率: 0%
浏览 201
已采纳

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标签结合起来?
  • 写回答

3条回答 默认 最新

  • iteye_4873 2009-06-18 13:07
    关注

    [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代码中吗?那样才是缺少灵活性!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题