zoukankan      html  css  js  c++  java
  • sql和hql的区别

    转自:https://blog.csdn.net/lxf512666/article/details/52820368

    hql是面向对象查询,格式:from + 类名 + 类对象 + where + 对象的属性

    sql是面向数据库表查询,格式:from + 表名 + where + 表中字段

    在hibernate中使用原生sql查询

    例如:

    public User login(User user) throws Exception {
        String sql = "select id,name,password,phone,address,email,regDate"
                + " from user as u where u.name = ? and u.password = ?";
        Session session = sessionFactory.openSession();
        SQLQuery sqlQuery = session.createSQLQuery(sql);
        sqlQuery.setString(0, user.getName());
        sqlQuery.setString(1, user.getPassword());
        sqlQuery.addEntity(User.class);
        Object obj = sqlQuery.uniqueResult();
        session.close();
        if (obj == null)
            return null;
        return (User) obj;
    }

    在hibernate中使用hql查询

    例如:

    public void modifyUserById(User user) {
        Session session =
                HibernateSessionFactory.getSession();
        Transaction transaction =
                session.beginTransaction();
        String hql = "update User as u set u.userName = ?  
    ,u.passWord = ? ,u.sex = ? where u.id = ? ";
    
        Query query = session.createQuery(hql);
        query.setCacheable(false);
    
        query.setString(0, user.getUserName());
        query.setString(1, user.getPassWord());
        query.setString(2, user.getSex());
        query.setString(3, user.getId());
    
        System.out.println("执行了啊" + user.getUserName() +
                user.getId());
    
        query.executeUpdate();
        transaction.commit();
        session.flush();
        session.close();
    }

    注意:在hibernate中占位符“?”填充参数下表从 0开始。

    JDBC填充时占位符从1开始。

    hibernate中给参数起别名方法填充 
    List users = session.createQuery(“select u.id, u.name 
    from User u where u.name 
    like :myname and u.id=:myid”).setParameter(“myname”, “%张%”).setParameter(“myid”, 1) .list();

    定义命名参数固定格式: :+参数名称(即:myid ),赋值时,直接写参数名即可: setParameter(“myid”, 1) 

  • 相关阅读:
    LAMP课程(3)
    LAMP课程
    vim文本编辑
    mysql常用语句
    mysql双机互相备份
    Java NIO
    适配器模式
    对象的序列化与反序列化
    字符流
    Java Socket
  • 原文地址:https://www.cnblogs.com/yadongliang/p/9658242.html
Copyright © 2011-2022 走看看