hibernate数据库操作基础

1.根据主键查询

2.getSession().createSQLQuery(sql)和session.createQuery(sql)

3.Seeion的其他方法 

4.Hibernate Criteria用法大全

1.根据主键查询

session.load(Role.class, "33")

session.get(Role.class, "33")

get 和 load 方法的区别:详见:https://www.cnblogs.com/lukelook/p/9684782.html

2.getSession().createSQLQuery(sql)和session.createQuery(sql)

前者用的是SQL语句,后者用的HQL语句。

1)getSession().createSQLQuery(sql)

 

标量查询

 

最基本的 SQL 查询是从一个或多个列表中获取一个标量(值)列表。以下是使用原生 SQL 进行获取标量的值的语法:

 

@Override
    public List<Role> getAllRoles() {
        // TODO Auto-generated method stub
        List<Role> roles = null;        
        String sql = "SELECT * FROM tbl_role where Role_Server = ? ";
        Query query = sessionFactory.getCurrentSession().createSQLQuery(sql);
        query.setString(0, "一梦十年");//参数从0开始
        roles = query.list();        
        return roles;
    }

 

实体查询

 

以上的查询都是关于返回标量值的查询,只是基础性地返回结果集中的“原始”值。以下是从原生 SQL 查询中通过 addEntity() 方法获取实体对象整体的语法:

String sql = "SELECT * FROM EMPLOYEE";
SQLQuery query = session.createSQLQuery(sql);
query.addEntity(Employee.class);
List results = query.list(); 

指定 SQL 查询

以下是从原生 SQL 查询中通过 addEntity() 方法和使用指定 SQL 查询来获取实体对象整体的语法:

String sql = "SELECT * FROM EMPLOYEE WHERE id = :employee_id";
SQLQuery query = session.createSQLQuery(sql);
query.addEntity(Employee.class);
query.setParameter("employee_id", 10);
List results = query.list();  

 

 

2)session.createQuery(sql)

HQL详见:https://www.cnblogs.com/lukelook/p/9686919.html

@Override
    public List<Role> getAllRoles() {
        // TODO Auto-generated method stub
        List<Role> roles = null;        
        String sql = "FROM Role r where r.roleServer = ?0 ";
        Query query = sessionFactory.getCurrentSession().createQuery(sql);
        query.setString("0", "一梦十年");
        roles = query.list();        
        return roles;
    }

 注意:在hibernate4.0之后对?占位符做了处理,可以用命名参数的方式=:catalog或者JPA占位符方式 =?1 

@Override
    public List<Role> getAllRoles() {
        // TODO Auto-generated method stub
        List<Role> roles = null;        
        String sql = "FROM Role r where r.roleServer = :roleServer ";
        Query query = sessionFactory.getCurrentSession().createQuery(sql);
        query.setString("roleServer", "一梦十年");
        roles = query.list();        
        return roles;
    } 

Hibernate 的 HQL 查询功能支持命名参数。这使得 HQL 查询功能既能接受来自用户的简单输入,又无需防御 SQL 注入攻击。

3.Seeion的其他方法 

     3.1 Session的load()与get()方法 

  3.2 Session的save()方法 

  3.3 Session的update()方法persist() 

  3.4 Session的update()方法 

  3.5 Session的saveOrUpdate()方法 

  3.6 Session的delete()方法 

  3.7 Session的merge()方法 

  3.8 Session的replicate()方法 

  3.9 Session的flush()方法 

  3.10 Session的refresh()方法

详见:Hibernate Session 用法详解https://www.cnblogs.com/lukelook/p/9692344.html

 4.Hibernate Criteria用法大全

https://www.cnblogs.com/lukelook/p/9692429.html

转载于:https://www.cnblogs.com/lukelook/p/9686713.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值