Hibernate的检索方式(3)sql

方式一:

Query query = session.createSQLQuery(“select o.name from CUSTOMERS c where c.name=‘tom’”);

query.list();

方式二:参数查询

Query query =session.createSQLQuery(“select * from CUSTOMERS c where c.name=?”);

query.setString(“0”,’tom’)

query.list();

此时返回Object数组或者是返回一个Object对象(这里如果查询结果是1个值,就是Object对象,如果查询结果是多个值就是Object数组

 

方式三:Sql语句封装对象

SQLQuery sqlquery = session.createSQLQuery("select {c.*} from CUSTOMERS c where c.name =:customerName");

// 动态绑定参数

sqlquery.setString("customerName", “tom");

//“c”用来引用数据表的别名,例如以上代码中{c.*}表示使用c来作为customers表别名。  把sql查询返回的关系数据映射为对象

sqlquery.addEntity("c", Customer.class);

// 执行sql select语句,返回查询结果。

List list = sqlquery.list();

1)条件查询

Query query = s.createSQLQuery("select * from m_customer o where o.name='Tom'");

List<Object[]> list = query.list();

if(list!=null && list.size()>0){

for(Object[] o:list){

System.out.println(o[0].toString()+"   "+o[1].toString()+"     "+o[2].toString());

}

}

此时返回Object数组或者是返回一个Object对象

* 如果条件查询只有1个字段的时候,此时是一个Object对象

* 如果条件查询有多个字段的时候,此时是一个Object数组

2)参数查询

方式一:

Query query = s.createSQLQuery("select * from m_customer o where o.name=:customer");

query.setParameter("customer", "Tom");

List<Object[]> list = query.list();

if(list!=null && list.size()>0){

for(Object[] o:list){

System.out.println(o[0].toString()+"   "+o[1].toString()+"     "+o[2].toString());

}

}

方式二:

Query query = s.createSQLQuery("select * from m_customer o where o.name=?");

query.setParameter(0, "Tom");//0表示?号第1个位置

List<Object[]> list = query.list();

if(list!=null && list.size()>0){

for(Object[] o:list){

System.out.println(o[0].toString()+"   "+o[1].toString()+"     "+o[2].toString());

}

}

 

3)封装实体

//封装对象实体

SQLQuery query = s.createSQLQuery("select {o.*} from m_customer o where o.name=?");

query.setParameter(0, "Tom");//0表示?号第1个位置

query.addEntity("o", Customer.class);

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

if(list!=null && list.size()>0){

for(Customer c:list){

System.out.println(c.getName()+"   "+c.getAge());

}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值