hibernate10--命名查询

2021-06-20 03:03

阅读:583

标签:oid   field   []   ram   float   getname   数组   for   检测   

技术分享
技术分享

 

 

技术分享
public class EmpTest {
    Session session =null;
    Transaction transaction=null;
    
    @Before
    public  void  before(){
         session = HibernateSessionUtil.getCurrentSession();
         transaction= session.beginTransaction();
    }
    
    
    /**
     *  命名查询:  hibernate允许我们在xml映射文件或者类中(使用注解的方式)定义字符串形式的查询语句!
     *    命名查询 可以写 hql也可以是sql语句!   程序不区分命名查询语句的类型(hql,sql),只会根据名称进行查询!
     *     getNamedQuery();  ===>得到我们实现写好的 命名查询!
     */
    @Test
    public  void  test01(){
        List list = session.getNamedQuery("fromEmp").list();
        for (Emp emp : list) {
            System.out.println(emp);
        }
    }    
    
    /**
     * 测试 sql-query查询 
     * 
     * 发现的问题?
     * 我们的sql查询语句的结果不能封装成对象  ,只能是Object数组
     */
    @Test
    public  void  test02(){
        List list = session.getNamedQuery("sqlFromEmp").list();
        for (Object[] objects : list) {
            System.out.println(objects[0]);
        }
    }    
    
    /**
     * 查询指定的一个对象的姓名    还有一个参数需要赋值
     * 返回一个Object对象
     */
    @Test
    public  void  test03(){
    String name= (String) session.getNamedQuery("selectName").setParameter("id", 1).uniqueResult();
    System.out.println(name);    
    }    
    
    /**
     * 查询指定的一个对象的姓名和薪水    还有一个参数需要赋值
     * 返回一个Object[]数组
     */
    @Test
    public  void  test04(){
        Object[] obj=  (Object[]) session.getNamedQuery("selectNameAndSal").setParameter("id", 1).uniqueResult();
        System.out.println(obj[0]);    //姓名
        System.out.println(obj[1]);    //薪水
    }    
    /**
     * 查询指定的一个对象的姓名和薪水    还有一个参数需要赋值
     * 返回一个对象  怎么做?
     * 01.在xml文件中在增加 节点
     * 02.我们在query对象返回来的时候  把结果转换成对象
     * 
     * 
     */
    @Test
    public  void  test05(){
          //获取query对象  并且给参数赋值
          Query query = session.getNamedQuery("selectNameAndSal").setParameter("id", 1);
          //把query查询出来的结果集 转换成 对象
          /**
           * 底层的代码
             * Creates a resulttransformer that will inject aliased values into 
             * instances of Class via property methods or fields.
             * 
             * public static ResultTransformer aliasToBean(Class target) {
                return new AliasToBeanResultTransformer(target);
            }
             */
            
         query.setResultTransformer(Transformers.aliasToBean(Emp.class));
         Emp emp= (Emp) query.uniqueResult();
         System.out.println(emp);
        
    }    
    
}

hibernate10--命名查询

标签:oid   field   []   ram   float   getname   数组   for   检测   

原文地址:http://www.cnblogs.com/HHR-SUN/p/7190967.html


评论


亲,登录后才可以留言!