hibernate操作sql面试

hibernate操作sql面试

一、利用hql,但hql有局限

不支持insert;开发用createQuery

HQL中没有表和字段的概念,只有类和属性的概念,只是接近SQL对于复杂sql无能为力。

二、利用createSQLQuery操作复杂sql语句

public List<Part>listPart(int currentPage,int pageSize){

String sql="select * from part limit ?,?";

//hibernate解决复杂sql语句

SQLQuery query = session.createSQLQuery(sql);

query.setInteger(0, (currentPage-1)*pageSize);

query.setInteger(1, pageSize);

query.addEntity(Part.class);//添加实体类

List<Part>list=query.list();

return list;

}

即:hibernate 中createQuery与createSQLQuery两者区别是:

前者用的hql语句进行查询,后者可以用sql语句查询

前者以hibernate生成的Bean为对象装入list返回

后者则是以对象数组进行存储

利用createSQLQuery查询

public List<Part>listPart(int currentPage,int pageSize){

String sql="select * from part limit ?,?";

//hibernate解决复杂sql语句

SQLQuery query = session.createSQLQuery(sql);

query.setInteger(0, (currentPage-1)*pageSize);

query.setInteger(1, pageSize);

query.addEntity(Part.class);//添加实体类

List<Part>list=query.list();

return list;

}

利用createSQLQuery添加

public void insertPart2(Part part){//用原生的sql语句

Transaction beginTransaction = session.beginTransaction();

String sql="insert into Part values(null,?,?,?)";

Query query= session.createSQLQuery(sql);

query.setString(0, part.getName());

query.setString(1, part.getPwd());

query.setString(2, part.getRole());

query.executeUpdate();//执行修改或删除

beginTransaction.commit();//提交事务

session.close();

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 创建工程可以是java也可以是web 1、引入jar文件 2、设计表同时开发和表的字段名一致的javabean(持...
    蘋果_283e阅读 544评论 0 0
  • 本文包括:1、Hibernate 的查询方式2、HQL (Hibernate Query Language) 查询...
    廖少少阅读 2,688评论 0 15
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,765评论 18 399
  • 一. Java基础部分.................................................
    wy_sure阅读 3,835评论 0 11
  • Hibernate: 一个持久化框架 一个ORM框架 加载:根据特定的OID,把一个对象从数据库加载到内存中OID...
    JHMichael阅读 1,995评论 0 27