方式一:
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());
}
}