------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------

本篇博客会讲解Hibernate中的参数绑定,就是相当于sql语句中的where后面的条件

一,讲解概述:

  1.通过下标的方式绑定参数

  2.通过自定义参数名的方式绑定参数(多用于多表操作)

  3.通过传入自定义对象的方式绑定参数(多用于单表操作)

  4.通过类似智能标签的方式绑定参数(多用于带条件的多表操作)

二,通过下标的方式绑定参数

    @Test
/*通过下标的方式指定参数*/
public void t01Parameterbyunderid(){
/*模拟前台输入参数*/
Teacher teacher=new Teacher("a",400.00); /*hql语句*/
String hql="from Teacher where address=? and sal>?";
Query query = session.createQuery(hql);
/*赋值*/
query.setParameter(0,teacher.getAddress());
query.setParameter(1,teacher.getSal());
/*查询*/
List list = query.list();
/*遍历*/
for (Object t:list) {
System.out.println(t);
} }

三,通过自定义参数名的方式绑定参数(多用于多表操作)

    @Test
/*通过自定义参数名的方式指定参数*/
public void t02Parameterbymyselfkey(){
/*模拟前台输入参数*/
Teacher teacher=new Teacher("a",400.00); /*hql语句*/
String hql="from Teacher where address=:teaAdd and sal>:teasal";
Query query = session.createQuery(hql);
/*赋值*/
query.setParameter("teaAdd",teacher.getAddress());
query.setParameter("teasal",teacher.getSal());
/*查询*/
List list = query.list();
/*遍历*/
for (Object t:list) {
System.out.println(t);
} }

四,通过传入自定义对象的方式绑定参数(多用于单表操作)

    @Test
/*通过自定义对象的方式指定参数*/
/*适合单表操作*/
public void t03ParameterbymyselfObject(){
/*模拟前台输入参数*/
Teacher teacher=new Teacher("a",400.00); /*hql语句*/
String hql="from Teacher where address=:address and sal>:sal";
Query query = session.createQuery(hql);
/*赋值*/
query.setProperties(teacher);
/*查询*/
List list = query.list();
/*遍历*/
for (Object t:list) {
System.out.println(t);
} }

五,通过类似智能标签的方式绑定参数(多用于带条件的多表操作)

    @Test
/*通过自定义参数名的方式指定动态参数*/
/*适合多表操作*/
public void t04ParameterbyDongtai(){
/*模拟前台输入参数*/
Teacher teacher=new Teacher("a",400.00); /*hql语句*/
StringBuffer hql=new StringBuffer("from Teacher where 1=1 "); if(teacher.getAddress()!=null){
hql.append("and address=:teaAdd ");
}
if(teacher.getSal()>0){
hql.append("and sal>:teasal ");
} Query query = session.createQuery(hql.toString());
/*赋值*/
query.setParameter("teaAdd",teacher.getAddress());
query.setParameter("teasal",teacher.getSal());
/*查询*/
List list = query.list();
/*遍历*/
for (Object t:list) {
System.out.println(t);
} }

最新文章

  1. CFURLCreateStringByAddingPercentEscapes与CFURLCreateStringByReplacingPercentEscapesUsingEncoding
  2. mysqldump 备份命令使用中的一些经验总结
  3. js中的preventDefault与stopPropagation详解
  4. jquery获取文本框的内容
  5. Css Study - 横向MENU
  6. HDU-1159 Common Subsequence 最长上升子序列
  7. iOS开发之总结
  8. 非常陌生的cmake
  9. SQL的update from 理解
  10. Codeforces 353D Queue(构造法)
  11. ftp的主动模式(port)与被动模式(PASV) (转)
  12. .NET CORE——Console中使用依赖注入
  13. Error creating document instance. Cause: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; 前言中不允许有内容。
  14. package.json 里的 dependencies和devDependencies区别
  15. python中关于变量名失效的案例
  16. Springboot 前后端数据传输 常见误区
  17. <20180927>新开一篇章记录常用到的IT名词
  18. LeetCode 771 Jewels and Stones 解题报告
  19. PCL深度图像(2)
  20. leetcode566. Reshape the Matrix

热门文章

  1. codeforces 597C - Subsequences
  2. 【BZOJ4766】文艺计算姬(prufer序列)
  3. httpServeltRequest和Model传值的区别
  4. ubuntu应用商店打不开怎么办
  5. qbxt Day1 测试犯傻祭祀
  6. 【洛谷P4124】[CQOI2016]手机号码
  7. ubuntu开启ssh连接
  8. IOS NSNotification 通知
  9. Mac iOS 允许从任何来源下载应用并打开
  10. window.location.href url含中文乱码问题