使用Query进行HQL语句查询和SQL语句查询
2016-04-28 17:06
549 查看
HQL的语法比较简单,与普通SQL的区别之处是针对对象的不同,在查询语句中将sql中的表名替换成了sql中的持久化类名,因为hibernate机制是基于对象进行查询的。
不带参数的查询,语句是“from POJO”的形式,其中POJO即为持久化类名称
带参数的查询
接口Query提供了对命名参数、JDBC风格的(?)两种参数的绑定方法。
命名参数在查询字符串中是形如name的标识符。
命名参数的优点:
1、命名参数与其在查询串中出现的顺序无关。
2、它们可在同一查询串中多次出现。
3、它们本身是自我说明的。
命名参数的使用格式是 :username /* username这里泛指命名参数名 */
赋值采用: Query的setXXX()f方法。
hibernate使用问号参数时与JDBC不同,hibernate对参数从0开始计数。JDBC应该是从0开始的
在HQL语句中可以设置多个问号参数,之后按照"0、1、2、3...”的序号形式来设置各个参数的值。
取读query中的值:
1、将query中的值转换成list然后进行后面的操作
query.list()方法。
demo:
View Code
不带参数的查询,语句是“from POJO”的形式,其中POJO即为持久化类名称
Query query=session.createQuery("from User");
带参数的查询
接口Query提供了对命名参数、JDBC风格的(?)两种参数的绑定方法。
命名参数在查询字符串中是形如name的标识符。
命名参数的优点:
1、命名参数与其在查询串中出现的顺序无关。
2、它们可在同一查询串中多次出现。
3、它们本身是自我说明的。
命名参数的使用格式是 :username /* username这里泛指命名参数名 */
赋值采用: Query的setXXX()f方法。
/* 这是使用一个命名参数username,然后给命名参数设置值为“admin”的例子*/ Query query=session.createQuery("from User where username=:username"); query.setString("username","admin");
/* 使用集合类型的命名参数的例子 */ List names=new ArrayList(); names.add("admin"); names.add("test"); Query query=session.createQuery("from User where username in (:nameList)"); query.setParameterList("nameList",names);
hibernate使用问号参数时与JDBC不同,hibernate对参数从0开始计数。JDBC应该是从0开始的
Query query=session.createQuery("from User where username=?"); query.setString(0,"admin");
在HQL语句中可以设置多个问号参数,之后按照"0、1、2、3...”的序号形式来设置各个参数的值。
取读query中的值:
1、将query中的值转换成list然后进行后面的操作
query.list()方法。
demo:
public static void main(String[] args){ String sql="select * from student where age=:age and name=:name"; Session session=HibernateSessionFactory.getSession(); SQLQuery sqlquery=session.createSQLQuery(sql).addEntity(Student.class); sqlquery.setString("name", "guozhen"); sqlquery.setInteger("age", 21); List<Student> s=sqlquery.list(); Student stu=s.get(0); System.out.println(stu.getName()+"\t"+stu.getAge()+"\t"+stu.getId()+"\t"+stu.getTelephone()+"\t"+stu.getTelephone()); }
View Code
相关文章推荐
- UIImageView 浅析
- iOS之UI学习-UILabel
- arm交叉编译器gnueabi、none-eabi、arm-eabi、gnueabihf、gnueabi区别
- (提交音频太快导致崩溃)应该是SubmitSourceBuffer允许的最大buffer值XAUDIO2_MAX_QUEUED_BUFFERS的限制
- Android蓝牙4.0API-类-BluetoothHealth
- ant构建web项目build脚本
- iOS 代码实现获得应用的版本号(Version/Build)
- The current request is not a multipart request
- HDU-4192 Guess the Numbers 表达式求值
- Android消息机制:Looper,MessageQueue,Message与handler
- 引用.c 文件 Xcode出现 Could not build module 'Foundation'的错误
- Android Volley完全解析(三),定制自己的Request
- getRequestDispatcher()与sendRedirect()的区别
- UIView的放大动画
- bug日志(1):UIAlertView消失之后收起的键盘又弹出
- 5_7 丑数(UVa136)<priority_queue的使用>
- contentValues HashTable 的理解
- 使用百度的富文本编辑器UEditor遇到的问题总结
- UEFI模式下安装Windows 10、Ubuntu 16.04 LTS双系统教程
- hdoj--3530 Subsequence(单调队列)