• EJB3Persistence开发手册-原生SQL查询(NativeSQL)


    EJB3 QL对原生SQL做了非常好的支持。采用原生SQL做查询结果不但可以是象SQL中的返回列值,也可以是Entity类,甚至可以是两者的混合。

    EJB3 EntityManager接口定义了多个原生SQL的产生方法。

    • public Query createNativeQuery(String sqlString);
    • public Query createNativeQuery(String sqlString, Class resultClass);
    • public Query createNativeQuery(String sqlString, String resultSetMapping);

    一个简单的SQL查询:

        
         Query query = entityManager.createNativeQuery("select o.id, o.vender as vender from OrderTable");
             
         // 集合中的每个元素是一个数组,代表一行返回列值,每一个数具有2个元素,分别是id列,vender列
         List result = query.getResultList();
         Object[] row1 = (Object[])result.get(0);
                        
         


    在原生SQL中使用参数和EJB3 QL中使用参数的方法一致,但只支持位置参数。

       
         Query query = entityManager.createNativeQuery("select o.id, o.vender as vender from OrderTable where o.id = ?1");
         query.setParameter( 1, 200 );
         
         // 集合中的每个元素是一个数组,代表一行返回列值,每一个数具有2个元素,分别是id列,vender列
         List result = query.getResultList();
         Object[] row1 = (Object[])result.get(0);
                    
         

      除了象上面例子中直接返回查询结果的列值,我们可以让EJB3 Persistence运行环境将列值直接填充入一个Entity的实例,并将实例作为结果返回。

         
        
        // 我们这里将结果定义为Entity类Order的实例
        Query query = entityManager.createNativeQuery("select o.id, o.vender, o.partId from OrderTable o order by o.amount desc",
                                                      Order.class);
        // 结果集合中是Order类的实例,但Order实例只有id, vender, partId三列对应的属性变量有值,其他的变量属性为空。
        List result = query.getResultList();
        Order order1 = (Order)result.get( 0 );
  • 相关阅读:
    极光推送
    浅谈Android的屏幕适配问题
    Git/GitHub学习第一天
    Android学习总结
    为什么现在开始写你的第一篇博客
    escape.alf.nu XSS Challenges 0-7 之一步步学XSS
    PE文件学习
    通过sqli-labs学习sql注入——基础挑战之less11-22
    通过sqli-labs学习sql注入——基础挑战之less1-10
    重学数据结构系列之——总结
  • 原文地址:https://www.cnblogs.com/tian830937/p/4942593.html
Copyright © 2020-2023  润新知