sql和hql的区别+Oracle,sql和hql的区别

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

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

在hibernate中使用原生sql查询

例如:

public User login(User user) throwsException {

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 voidmodifyUserById(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、付费专栏及课程。

余额充值