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) 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值