关于hibernate动态设置参数的问题

问题描述

在使用hibernate的时候.我们经常需要动态的去设置条件参数.StringBuffer sql=new StringBuffer("select * from xxx t where 1=1 ");if(!StringUtils.isEmpty(filter.getCompCode())){sql.append(" and t.companyCode = :compCode ");exitsCompCode=true;}if(!StringUtils.isEmpty(filter.getCompName())){sql.append(" and p.company_chinese_name like :compName ");exitsCompName=true;}Query query = session.createSQLQuery(sql.toString())query.setParameter("compCode", filter.getCompCode());后面的query设置参数是不确定的..有可能是一个..也有可能是2个..请教大伙在这个方面是怎么处理的. 问题补充:蔡华江 写道

解决方案

设置一个存放object[]的list,在if语句中将:compName及对应的内容存进去。在拼装完成后,遍历了list,取出对应的动态参数
解决方案二:
if(!StringUtils.isEmpty(filter.getCompName())){ sql.append(" and p.company_chinese_name like :compName "); exitsCompName=true; } 首先:你这里已经 if 判读了 判断有就拼这截 没有你 过!其次:直接拼接HQL会被sql攻击这个你也不需要担心!HQL会被sql攻击 不是一般人可以做到的!直接写 sql 语句还可能! LZ 可以自己尝试下!
解决方案三:
List list = new ArrayList();StringBuffer sql=new StringBuffer("select * from xxx t where 1=1 ");if(!StringUtils.isEmpty(filter.getCompCode())){sql.append(" and t.companyCode = :compCode ");list.add(new Object[]{"compCode", filter.getCompCode()});exitsCompCode=true;}if(!StringUtils.isEmpty(filter.getCompName())){sql.append(" and p.company_chinese_name like :compName ");list.add(new Object[]{"compName ", filter.getCompCode()});exitsCompName=true;}Query query = session.createSQLQuery(sql.toString())for(Object[] arr:list){ query.setParameter(arr[0],arr[1]);}先把值保存起来,,这个。。
解决方案四:
引用StringBuffer sql=new StringBuffer("select * from xxx t where 1=1 "); if(!StringUtils.isEmpty(filter.getCompCode())){ sql.append(" and t.companyCode = :compCode "); exitsCompCode=true; } if(!StringUtils.isEmpty(filter.getCompName())){ sql.append(" and p.company_chinese_name like :compName "); exitsCompName=true; } 为什么不选择 在拼 HQL 的时候就把参数加进去了!因为你已经写好了 if 判断!
解决方案五:
把参数名称及参数值,设计成一个Map对象,然后遍历Map对象,设置所有参数及其对应的参数值。

时间: 2024-08-12 11:00:40

关于hibernate动态设置参数的问题的相关文章

自定义 amear- android自定义相机预览界面动态设置相机爆光值

问题描述 android自定义相机预览界面动态设置相机爆光值 android自定义相机预览界面动态设置相机爆光值 求高手请教:自己写了一个相机应用程序,使用SurfaceView方法自定义预览界面,可以正常预览,但是我想实现Android的系统照相机中可动态调整相机一些参数设置(例如 爆光值的增加.减小).大侠们有没有好的方法可以参考的,感谢 想实现效果如图: 解决方案 可以在SurfaceView rendered回调函数里面 用OpenGL 渲染一下,可以做到实时图像光照效果 解决方案二:

用JS动态设置CSS样式常见方法小结(推荐)_javascript技巧

用JS来动态设置CSS样式,常见的有以下几种 1. 直接设置style的属性 某些情况用这个设置 !important值无效 如果属性有'-'号,就写成驼峰的形式(如textAlign) 如果想保留 - 号,就中括号的形式 element.style['text-align'] = '100px'; element.style.height = '100px'; 2. 直接设置属性(只能用于某些属性,相关样式会自动识别) element.setAttribute('height', 100);

动态设置android:drawableLeft|Right|Top|Bottom

Android中有时需动态设置控件四周的drawble图片,这个时候就需要调用setCompoundDrawables(left, top, right,bottom),四个参数类型都是drawable Button继承TextView,所以可以采用相同的设置方法 方法一.XML方式 Drawable img_on, img_off; Resources res = getResources(); img_off = res.getDrawable(R.drawable.btn_strip_ma

vb.net泛型-怎么动态设置VB.NET的(of T)中的T值

问题描述 怎么动态设置VB.NET的(of T)中的T值 VB.Net中,可以使用function AAA(Of T)(xxx as T) As String这种形式设置参数类型.在调用的时候,如果是AAA(Of String)这种形式来调用的话,没问题,现在有需求如下有一个数组类型为Type,需要根据数组的值来调用AAA方法,并取得返回值. dim supportTypes as list(of type) supportTypes.Add(GetType(String)) supportTy

Quartz在Spring中动态设置cronExpression (spring设置动态定时任务)------转帖

什么是动态定时任务:是由客户制定生成的,服务端只知道该去执行什么任务,但任务的定时是不确定的(是由客户制定). 这样总不能修改配置文件每定制个定时任务就增加一个trigger吧,即便允许客户修改配置文件,但总需要重新启动web服务啊,研究了下Quartz在Spring中的动态定时,发现                                   0/10 ?                中cronExpression是关键,如果可以动态设置cronExpression的值,也就说如果我

easyui datagrid 动态设置url卡死

问题描述 easyui datagrid 动态设置url卡死 为什么通过改变url实现查询,js卡死 $('#tt').datagrid({ url:url }); 解决方案 你是重新生成datagrid好不..查询几次就生成几次datagrid..查询用load或者reload方法,传递查询参数就好了,不需要更改url地址 解决方案二: 传参数的我也试过也是卡死,就算是重新生成datagrid也不应该卡死啊,好奇怪啊 解决方案三: $('#tt').datagrid({url:url, que

hibernate动态查询

问题描述 到时候如果是Teacher类登录验证TeacherService也可以通过把自己的参数传进去进行用户验证是表名这里不能当做参数传递吗跪求大神publicclassUserServiceextendsBaseService{publicbooleanvalidation(Useru)throwsException{Stringcn=u.getClass().getSimpleName();returnfindByname(newObject[]{cn,"username",u.

MySQL内存及虚拟内存优化设置参数_Mysql

mysql 优化调试命令  1.mysqld --verbose --help 这个命令生成所有mysqld选项和可配置变量的列表 2.通过连接它并执行这个命令,可以看到实际上使用的变量的值: mysql> SHOW VARIABLES; 还可以通过下面的语句看到运行服务器的统计和状态指标: mysql>SHOW STATUS: 使用mysqladmin还可以获得系统变量和状态信息: shell> mysqladmin variables shell> mysqladmin ext

有关动态设置objectdatasource的问题,疑难!

问题描述 写了一个业务对象data.datatablefunction(arraylistmylist),在页面上gridview用的数据源是objectdatasource,selectmethod用的方法是function,请问如何在后台动态的给objectdatasource传入一个arraylist呢?请指教! 解决方案 解决方案二:有人知道吗?解决方案三:Mark!持续关注中--解决方案四:题意不是太清楚.你的Arraylist是从哪儿来的?从数据库直接取得DataTable,然后直接