在在Java的的Hibernate框架中使用框架中使用SQL语句的简单介绍语句的简单介绍
主要介绍了在Java的Hibernate框架中使用SQL语句的方法,Hibernate是Java的SSH三大web开发框架之一,需要
的朋友可以参考下
Hibernate中有HQL查询语法。但我们用得比较熟的还是数SQL语句,那么应该怎么来让Hibernate支持SQL呢?这个不用我们
去考虑了,Hibernate团队已经早就做好了。
废话不说,直接来例子啦。
select * from t_user usr
上面是一条SQL语句,又是废话,是个人都知道。我们想让Hibernate执行这条语句,怎么办呢?看代码:
Query query = session.createSQLQuery("select * from t_user usr");
就这样,剩下来的,大家应该都知道了,平常的查询。
那查询完之后,返回的是什么东西呢?
while(iter.hasNext()){
Object[] objs = (Object[])iter.next();
for (int i = 0; i < objs.length; i++) {
System.out.print(objs[i]);
}
System.out.println();
}
返回的每个结果都是Object[]数组,
这时又有人跑出来说面向对象啦。对,就是面向对象,唉,没办法。
我们继续看:
select {usr.*} from t_user usr
看到这里,估计某些童鞋开始鸡动啦,那个大括号什么东西啦?
别急,慢慢来。我们先继续看代码。
复制代码 代码如下:
Query query = session.createSQLQuery("select {usr.*} from t_user usr").addEntity(TUser.class);
我们看到跟前面不同的是,我们加了一个addEntity,是什么意思呢?
我们直接API,看到这样一串解释:
addEntity
SQLQuery addEntity(String tableAlias,
Class entityType)
Declare a "root" entity
Parameters:
tableAlias - The SQL table alias
entityType - The java type of the entity to add as a root
有跟没一个样,杯具。只能自己动手用用。
第一个参数是指表的别名,就像上面的语句,我们表的别名是usr,所以第一个参数为usr,而第二个是指查询到的结果需
要映射到哪个类,这里由于我们在映射文件中是通过TUser映射到t_user表,所以我们这里当然也就是TUser啦。然后一查,
有SQL语句出来,而且查到的结果是TUser类型的。
我们查到的结果是:
org.hibernate.tutorial.domain6.TUser@198cb3d
当然,你们的肯定跟我不一样的。不要鸡动。
也许我们并不需要全部进行查出,这时,我们需要的只是设定别名即可:
select u.id as {usr.id},u.name as {usr.name},u.age as {usr.age} from t_user u
我们看到我们用了as指定了字段的别名,程序中还是一样:
复制代码 代码如下:
Query query = session.createSQLQuery("select u.id as {usr.id},u.name as {usr.name},u.age as {usr.age} from t_user
u").addEntity("usr",TUser.class);
评论0
最新资源