zoukankan      html  css  js  c++  java
  • 数据库查询

    Query query = session.getNamedQuery("getUserByName");  

    query.setParameter("name", name);  

    HibernateTemplate的常用方法简介:

    void delete(Object entity):删除指定持久化实例

    deleteAll(Collection entities):删除集合内全部持久化类实例

    find(String queryString):根据HQL查询字符串来返回实例集合

    findByNamedQuery(String queryName):根据命名查询返回实例集合

    get(Class entityClass, Serializable id):根据主键加载特定持久化类的实例

    save(Object entity):保存新的实例

    saveOrUpdate(Object entity):根据实例状态,选择保存或者更新

    update(Object entity):更新实例的状态,要求entity是持久状态

    setMaxResults(int maxResults):设置分页的大小

    Hibernate中session.createQuery()与session.createSQLQuery()的区别与使用

    两者的区别:
    Query createQuery ( String queryString)
    创建一个查询字符串中给定的HQL 查询新的实例。
    参数:HQL查询
    返回值:Query查询
    抛出异常:HibernateException

    SQLQuery createSQLQuery ( String queryString)
    创建一个新的查询字符串给定的SQL实例SQLQuery的。
    参数:SQL查询
    返回值:SQLQuery
    抛出异常:HibernateException

    简单来说,createQuery使用hql语句进行查询,以Hibernate生成的Bean为对象,并将对象装入List中返回。
    createSQLQuery使用sql语句进行查询,是以对象数组形式返回。

    createSQLQuery使用情况:

    1:

    SQLQuery query = session.createSQLQuery(sql)
    .addScalar("XXXX",StandardBasicTypes.DATE)
    .addScalar("XXXX",StandardBasicTypes.STRING)
    .addScalar("XXXX",StandardBasicTypes.INTEGER)
    .addScalar("XXXX",StandardBasicTypes.LONG)

    .setInteger("XXXX", int)
    .setDate("XXXX", date)
    .setDouble("XXXX",double)

    .setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);


    addScalar是为sql语句中要查询的字段设置类型。
    setInteger,setDate,setDouble是为sql语句中由程序输入的判断条件赋值。
    Transformers.ALIAS_TO_ENTITY_MAP是将最终查出结果设置为Map格式。


    2:
    Query query = session.createSQLQuery(sql)
    .addScalar("XXXX",StandardBasicTypes.DATE)
    .addScalar("XXXX",StandardBasicTypes.STRING)
    .addScalar("XXXX",StandardBasicTypes.INTEGER)
    .addScalar("XXXX",StandardBasicTypes.LONG)

    .setInteger("XXXX", int)
    .setDate("XXXX", date)
    .setDouble("XXXX",double)

    .setResultTransformer(Transformers.aliasToBean(XXXX.class));
    Transformers.aliasToBean(XXXX.class)是将最终查询的结果转化成自定义或者Hibernate生成的Bean实体类的对象。


    3:

    Query query = session.createSQLQuery(sql).addEntity(XXXX.class); 
    XXXX 代表以hibernate生成的Bean的对象,也就是数据表映射出的Bean。

    hibernateTemplate的findByNamedQuery方法的使用


    findByNamedQuery有三个重载方法: 
    findByNamedQuery(String queryName); 
    findByNamedQuery(String queryName,Object value); 
    findByNamedQuery(String queryName,Object[] values); 

    通过 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});

  • 相关阅读:
    [易学原创作品]QQ/MSN实现原理: C# UDP穿越NAT,UDP打洞,UDP Hole Punching,P2P
    工作流设计
    jquery 固定行列可编辑表格jfixed
    oracle 数据库实体生成工具
    c#做的查看sybase数据库表
    简单实用ORM框架
    Js 弹出框 返回值的两种常用方法
    数据结构 Jimmy
    js中的对象方法中this指向问题
    js中构造函数中this指向问题
  • 原文地址:https://www.cnblogs.com/wuxu/p/10557347.html
Copyright © 2011-2022 走看看