这种查询条件的SQL语句该怎么写?

字段ipd,ipds(int类型),ipde(int类型)

网段ipd:192.168.1

起始地址ipds:100

结束地址ipde:150

这样可以得到数据192.168.1.100-150

当再添加一段地址范围时,需要查询判断新添加的地址范围是否包含已存在的地址范围

比如查询条件ipd:192.168.1,ipds:151,ipde:200

sql查询语句该怎么写才能判断151-200是否包含了100-150中的任意数字?

比如参数:ipd:192.168.1,ipds:90,ipde:200
90 - 200 和 已存在的100-150 重叠,这样就能查到结果
同理如果参数是 110 -160 同样和也 100-150有重叠,这样也要能查到结果

我的目的是: 如果和已存在的ipds-ipde范围有重叠就能查到记录,没重叠就查不到记录

麻烦大家了,一起帮想想,谢谢

2个回答

select * from table where ipad = 192.168.1 and ipds >= 151 and ipde <= 200, 只要查不到就可以了啊

txqq2005
txqq2005 151-200我只是举个例子,如果参数是110-200,这种写法是没用的,一样查不到结果
2 年多之前 回复

思想:151-200不与100-150相交,并不包含100-150,则肯定不会出现俩范围重叠的情况
SELECT
*
FROM
TABLE
WHERE
ipad = 192.168.1
AND (
(151 BETWEEN ipds AND ipde)
OR (200 NOT BETWEEN ipds AND ipde)
OR (151 < ipds AND 200 > ipde)

xingnima07
xingnima07 回复txqq2005: 把OR (200 NOT BETWEEN ipds AND ipde)中的NOT去掉,之前手误了
2 年多之前 回复
txqq2005
txqq2005 你好,你的写法不管参数如何改变,不管重叠或没重叠,都查不到结果
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
java对象属性的默认值影响sql查询语句的拼接,该如何处理。
1、问题描述: 想做一个通用的sql查询语句,通过传入对象的属性赋值情况,拼接查询语句。比如Admin类,有int id,String name,int age,boolean isLeader 4个属性,如果给Admin的对象的某几个属性赋值,比如:setAge(32);setName(“张”)。那么语句拼接为select * from admin where age=32 and name like '%张%'。我在拼接时本来想通过属性是否为null,或者是否为空字符来判断是否作为查询条件,但是由于默认值的存在,导致拼接错误。 2、代码 ``` /*** * 约定: * 1、类名与表名对应,表名全小写。 * 2、类属性与列名一致。 * 3、ID列的类属性和列名为=表名(第一个字母小写)+“Id” * * 4、暂不支持联表查询。 *类名:BaseDao * ***/ public <T> List<T> query(T t) throws IllegalArgumentException, IllegalAccessException, SQLException{ StringBuilder sql=new StringBuilder(); StringBuilder whereString=new StringBuilder(); List<Object> parameters=new ArrayList<Object>(); Class clazz=t.getClass(); //获取类名 String classSimpleName=clazz.getSimpleName(); //获取表名 String tableName=classSimpleName.toLowerCase(); //拼接select语句前半部分 sql.append("select * from "+tableName); //获取所有类属性 Field[] fields=clazz.getDeclaredFields(); //遍历所有属性 for(Field field:fields) { field.setAccessible(true); //得到属性值 Object fieldValue=field.get(t); if(fieldValue!=null) { //如果属性值不为null,获取属性名(字段名)。 String fieldName=field.getName(); //判断是否为String类型 if(fieldValue instanceof String) { // 如果是String,判断是否为空字符 if(!("".equals(((String)fieldValue).trim()))) { //不是空字符串,作为where条件,并将参数加入列表。 whereString.append(fieldName+" like ? and "); parameters.add("%"+(String)fieldValue+"%"); } }else if("Integer".equals(fieldValue.getClass().getSimpleName())){ /***判断是否为int,如果int>0,认为参数有效---这个也是为了处理默认值为0的情况,想的办法,但是有时候表里面字段值可能<=0,所以我觉得处理得不**好*/ if((int)fieldValue>0) { whereString.append(fieldName+"=? and "); parameters.add(fieldValue); } }else{ /*其他情况直接作为where查询条件,但是运行发现boolean值默认false,也会直接当成是有效条件,影响条件设置*/ whereString.append(fieldName+"=? and "); parameters.add(fieldValue); } } } //判断是否有有效条件,有的话拼接where语句。 if(parameters.size()>0) { whereString.delete(whereString.length()-5, whereString.length()-1); sql.append(" where "); sql.append(whereString); } System.out.println(sql.toString()); System.out.println(parameters); //连接数据库,查询。 QueryRunner qr=JdbcPool.getQueryRunner(); // return null; return qr.query(sql.toString(), new BeanListHandler<T>(clazz), parameters.toArray()); } ``` 3、测试代码 ``` @Test public void BaseDao() throws Exception, IllegalAccessException { IpAddress ipObj=new IpAddress(); //只设置了一个条件。 ipObj.setIpAddress("192.168.1"); BaseDao bd=new BaseDao(); List<IpAddress> list=bd.query(ipObj); for(IpAddress ip:list) { System.out.println(ip); } System.out.println(list.size()); } ``` 4、结果 ``` //在只设置了一个条件的情况下,拼接出两个查询条件。 select * from ipaddress where ipAddress like ? and isReachable=? [%192.168.1%, false] ``` 5、问题: 请问如何处理这种由于对象基本类型默认值,导致的拼接错误的问题?
带条件判断的Sql语句在Mybatis mapper里转换的问题
写了一条带条件判断的数据库语句例如: SELECT if((a-b)<=0,0,(a-b)) as c from xxx 意思就是我想判断select a-b as c from xxxx,如果a-b<=0,c=0,如果a-b>0,就c=a-b 这种在mapper里怎么写啊是用<when><otherwise>标签在select后面直接写么?
存储过程不让拼接SQL语句
公司DBA不允许创建的存储过程中有拼接SQL语句的行为,请问,该怎么解决?说是这样做有风险,说我非要用的话,可以签一份风险协议,出了问题我负责之类的。请问:各位在多条件查询这种情况下,存储过程都是怎么写的?有不拼接又省事的办法吗?另外,这个风险难道微软没有提供解决方案吗?
一个关于sql语句的问题
现在有两个表,A表和B表,A表左连接于B表并且根据B表一个字段筛选一部分数据,此时B表被取别名为b1,得到的结果显示在最终表的一个列中,假设这个列叫做b1。紧接着再次左连接,再根据相同字段筛选,但是这次筛选条件不同了,此时B表取别名为b2,得到的结果列假设叫b2,也显示在最终表中,并且和之前的b1是两个不同的列。这种情况的sql语句有没有办法组合起来,难道只能写重复代码进行两次左连接吗?
关于SQL server查询语句的问题
各位大神,小弟有个很着急的问题求帮忙!目前,我的数据库有一张表,表名就叫A表吧!里面的其中俩个字段是这样的,字段A1,数据Pan Jia Zhuang为这种形式,字段A2,数据也是这种形式的Pan Jia Zhuang;现在我要根据这俩个字段进行查询,条件是,输入这种形式的Pan Jia Zhuang数据能够查询出来相对应的值,然后希望当输入 PanJia Zhuang或者Pan JiaZhuang或者PanJiaZhuang此类中间少空格的值,也能够查询出来对应的正确结果,请问有什么解决办法吗?表A中的数据形式是不能够改变的
sql根据条件查询不同信息的问题
我的需求如下: 现在有一个表TableTest 字段分别有A,B,C,D,E,F,G,H,I 我想获得数据集的记录条数,或者多列的结果集,伪代码如下: 存储过程 SP_Test 参数 @OnlyShowCount int, @ACode Select if(@OnlyShowCount = 1) Count(1) else A,B,C,D,E,F,G From TableTest Where 一些条件(如A=@ACode) 一 我想要的两种结果分别是: 1.Select Count(1) As Count From TableTest; 2.Select A,B,C,D,E,F,G,H,I From TableTest; 存储过程要根据参数条件得到其中一个结果。 一 一 有没有可能有实现如此需求的sql , 求解答; 因为不想写两个存储过程分别实现Get Count 和 Get 多列的数据集,其实里面的语句涉及的表和条件逻辑都是一样的。 上面的表只是举例,我实际运用中还会join其他表和加很多筛选条件的, 所以不是这种分开的: 一 if(@OnlyShowCount = 1) begin Select Count(1) As Count From TableTest where 条件 end else begin Select A,B,C,D,E,F,G,H,I From TableTest where 条件 end 一 也不是动态sql; 我知道动态sql可以实现,但是,动态sql维护起来太费劲。 对了,有没有人知道动态sql的维护有什么好的方法,比如说转义工具等等的。。。
mybatis如何实现多条件的in批量删除。
这个是但条件查询。 ![图片说明](https://img-ask.csdn.net/upload/201711/10/1510274283_677558.jpg) 但是我想做到的是这种的sql语句。应该怎样传递参数,如何写。 ![图片说明](https://img-ask.csdn.net/upload/201711/10/1510274343_272978.jpg)
sql 视图与直接查询的效率那个快 视图第二次查询速度与第一次查询速度是否有差别 等等
先说一下问这个问题的原因 刚接触数据库不到一年 视图这里疑问多多 跪求大牛讲解 问题如下 1 . 在同等查询语句的情况下视图的查询速度快 还是 效率一样 2. 一个视图在同等查询条件下 第一次查询的速度与第二次查询的速度是否有区别 3.一个索引视图与一个普通视图在不做其他运算的情况下 即select * from 视图 这种情况 效率是否有区别
C#.NET平台中aspx页面gridview控件内动态条件查询
如果在cs内写好条件再放入gridview控件,就好办了。可惜的是我用的是aspx里面的控件编辑列,并且读出来的方式是:SelectCommand="SELECT * FROM [表]",我想要实现的是在[表]后面加上where 列 like TextBox1.text,触发条件是一个按钮Button1,但是我发现SelectCommand这种方法在刷新页面的时候就SELECT数据了,没法把TextBox1.text里面的数据通过按钮提交啊。 我能想到的方法,但是不会实现,请大神指教 解决办法1:提交按钮Button1时,对应后台cs文件内 Button1-Click获取TextBox1.text,传递到aspx页面中,接着刷新页面执行SELECT 。问题是怎么从后台传递到页面中? 解决办法2:提交按钮Button1时,触发js脚本,通过js代码把TextBox1.text里面的值传递到SelectCommand的SQL语句中。可惜我不会写,怎么写呢?
hibernate的findByExample()查询不支持关联属性的问题
hibernate的findByExample(XX)方法查询,如果XX中有关联的别的实体类的对象,此方法会忽略。那么有没有其它的方法可以实现类似findByExample这种以实体类对象为参数,并且又可以支持关联对象属性的?请赐教! [b]问题补充:[/b] 可能是我说的不够清楚,我的意思是XX作为参数传入findByExample时,也就是说作为查询条件,findByExample会忽略XX中关联的实体类属性中的值。例如: 实体类A有3个属性:String id;String name;B b; 实体类B有3个属性:String id;String name;Set<A> as; 然后有一个A的实例a:name="a",b=B:{id,"b",as} 那么调用findByExample(a),生成的sql语句的条件语句为"where a.name=? "而不是"where a.name=? and b.name=?",这样的话A中的属性b就没产生作用。 所以找一个可以让b也在查询条件中的方式。
在查询结果列中添加rownum列,查询出的条数增多
sql语句结构 select rownum as tempNum, ..... from (select ..... where.... order by AD.detailaddressstr, CUSTOMEREN.CUSTOMERADDRSTR) temp where (case when ... then ...else end); 如果查询结果列中有rownum,查询出的数据会比不添加rownum的结果列多出很多。 Oracle的版本时10.2.0.1.0. 在某个库里出现了这种情况 这是where后面的条件 where (case when 1 is null then 'x' else (case when 1 = 0 and temp.number0 = 0 and 0 = 2 then 'x' when 1 = 1 and temp.number1 > 0 and 1 = 2 then 'x' when 1 = 1 and temp.number2 > 0 and 2 = 2 then 'x' else 'y' end) end) temp.number是最外层查询出来的结果列,在有rownom时,发现where后只有temp.number>0时条数是对的,加上temp.number=0就出现条数多。 但是把rownum去掉,查询上面的语句条数就正常。 where (case when 1 is null then 'x' else (case when 1 = 1 and temp.number1 > 0 and 1 = 2 then 'x' when 1 = 1 and temp.number2 > 0 and 2 = 2 then 'x' else 'y' end) end) 这样条数是对的。
使用sql的分组函数之后,怎样在被分组的数据每个分类的底下加一列小计?
问题描述: 如图: ![图片说明](https://img-ask.csdn.net/upload/201706/22/1498125580_752111.png) 现在分组条件是按照sheet_bmmc分组,分组后效果如上图,但是跟我想要的效果还是有点差异,想要实现后的效果如下图: ![图片说明](https://img-ask.csdn.net/upload/201706/22/1498125592_610887.png) 在所有的分类底下加入小计,sql语句能实现这种效果吗?
SQL中,添加一个条件后,执行效率瞬间下降,怎么优化
此SQL语句为查询数据库中,当前月,前一月,前两月数据,但是where中加了一个条件后,查找时间从2秒延长至50秒左右,请问造成这种状况的原因是什么?以及有什么优化方法? SELECT TR.RC_NO, TR.FEE_TYPE, TR.FISCAL_PERIOD,--月份 MIN (DATE_START) CUR_DATE_START, MAX (DATE_END) CUR_DATE_END, CONVERT(VARCHAR(30),CAST(SUM(ISNULL(FEE_ACTUAL,0))/ 10000 AS decimal(18,2)),1) AS CUR_FEE_ACTUAL, replace(SUBSTRING ( CAST (DATEADD(m ,- 1, CAST (TR.FISCAL_PERIOD + '01' AS DATE)) AS VARCHAR),1,7),'-','') AS PRE_FISCAL_PERIOD, PRE.PRE_DATE_START, PRE.PRE_DATE_END, PRE.PRE_FEE_ACTUAL, replace(SUBSTRING ( CAST (dateadd(m ,- 2, CAST (TR.FISCAL_PERIOD + '01' AS DATE)) AS VARCHAR),1,7),'-','') AS BEF_FISCAL_PERIOD, BEF.BEF_DATE_START, BEF.BEF_DATE_END, BEF.BEF_FEE_ACTUAL FROM T_AP_PAYMENT_REQUEST TR LEFT JOIN ( SELECT TP.RC_NO,TP.FEE_TYPE, TP.FISCAL_PERIOD, MIN (DATE_START) PRE_DATE_START, MAX (DATE_END) PRE_DATE_END, CONVERT(VARCHAR(30),CAST(SUM(ISNULL(FEE_ACTUAL,0))/ 10000 AS decimal(18,2)),1) AS PRE_FEE_ACTUAL FROM T_AP_PAYMENT_REQUEST TP WHERE IS_DELETE = '0' AND IS_AUTO_PAY = 'D00002' AND ISNULL(IS_FIRST_PAY, '') != 'D00002' AND PR_STATUS != 'L04301' GROUP BY TP.RC_NO, TP.FEE_TYPE, TP.FISCAL_PERIOD ) PRE ON PRE.RC_NO = TR.RC_NO AND PRE.FEE_TYPE=TR.FEE_TYPE LEFT JOIN ( SELECT TA.RC_NO,TA.FEE_TYPE, TA.FISCAL_PERIOD, MIN (DATE_START) BEF_DATE_START, MAX (DATE_END) BEF_DATE_END, CONVERT(VARCHAR(30),CAST(SUM(ISNULL(FEE_ACTUAL,0))/ 10000 AS decimal(18,2)),1) AS BEF_FEE_ACTUAL FROM T_AP_PAYMENT_REQUEST TA WHERE IS_DELETE = '0' AND IS_AUTO_PAY = 'D00002' AND ISNULL(IS_FIRST_PAY, '') != 'D00002' AND PR_STATUS != 'L04301' GROUP BY TA.RC_NO, TA.FEE_TYPE, TA.FISCAL_PERIOD ) BEF ON BEF.RC_NO = TR.RC_NO AND BEF.FEE_TYPE=TR.FEE_TYPE WHERE TR.FISCAL_PERIOD='201701' --此语句为添加的条件 AND PRE.FISCAL_PERIOD = replace(SUBSTRING (CAST (dateadd(m ,- 1,CAST (TR.FISCAL_PERIOD + '01' AS DATE)) AS VARCHAR),1,7),'-','') AND BEF.FISCAL_PERIOD = replace(SUBSTRING (CAST (dateadd(m ,- 2,CAST (TR.FISCAL_PERIOD + '01' AS DATE)) AS VARCHAR),1,7),'-','') AND TR.IS_DELETE = '0' AND TR.IS_AUTO_PAY = 'D00002' AND ISNULL(TR.IS_FIRST_PAY, '') != 'D00002' AND TR.PR_STATUS != 'L04301' GROUP BY TR.RC_NO, TR.FEE_TYPE, TR.FISCAL_PERIOD, PRE.PRE_DATE_START, PRE.PRE_DATE_END, PRE.PRE_FEE_ACTUAL, BEF.BEF_DATE_START, BEF.BEF_DATE_END, BEF.BEF_FEE_ACTUAL ORDER BY TR.RC_NO, TR.FEE_TYPE, TR.FISCAL_PERIOD 代码需要注释的,直接问就可以了
关于SQL server 2008时间差datediff函数计算问题
如题,我设置了个触发器,每当table4插入的数据符合触发器条件时,则执行名字为 table5-insert的存储过程,在此存储过程里,包含了时间差datediff的运算过程和赋值,还有数据的更新和叠加,时间段if条件判断语句等, 问题的重点来了:时间差的运算出了问题,我的时间差算法是最新一条的0状态记录machine-itime减去非0状态记录的ng-itime,得出来的时间差值赋值到对应的字段,如果有旧数据记录,则进行数据叠加记录下来。 可是不知道为什么,时间差运算出来的结果有时候是正常,确确实实只相差几秒,但有时候是几百秒的甚至几万秒 没搞懂为什么会有这种状况,我把图发上来让大神和大佬们更好理解我的问题~! 这个是table4插入数据的图,可以很明显的知道,第一次的时间差,两个数据记录相减,得出来的时间差是3秒,第二次的时间差,两个数据记录相减,得出来的时间差是4秒 ![图片说明](https://img-ask.csdn.net/upload/201806/06/1528268217_260950.jpg) 可是,计算出来的结果很有问题,时好时坏的那种,现在我贴图把计算出来的结果给你们看下 这个是第一次进行的时间差数据,没错,是3秒,并且添加进去了 ![图片说明](https://img-ask.csdn.net/upload/201806/06/1528268730_150431.jpg) 这个是第二次进行的时间差数据,由table4看出,明明只影响了4秒,可结果是这样的!!! ![图片说明](https://img-ask.csdn.net/upload/201806/06/1528268857_248485.jpg) 不知道为何无缘无故变成了91秒,如果再有时间差数据插进来,进行叠加的话,计算出来的数值结果有时候是叠加对的,也有时候像刚刚那种情况,叠加个几十,几百秒进去 请问为什么会发生这样的情况,我真的没搞懂,我用的也是SS单位来计算的,如果换成MI单位计算的话,就不会有这种异常数值结果情况发生了,但是不是每个错误代码类型(即location+pointer连起来就是一个错误代码类型)都是能够持续1分钟以上的,多数都是只影响几秒或几十秒,求各路SQL server大神或大佬来帮忙看看我的问题,顺便留下我的QQ:584958184,希望能解决这个问题~ 感谢大家~!!
菜鸟的代码 性能差 不知道如何优化。
半年javaweb开发 性能很差 请各位老鸟拍砖 点评下&nbsp; 小弟先谢过了 <br />补充一点&nbsp; 我觉得我这里慢的主要原因都是因为关联的太多&nbsp; where后面的条件也多&nbsp; 我刚开始时条件不多 关联也不多 速度明显要快的多&nbsp; 这里有什么方法可以解决吗 <br /><pre name="code" class="java"> public Paginate getBookInfoByPublishDateAndPublisher(Paginate paginate, String unionSiteID,String publisher, Date fromDate, Date toDate, String bookName, Double price1, Double price2, String vendor, String bookCategory) { // TODO Auto-generated method stub StringBuffer whereCause =new StringBuffer( "not exists(select l from UnionSiteProductList l where l.unionSiteID=? and b.bookID =l.productID)"); Vector paras = new Vector(); paras.add(unionSiteID); if (publisher != null &amp;&amp; publisher.trim().length() &gt; 0) { whereCause.append( (whereCause.length() &gt; 0 ? " and " : "") + "b.publisherName like ?"); paras.add("%" + publisher + "%"); } if (fromDate != null) { whereCause.append( (whereCause.length() &gt; 0 ? " and " : "") + "b.publishDate &gt;= ?"); paras.add(fromDate); } if (toDate != null) { whereCause.append( (whereCause.length() &gt; 0 ? " and " : "") + "b.publishDate &lt;= ?"); paras.add(toDate); } if (bookName != null &amp;&amp; bookName.trim().length() &gt; 0) { whereCause.append((whereCause.length() &gt; 0 ? " and " : "") + "b.bookName like ?"); paras.add("%" + bookName + "%"); } if (price1 != null) { whereCause.append( (whereCause.length() &gt; 0 ? " and " : "") + "pp.productPrice &gt;= ?"); paras.add(price1); } if (price2 != null) { whereCause.append( (whereCause.length() &gt; 0 ? " and " : "") + "pp.productPrice &lt;= ?"); paras.add(price2); } if (vendor != null &amp;&amp; vendor.trim().length() &gt; 0) { whereCause.append((whereCause.length() &gt; 0 ? " and " : "") + "v.vendorName like ?"); paras.add("%" + vendor + "%"); } if (bookCategory != null &amp;&amp; bookCategory.trim().length() &gt; 0) { whereCause.append( (whereCause.length() &gt; 0 ? " and " : "") + "bcv.bookCategoryName like ?"); paras.add("%" + bookCategory + "%"); } String hql = "select b,pp,v,bcv from Book b,ProductItem i,Product p, " + "ProductPrice pp,Vendor v,BookCategoryView bcv " + " where b.bookID=i.entityID and b.deleteFlag=0 and b.flag=4 " + " and i.entityType=1 and i.deleteFlag=0" + " and i.productID=p.productId and p.productType=1 and p.deleteFlag=0 and p.isValid=1" + " and p.productId=pp.productId and pp.deleteFlag=0" + " and b.vendorID = v.vendorID " + " and b.bookCategoryCode=bcv.bookCategoryCode "; if (whereCause.length() &gt; 0) { hql = hql + " and " + whereCause; } paginate = this.pagedQuery(hql, paginate, paras.toArray()); return paginate; } </pre> <br /><br/><strong>问题补充</strong><br/>没人来?&nbsp; 我先自己弄个沙发 。。。&nbsp; <br/><strong>问题补充</strong><br/><div class="quote_title">haoxun 写道</div><div class="quote_div">判断空的语句为什么不封装一下呢;每次都写不是很累; <br />放在一个ValidateUtil.isNull(String param) 里面多好; <br />我不知道你用的是什么框架还是纯的JDBC,如果用的是框架的话可以用其自带的分页,查询条件类似ibatis有动态SQL都可以用的;纯的去拼凑也是可以的。 <br />不过都可以封装成一个方法; SQLUtil.addCause(String filed,String express) 这样代码复用稍微提高一点,美观一点;个人愚见,仅供参考</div> <br />谢谢&nbsp; 我用的S2SH框架&nbsp; 拼凑SQL 这个也想过&nbsp; 只是感觉修改起来太麻烦 得从数据库修改入手 <br/><strong>问题补充</strong><br/><div class="quote_title">lyw985 写道</div><div class="quote_div">所谓的性能差是什么意思? <br /> <br />1.修改方法难 <br />2.获取数据慢 <br /> <br /></div> <br />主要是获取数据慢<br/><strong>问题补充</strong><br/><div class="quote_title">aaronwong_best 写道</div><div class="quote_div">我只想知道,半年的你,现在多少米???</div> <br />成都 2K+<br/><strong>问题补充</strong><br/><div class="quote_title">wuxianjun 写道</div><div class="quote_div">你把sql打印出来去数据库查询下看需要多长时间。 <br />如果时间很长的话分析出查询耗时在那里,然后做优化。 <br />1,最简单的建索引,但这样插入会变慢,后期要修复索引。 <br />2,改表结构,做数据冗余。 <br />3,数据缓存 <br />......等等 <br />本人觉得连表查询不是最后的方法,尽量少用。当数据量大连表多的时候就会有性能问题了。</div> <br /> <br />那用视图可不可以呢<br/><strong>问题补充</strong><br/><div class="quote_title">天泪不死 写道</div><div class="quote_div">你这sql语句有些小的注意影响性能的地方太多 <br />1.关联多的时候,可能把各表的这种数字条件放前面i.entityType=1这种关联条件b.bookID=i.entityID放后面 <br />2.多条件下,数字条件在前,字符串条件在后 <br />3.不要用过多的模糊查询,模糊查询用不上索引,会废了整个高效sql <br />4.精确条件放前面,模糊条件放后面 <br />别小看放置顺序,看看数据库原理sql执行方面的你会懂的.... <br />就说这么些</div> <br />受教了&nbsp; 谢谢你<br/><strong>问题补充</strong><br/><div class="quote_title">liuyfly 写道</div><div class="quote_div"><div class="quote_title">za3999 写道</div><div class="quote_div">带十个参数的方法。。。NB。。</div> <br /> <br />是啊 佩服啊 十个参数。。。我还没写过超过四个参数的方法呢。。。看来是少见多怪了,唉!</div> <br /> <br />呵呵 小弟是菜鸟&nbsp; 就别贬我了&nbsp; 这不需求的嘛&nbsp; 我也不想啊&nbsp; <br/><strong>问题补充</strong><br/><div class="quote_title">bestchenwu 写道</div><div class="quote_div">楼主可以看下《重构:改善既有代码的设计》 会对你有不少的帮助的</div> <br />谢谢你&nbsp; 有时间我会去看的<br/><strong>问题补充</strong><br/><div class="quote_title">幻无极 写道</div><div class="quote_div">你试着把一部分条件加到()里,我原来碰到过一次蛋疼的问题,整个查没什么,后来加了才几个条件就用了好几倍的时间觉得不正常,结果把查询的多个条件放进了()里就好了,我琢磨着不把查询条件放进括号是会对每条记录进行过滤,加了括号优先把前面的查询做完了,在从查询过的结果中进行过滤,也只能这么猜测了 <br />你可以试着把容易过滤的条件放在前面</div> <br />我和你的问题差不多&nbsp; 我去试一下
hql 有问题
一个登陆操作 业务逻辑中 这样写查询不出数据 [code="java"]String hql = "from Account user where user.employeeName = '"+object.getEmployeeName()+"'"; [/code] 用 from Account 测试了下 可以查询出数据 问题就是处在这个hql 语句上, 可是这种写法我一直都在用, 没有出现过问题 , 哪位高人能指点下啊. [b]问题补充:[/b] 回一楼的 符合条件的数据确实是存在的 我使用sql语句可以查询出来在MyEclipse Database Explorer 中 例 如 select * from Account where EmployeeName = '刘总' 是确实能够查询出数据的. [b]问题补充:[/b] 回2楼的 user 我也换过了 不行 [b]问题补充:[/b] 回3楼的 我开始的时候说了 使用from Account 测试了 在System.out.println(list.size()); 的作用下, console 输入了 53 而使用String hql = "from Account user where user.employeeName = '"+object.getEmployeeName()+"'"; 什么结果是 0 [b]问题补充:[/b] 我在业务逻辑层的方法中这样写 [code="java"]public boolean isLoginSuccess(Account object) { // TODO Auto-generated method stub String hql = "from Account "; System.out.println("看看业务逻辑层的hql"+hql); List list = commonDAO.search(hql); System.out.println("业务逻辑层这边的城市"+list.size()); if(list.size() > 0){ Account item = (Account)list.get(0); if(object.getEmployeePwd().equals(item.getEmployeePwd())){ return true ; } } return false ; }[/code] 在DAO层方法是这样的 [code="java"]public List search(String hql) { // TODO Auto-generated method stub System.out.println("看看dao层的"+hql); List temp = super.getHibernateTemplate().find(hql); for(int i = 0 ; i < temp.size(); i++){ Account user = (Account)temp.get(i); System.out.println(user.getEmployeeName()); } System.out.println("看看dao层的"+temp.size()); return temp ; }[/code] 想用全部查询来测试是否能够成功查询出Account 表中的 数据 , 结果是可以的 业务逻辑中方法改回这样 String hql = "from Account account where account.employeeName = '"+object.getEmployeeName()+"'"; 就不行了 console 没输出数据 , list.size() 的输出结果是 0 我在ms sqlserver 的查询分析其中使用 select * from Account where EmployeeName = '刘总' 就查询出数据 自己也在dao层的方法中使用System.out.println(); 输出方法中使用 hql 语句, 都是很正常的, 会不会是hql 到了 ms sqlserver中 它的中文条件 '刘总' 被转义成了乱码 而不会从数据库中获取数据呢? [b]问题补充:[/b] 利用log4j。properties 文件 和 在 applicationContext.xml中设置了 <pro key="hibernate.show_sql">true</pro> 在 console 中输出了 被转义后的sql语句 [code="sql"]select account0_.EmployeeID as EmployeeID, account0_.EmployeeName as Employee2_0_, account0_.EmployeePwd as Employee3_0_, account0_.EmployeeRight as Employee4_0_, account0_.Remark as Remark0_ from xindunoadb.dbo.Account account0_ where account0_.EmployeeName='??×?'[/code] 很明显被转义后的查询条件成了乱码 这是怎么造成的呢? 我在web.xml是这样写的 [code="xml"]<filter> <filter-name>encodingFilter</filter-name> <filter-class> org.springframework.web.filter.CharacterEncodingFilter </filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>[/code] 怎么还会出现乱码呢? [b]问题补充:[/b] 清哪位帮忙看看 这个filter 的配置哪有问题 我以前是自己写filter 的 用了ssh 之后 才改用 提供了的这个 我另一个demo 中 也是使用spring 提供的类来做的, 是成功的了 没有道理这个不行啊 [b]问题补充:[/b] 在项目的lib 中 添加了jtds 1.2.jar 也修改applicationcontext.xml中的datasource 配置 , 结果重启tomcat 访问项目就报错了, 说无法创建FormBean了 不得以改回去了 [b]问题补充:[/b] [quote]CharacterEncodingFilter中定义的和jsp页面的编码不一致吧 zkl_1987 (初级程序员) 2009-04-09 采纳为答案[/quote] 这个问题比较低级了 , 我也回头查了下 , 没有不统一的问题, 都是UTF-8 [b]问题补充:[/b] [quote]囧rz 结果是编码问题 - -~ 我怎么觉得是你的数据库编码有问题捏? 把建表sql发上来看看。 问题应该就是在数据库的编码上了。 iampurse (中级程序员) 2009-04-09[/quote] 这个数据库不是我设计的 是已走的"前辈"留下的 没有建库脚本就没有办法了么? [b]问题补充:[/b] [quote]突然想起来的,不知道你配置没有……我觉得你应该配置了,但是除此之外想不出其它原因: Xml代码 <prop key="connection.characterEncoding">utf8</prop> <prop key="connection.characterEncoding">utf8</prop> hibernate的connection.characterEncoding属性。 Snow_Young (中级程序员) 2009-04-09[/quote] 这个我没有写... 请问这个配置是写在SessionFactory 或者 dateSource 中的哪个部分? [b]问题补充:[/b] [quote]突然想起来的,不知道你配置没有……我觉得你应该配置了,但是除此之外想不出其它原因: Xml代码 <prop key="connection.characterEncoding">utf8</prop> hibernate的connection.characterEncoding属性。 Snow_Young (中级程序员) [/quote] 我配置 [code="xml"] <prop key="connection.characterEncoding">utf8</prop> <prop key="connection.useUnicode">true</prop> [/code] 没有变化..... 复制一下我使用log4j.properties 在consosle 输出的结果 : [code="java"]08:56:02,046 DEBUG QueryTranslatorImpl:177 - HQL: from com.newshieldoa.common.pojo.Account account where account.employeeName = '刘总' and account.employeePwd = '.' 08:56:02,046 DEBUG QueryTranslatorImpl:178 - SQL: select account0_.EmployeeID as EmployeeID, account0_.EmployeeName as Employee2_0_, account0_.EmployeePwd as Employee3_0_, account0_.EmployeeRight as Employee4_0_, account0_.Remark as Remark0_ from xindunoadb.dbo.Account account0_ where account0_.EmployeeName='??×?' and account0_.EmployeePwd='.'[/code] [b]问题补充:[/b] [quote] Java代码 String hql = "from Account user where user.employeeName = :employeeName"; Query query = session.createQuery(hql) .setString("employeeName", object.getEmployeeName()); String hql = "from Account user where user.employeeName = :employeeName"; Query query = session.createQuery(hql) .setString("employeeName", object.getEmployeeName()); 另外你分数也给的太抠门了吧…… Snow_Young (中级程序员)[/quote] 呵呵 不是我抠门 我早就没有分了, 发帖之前就是 0 个金币, 我要是有200个 金币 早就全拿出来了 .... 您这个方法 我还没试 毕竟我习惯是在业务逻辑层把hql组织好传递进DAO层的, 您这个方法全是在DAO层做的 [b]问题补充:[/b] [quote]拼的和 命名的都一样的效果吧 - -~ 我还是觉得是你的数据库的问题。 数据库别人留下的 你也可以改的啊 alert 一下就好了嘛 iampurse (中级程序员) 2009-04-10[/quote] 我刚刚吧原来2000 的数据库 转移到了 2005 , 很遗憾 还是不行, 跟数据库没有关系了... [b]问题补充:[/b] 我的上帝啊 终于不是乱码了 !!!!!!!!!!!!!!11 在 applicationContext.xml 中 sessionFactory 的配置信息中 配置了这样一段代码就搞定了 [code="xml"] <prop key="hibernate.query.factory_class"> org.hibernate.hql.classic.ClassicQueryTranslatorFactory </prop>[/code] 快2天了 终于把这该死的问题搞定了. 做个标记 ,为自己, 为别人.
myeclipse加载报表配置xml文件失败,项目无法正常运行,怎么解决?
![图片说明](https://img-ask.csdn.net/upload/201904/11/1554983047_497110.png) ```<?xml version="1.0" encoding="UTF-8"?> <resources xmlns="http://www.wabacus.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.wabacus.com ../xsd/wabacus.resources.xsd"> <resource key="invalid.isnotempty"> <![CDATA[#label#不能为空]]> </resource> <resource key="invalid.number"> <![CDATA[#data#不是合法数字]]> </resource> <resource key="invalid.age"> <![CDATA[#data#不是有效年龄]]> </resource> <resource key="clickorderbypage1.header"> <![CDATA[<font color='#3366FF'><i> 点击<u>工号</u>、<u>中文名</u>、<u>英文名</u>、<u>性别</u>、<u>年龄</u>、<u>出生日期</u>列的数据标题可以进行排序 </i></font>]]> </resource> <resource key="colselectedpage1.footer"> <![CDATA[<font color='#FF0000'>说明:<font color='#0000FF'> 点击页面中最右边列的向右箭头或“下载Excel”链接,可以选择要显示/下载的列 </font></font>]]> </resource> <resource key="typepromptpage1.header"> <![CDATA[<font color='#3366FF'><i>其中<u>工号</u>查询条件采用任意位置匹配,<u>中文名</u>查询条件采用起始位置匹配</i></font>]]> </resource> <resource key="typepromptpage2.footer"> <![CDATA[<font color='#3366FF'><i>其中<u>工号</u>查询条件采用任意位置匹配,<u>姓名</u>查询条件采用起始位置匹配</i></font>]]> </resource> <resource key="typepromptpage3.footer"> <![CDATA[<font color='#3366FF'><i>其中<u>工号</u>提示列采用任意位置匹配,<u>中文名</u>提示列采用起始位置匹配</i></font>]]> </resource> <resource key="rowselectpage2.report1.footer"> <![CDATA[<font color='#3366FF'><i>通过按住Ctrl键或Shift键用鼠标点击记录行进行多选</i></font>]]> </resource> <resource key="masterslavepage3.report1.header"> <![CDATA[<font color='#3366FF'><i>点击“部门编号”查看部门员工列表,点击“部门名称”查看部门详细资料</i></font>]]> </resource> <resource key="masterslavepage3_2.report1.footer"> <![CDATA[<font color='#3366FF'><i>点击“部门编号”查看部门员工列表</i></font>]]> </resource> <resource key="masterslavepage3_1.report1.footer"> <![CDATA[<font color='#3366FF'><i>点击“工号”查看员工详细资料</i></font>]]> </resource> <resource key="interceptorpage1.footer"> <![CDATA[<font color='#3366FF'><i> 1、访问报表时查看服务器控制台,通过<report/>的子标签<interceptor/>中配置的拦截器会在控制台中打印信息;<br/> 2、年龄查询条件输入值只能在10到20范围之内,超出后会被前置动作提示出错。 </i></font>]]> </resource> <resource key="interceptorpage2.footer"> <![CDATA[<font color='#3366FF'><i> 1、访问报表时查看服务器控制台,通过<report/>的属性interceptor所引用的在资源文件中定义的拦截器会在控制台中打印信息;<br/> 2、年龄查询条件输入值只能在10到20范围之内,超出后会被前置动作提示出错。 </i></font>]]> </resource> <resource key="interceptorpage3.footer"> <![CDATA[<font color='#3366FF'><i> 1、访问报表时查看服务器控制台,通过<report/>的属性interceptor所引用的拦截器JAVA类会在控制台中打印信息;<br/> 2、年龄查询条件输入值只能在10到20范围之内,超出后会被前置动作提示出错。 </i></font>]]> </resource> <resource key="title.label">员工信息列表</resource> <resource key="sequence.label">序号</resource> <resource key="no.label">工号</resource> <resource key="group.label">个人信息</resource> <resource key="name.label">姓名</resource> <resource key="sex.label">性别</resource> <resource key="age.label">年龄</resource> <resource key="birthday.label">出生日期</resource> <resource key="salary.label">工资</resource> <resource key="joinindate.label">入职日期</resource> <resource key="condition.txtno.label">工号</resource> <resource key="condition.txtage.label">年龄</resource> <resource key="l10npage.report1.footer"> <![CDATA[<font color='#3366FF'><i> 1、这里演示的是静态配置信息的本地化,对于从数据库取出的动态数据,如果要进行本地化,请参看《Wabacus框架入门与提高》文档<br/> 2、为两个查询条件都配置了校验,校验出错信息也支持本地化,校验规则与上面“客户端/服务器端校验”演示的报表一致。 </i></font>]]> </resource> <resource key="otherpage3.report1.header"> <![CDATA[ <a href="#" onclick="viewSelectedRadioValues();">查看“选择一”列选中值</a>&nbsp;|&nbsp;<a href="#" onclick="viewSelectedCheckboxValues();">查看“选择二”列选中值</a> ]]> </resource> <resource key="otherpage4_2.report1.footer"> <![CDATA[<br/><br/><font color='#3366FF'><i> 这里演示的功能按钮只是测试,虽然是“添加”或“修改”按钮,但不能对报表数据进行编辑,关于数据编辑功能的演示,请参看“数据编辑篇” </i></font>]]> </resource> <resource key="reportborderlistpage1.report5.footer"> <![CDATA[<br/><font color='red'> 注意:通过<report/>标签的bordercolor属性只能改变数据部分表格的边框颜色,如果要同时改变标题部分和外层表格的边框颜色,则需要通过修改 wabacus_system.css文件中的.cls-data-th-list、.cls-data-td-list的样式定义实现。 </font>]]> </resource> <resource key="cellresizepage.report1.header"> <![CDATA[<br/><font color='#FF0000'> 请将鼠标放在数据标题列各单元格之间进行左右移动,调整列宽</font> </font>]]> </resource> <resource key="cellresizepage.report2.footer"> <![CDATA[<br/><font color='#3366FF'> <b>说明:</b>对于复杂表头的报表,只能对顶层分组所在单元格以及没有参与列分组的列所在单元格进行移动,比如在这复杂表头报表中:<br/> &nbsp;&nbsp;&nbsp;&nbsp;<font color="red">“工号”、“年龄”、“入职日期”三列</font>属于没有参与列分组的列,所以可以对它们所在单元格进行移动;<br/> &nbsp;&nbsp;&nbsp;&nbsp;<font color="red">“基本信息”分组</font>属于顶层分组,因为它不属于哪个分组的子分组,所以也可以对它所在单元格进行移动;<br/> &nbsp;&nbsp;&nbsp;&nbsp;<font color="red">“中文名”、“英文名”、“性别”三列</font>是参与了列分组的列,所以不能对它们所在单元格进行移动;<br/> &nbsp;&nbsp;&nbsp;&nbsp;<font color="red">“姓名”分组</font>不是顶层分组,因为它是父分组“基本信息”的一部分,所以不能对它所在单元格进行移动。 </font>]]> </resource> <resource key="celldragpage1.header"> <![CDATA[<br/><font color='#FF0000'> 请将鼠标放在数据标题列,点击后进行拖动</font> </font>]]> </resource> <resource key="interceptorpage2.report1.interceptor" type="com.wabacus.config.resource.InterceptorRes"> <interceptor> <imports> <import>com.wabacus.util.*</import> <import>java.util</import> </imports> <preaction> <![CDATA[ String age=rrequest.getStringAttribute("txtage",""); if(!age.equals("")) { try { int iage=Integer.parseInt(age); if(iage<10||iage>20) { rrequest.getWResponse().getMessageCollector().alert("输入的年龄:"+age+"起出范围,只能输入10到20之间的数字",null,true); } }catch(NumberFormatException nfe) { rrequest.getWResponse().getMessageCollector().alert("输入的年龄:"+age+"不是合法数字",null,true); } } System.out.println(new Date()+":::执行完前置动作------------------"); ]]> </preaction> <postaction> <![CDATA[ System.out.println(new Date()+":::执行完后置动作-------------------"); ]]> </postaction> </interceptor> </resource> <!-- --> <resource key="editablelistreportpage1.footer"> <![CDATA[<br/><br/><font color='#3366FF'><i> “省”、“市”、“县”三列为下拉框,且是关联下拉框</i></font>]]> </resource> <resource key="editabledetailpage2.footer"> <![CDATA[<br/><br/></br> <font color='#ff0000'>注意:</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color='#3366FF'> 1、在这种编辑方式中需要先点击“修改”按钮才能修改数据;<br/><br/> &nbsp;&nbsp;&nbsp;&nbsp; 2、因为此报表的“简介”列是大字段类型,如果是Oracle数据库,且采用的不是oracle10g的jdbc驱动,则可能不能正常的完成添加操作,需要将配置文件中此报表的 <insert/>标签配置的SQL语句:insert into ...后面加上where deptno=@{deptno__old},即变为如下形式: insert into tbl_department(guid=uuid{},@{deptno},@{deptname},@{manager},@{builtdate},@{performance},@{description}) where deptno=@{deptno__old};然后重新启动即可。 </font>]]> </resource> <resource key="editpartcolpage1.footer"> <![CDATA[<br/><br/></br> <font color='#ff0000'>说明:</font><br/>&nbsp;&nbsp;&nbsp;&nbsp;<font color='#3366FF'> 1、修改数据时:“工号”、“姓名”、“所属部门”三列不允许修改<br/> &nbsp;&nbsp;&nbsp;&nbsp; 2、添加数据时,“性别”、“出生日期”两列不允许添加 </font>]]> </resource> <resource key="coldefaultvaluepage1.report1.footer"> <![CDATA[<br/><br/></br> <font color='#ff0000'>说明:</font><br/><font color='#0000FF'> &nbsp;&nbsp;&nbsp;&nbsp;“姓名”列默认值为“无名”;<br/> &nbsp;&nbsp;&nbsp;&nbsp;“年龄”列默认值为60;<br/> &nbsp;&nbsp;&nbsp;&nbsp;“出生日期”列默认值为1980-09-23<br/> &nbsp;&nbsp;&nbsp;&nbsp;“工资”列默认值为1000<br/> &nbsp;&nbsp;&nbsp;&nbsp;“省”列默认值为广东<br/> &nbsp;&nbsp;&nbsp;&nbsp;“市”列默认值为深圳<br/> &nbsp;&nbsp;&nbsp;&nbsp;“县”列默认值为福田<br/> </font>]]> </resource> <resource key="inputboxdefaultvaluepage1.report1.footer"> <![CDATA[<br/><br/></br> <font color='#ff0000'>说明:</font><br/><font color='#0000FF'> &nbsp;&nbsp;&nbsp;&nbsp;“姓名”列的输入框默认值为“无名”;<br/> &nbsp;&nbsp;&nbsp;&nbsp;“年龄”列的输入框默认值为60;<br/> &nbsp;&nbsp;&nbsp;&nbsp;“出生日期”列的输入框默认值为1980-09-23<br/> &nbsp;&nbsp;&nbsp;&nbsp;“工资”列的输入框默认值为1000<br/> &nbsp;&nbsp;&nbsp;&nbsp;“省”列的输入框默认值为广东<br/> &nbsp;&nbsp;&nbsp;&nbsp;“市”列的输入框默认值为深圳<br/> &nbsp;&nbsp;&nbsp;&nbsp;“县”列的输入框默认值为福田<br/> </font>]]> </resource> <resource key="editablemasterslavepage1.report3.footer"> <![CDATA[<br/><br/> <font color='#ff0000'>说明:</font><br/><font color='#0000FF'> &nbsp;&nbsp;&nbsp;&nbsp; 1、“详细资料1”和“详细资料2”两个细览报表是两种不同编辑方式的细览报表,它们都依赖于“员工信息列表”报表。<br/> &nbsp;&nbsp;&nbsp;&nbsp; 2、“详细资料1”和“详细资料2”两个细览报表均配置为不允许修改“工号”列,其它列均允许修改。 </font>]]> </resource> <resource key="editableFormatListPage1.footer"> <![CDATA[<br/><br/><font color='#ff0000'>说明:</font><font color='#0000FF'>&nbsp;&nbsp;在只读模式时,将此报表的“工号”列格式化为一个超链接</font>]]> </resource> <resource key="editableFormatDetailPage1.footer"> <![CDATA[<br/><br/><font color='#ff0000'>说明:</font><font color="#0000ff">使用只读访问模式访问时将“部门编号”列格式化为一个超链接,使用默认访问模式时,将“部门经理”列格式化为一超链接</font>]]> </resource> <resource key="editableFormatDetailPage2.footer"> <![CDATA[<br/><br/><font color='#ff0000'>说明:</font><font color="#0000ff"> 使用只读访问模式访问时将“部门编号”列格式化为一个超链接,如果是添加记录模式,为部门编号赋默认值111111</font>]]> </resource> <resource key="savecallbackpage2.footer"> <![CDATA[<br/><br/> <font color='#ff0000'>说明:</font><br/><font color='#0000FF'> &nbsp;&nbsp;此报表配置了一个保存回调函数打印保存的数据,并且声明执行完此回调函数后不更新报表页面的显示,<br/> &nbsp;&nbsp;这对于保存后跳转到新页面比较有用,可以提高性能,因为这种情况没必要更新页面显示。 </font>]]> </resource> <resource key="popupsinglepage1.report1.footer"> <![CDATA[<br/> <font color='#ff0000'>说明:</font><font color='#0000FF'> “兴趣爱好”列为弹出输入框窗口编辑框 </font>]]> </resource> <resource key="popupmultiplypage1.report1.footer"> <![CDATA[<br/> <font color='#ff0000'>说明:</font><font color='#0000FF'> 通过弹出窗口选择了“兴趣爱好”列的值后,会同时设置“姓名”列和“部门”列的值 </font>]]> </resource> <resource key="pageinterceptorpage1.footer"> <![CDATA[<br/> <font color='#ff0000'>说明:</font><font color='#0000FF'> 访问页面或操作页面上报表时,请查看控制台上各拦截器的打印信息,可以了解到不同类型、不同位置上的页面拦截器各方法的执行顺序 </font>]]> </resource> <resource key="fileuploadlistpage1.report1.footer"> <![CDATA[<br/> <font color='#ff0000'>说明:</font><br/> <font color='#0000FF'> &nbsp;&nbsp;1、“图片文件上传”是指上传后以<img/>标签显示出来的上传类型。<br/> &nbsp;&nbsp;2、如果要测试这里的文件上传功能,请先修改此报表配置中为此列配置的上传路径到合适路径 </font>]]> </resource> <resource key="fileuploadlistpage1.report2.footer"> <![CDATA[<br/> <font color='#ff0000'>说明:</font><br/><font color='#0000FF'> &nbsp;&nbsp;1、“WEB文件上传”是指上传后能通过URL在浏览器中访问到,Wabacus框架在上传这种类型的文件时,会根据用户配置的rooturl属性构造出此文件的访问URL;<br/> &nbsp;&nbsp;2、如果要测试这里的文件上传功能,请先修改此报表配置中为此列配置的上传路径到合适路径 </font>]]> </resource> <resource key="fileuploadlistpage1.report3.footer"> <![CDATA[<br/> <font color='#ff0000'>说明:</font><br/><font color='#0000FF'> &nbsp;&nbsp;1、“普通文件上传”就是指一般的文件上传功能,Wabacus框架上传这种类型的文件时,会在上传后返回被上传文件在服务器中的绝对路径; &nbsp;&nbsp;2、如果要测试这里的文件上传功能,请先修改此报表配置中为此列配置的上传路径到合适路径 </font>]]> </resource> <resource key="fileuploadlistpage1.report4.footer"> <![CDATA[<br/> <font color='#ff0000'>说明:</font><font color='#0000FF'> “上传后文件改名”对上面三种类型的文件上传操作都有效,是指将文件上传到服务器后,框架自动对文件进行更名。<br/> &nbsp;&nbsp;更名的类型包括如下几种:<br/> &nbsp;&nbsp;&nbsp;&nbsp;1、常量字符串;<br/> &nbsp;&nbsp;&nbsp;&nbsp;2、{date}:以当前日期做为文件名;<br/> &nbsp;&nbsp;&nbsp;&nbsp;3、{time}:以当前时间做为文件名;<br/> &nbsp;&nbsp;&nbsp;&nbsp;4、{timestamp}:以当前日期时间的毫秒数做为文件名,可以保持每次上传的文件名不重复。 </font>]]> </resource> <resource key="clobpage1.footer"> <![CDATA[<br/><font color='#ff0000'>说明:</font><font color='#0000FF'>“简介”列即为大字符串类型字段。</font>]]> </resource> <resource key="formpartcoldetail1.footer"> <![CDATA[<br/><font color='#ff0000'>说明:</font><br/> <font color='#0000FF'> &nbsp;&nbsp;编辑时,“婚否”、“工资”、“所属部门”三列不允许修改;<br/> &nbsp;&nbsp;添加时,“英文名”、“入职日期”两列不允许输入数据 </font>]]> </resource> <resource key="formpartcollistpage1.footer"> <![CDATA[<br/><font color='#ff0000'>说明:</font><br/> <font color='#0000FF'> &nbsp;&nbsp;编辑时,“所属部门”、“省”、“市”、“县”四列不允许修改;<br/> &nbsp;&nbsp;添加时,“姓名”、“性别”两列不允许输入数据 </font>]]> </resource> <resource key="formcallbackdetailpage1.header"> <![CDATA[<br/><font color='#ff0000'>注意:</font> <font color='#0000FF'>如果要在照片列进行文件上传,请先修改此报表配置中为此列配置的上传路径到合适路径</font>]]> </resource> <resource key="formcallbacklistpage1.header"> <![CDATA[<br/><font color='#ff0000'>注意:</font> <font color='#0000FF'>如果要在照片列进行文件上传,请先修改此报表配置中为此列配置的上传路径到合适路径</font>]]> </resource> <resource key="masterslavepage1.report2.footer"> <![CDATA[<br/><font color='#ff0000'>说明:</font> <font color='#0000FF'>这里演示的主从关系是当主报表没有数据时,从报表仍然显示出来,这也是默认的主从关系</font>]]> </resource> <resource key="masterslavepage1.report4.footer"> <![CDATA[<br/><font color='#ff0000'>说明:</font> <font color='#0000FF'>这里演示的主从关系是当主报表没有数据时,从报表不显示出来</font>]]> </resource> <resource key="containerpermissionpage12.footer"> <![CDATA[<br/><font color='#ff0000'>说明:</font><font color='#0000FF'>此页面上所有输入框都只读。</font>]]> </resource> <resource key="containerpermissionpage13.footer"> <![CDATA[<br/><font color='#ff0000'>说明:</font><font color='#0000FF'>此页面上所有按钮都禁用,点击无效。</font>]]> </resource> <resource key="containerpermissionpage21.footer"> <![CDATA[<br/><font color='#ff0000'>说明:</font><font color='#0000FF'>此页面上id为“vp1”的容器的标题授权为不显示出来。</font>]]> </resource> <resource key="containerpermissionpage41.footer"> <![CDATA[<br/><font color='#ff0000'>说明:</font><font color='#0000FF'>此页面上id为“tab1”的tabpane容器配置了三个标签页显示三个报表,但第一个和第二个标签页的display权限设置为false,因此只显示了第三个标签页出来。</font>]]> </resource> <resource key="containerpermissionpage42.footer"> <![CDATA[<br/><font color='#ff0000'>说明:</font><font color='#0000FF'>此页面上id为“tab1”的tabpane容器配置了三个标签页显示三个报表,但第二个标签页的disabled权限设置为true,因此不能切换到这个标签页。</font>]]> </resource> <resource key="conditionrelatepage1.footer"> <![CDATA[<br/><font color='#ff0000'>说明:</font> <br><font color='#0000FF'>&nbsp;&nbsp;此页面共包括三个报表,其中报表一、报表二、报表三的“工号”查询条件关联,因为它们的此条件的name属性都是txtno</font> <br><font color='#0000FF'>&nbsp;&nbsp;报表一、报表三的“姓名”查询条件关联,因为它们的此条件的name属性都是txtname,但与报表二的“姓名”查询条件不关联,因为它的此查询条件的name为txtname1。</font> <br><font color='#0000FF'>&nbsp;&nbsp;报表一、报表三的“性别”查询条件不关联,因为它们的此条件的name属性不同</font> ]]> </resource> <resource key="Interceptor_saveinterceptorreport" type="com.wabacus.config.resource.InterceptorRes"> <interceptor> <imports> <import>java.util.*</import> </imports> <saveaction> <![CDATA[ List lstInsertData=rrequest.getLstInsertedData(rbean);//添加的记录集合 List lstInsertExternalVals=rrequest.getLstInsertedParamValues(rbean);//因为此报表为<insert/>配置了<external-values/> List lstUpdateData=rrequest.getLstUpdatedData(rbean);//修改的记录集合 List lstDeleteData=rrequest.getLstDeletedData(rbean);//删除的记录集合 if(lstInsertData!=null&&lstInsertData.size()>0||lstUpdateData!=null&&lstUpdateData.size()>0||lstDeleteData!=null&&lstDeleteData.size()>0) { System.out.println("--------------拦截器类型:资源项----------保存前置动作-------------------"); } Map mData; if(lstInsertData!=null&&lstInsertData.size()>0) {//当前在做添加数据的保存操作 Map mParamValues; for(int i=0;i<lstInsertData.size();i++) {//循环添加的每条记录 mData=(Map)lstInsertData.get(i); mParamValues=(Map)lstInsertExternalVals.get(i); if(mData==null) continue; System.out.println("第"+(i+1)+"条添加的记录:"); Iterator itKeys=mData.keySet().iterator(); while(itKeys.hasNext()) { String key=(String)itKeys.next(); String value=(String)mData.get(key); System.out.print("["+key+"="+value+"]"); } System.out.println(); System.out.println("此条记录对应的<params/>定义的变量值:"); itKeys=mParamValues.keySet().iterator(); while(itKeys.hasNext()) { String key=(String)itKeys.next(); String value=(String)mParamValues.get(key); System.out.print("["+key+"="+value+"]"); } System.out.println(); } } if(lstUpdateData!=null&&lstUpdateData.size()>0) {//当前在做修改数据的保存操作 for(int i=0;i<lstUpdateData.size();i++) { mData=(Map)lstUpdateData.get(i); if(mData==null) continue; System.out.println("第"+(i+1)+"条修改的记录:"); Iterator itKeys=mData.keySet().iterator(); while(itKeys.hasNext()) { String key=(String)itKeys.next(); String value=(String)mData.get(key); System.out.print("["+key+"="+value+"]"); } System.out.println(); } } if(lstDeleteData!=null&&lstDeleteData.size()>0) {//当前在做删除数据的保存操作 for(int i=0;i<lstDeleteData.size();i++) { mData=(Map)lstDeleteData.get(i); if(mData==null) continue; System.out.println("第"+(i+1)+"条删除的记录:"); Iterator itKeys=mData.keySet().iterator(); while(itKeys.hasNext()) { String key=(String)itKeys.next(); String value=(String)mData.get(key); System.out.print("["+key+"="+value+"]"); } System.out.println(); } } return super.doSave(rrequest,rbean,editbean); ]]> </saveaction> </interceptor> </resource> <resource key="Interceptor_saveinterceptorperrowpage1" type="com.wabacus.config.resource.InterceptorRes"> <interceptor> <imports> <import>java.util.*</import> </imports> <saveaction-perrow> <![CDATA[ String message=""; ```
相见恨晚的超实用网站
搞学习 知乎:www.zhihu.com 简答题:http://www.jiandati.com/ 网易公开课:https://open.163.com/ted/ 网易云课堂:https://study.163.com/ 中国大学MOOC:www.icourse163.org 网易云课堂:study.163.com 哔哩哔哩弹幕网:www.bilibili.com 我要自学网:www.51zxw
花了20分钟,给女朋友们写了一个web版群聊程序
参考博客 [1]https://www.byteslounge.com/tutorials/java-ee-html5-websocket-example
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
字节跳动视频编解码面经
引言 本文主要是记录一下面试字节跳动的经历。 三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
Python 基础(一):入门必备知识
目录1 标识符2 关键字3 引号4 编码5 输入输出6 缩进7 多行8 注释9 数据类型10 运算符10.1 常用运算符10.2 运算符优先级 1 标识符 标识符是编程时使用的名字,用于给变量、函数、语句块等命名,Python 中标识符由字母、数字、下划线组成,不能以数字开头,区分大小写。 以下划线开头的标识符有特殊含义,单下划线开头的标识符,如:_xxx ,表示不能直接访问的类属性,需通过类提供
这30个CSS选择器,你必须熟记(上)
关注前端达人,与你共同进步CSS的魅力就是让我们前端工程师像设计师一样进行网页的设计,我们能轻而易举的改变颜色、布局、制作出漂亮的影音效果等等,我们只需要改几行代码,不需...
国产开源API网关项目进入Apache孵化器:APISIX
点击蓝色“程序猿DD”关注我回复“资源”获取独家整理的学习资料!近日,又有一个开源项目加入了这个Java开源界大名鼎鼎的Apache基金会,开始进行孵化器。项目名称:AP...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
编写Spring MVC控制器的14个技巧
本期目录 1.使用@Controller构造型 2.实现控制器接口 3.扩展AbstractController类 4.为处理程序方法指定URL映射 5.为处理程序方法指定HTTP请求方法 6.将请求参数映射到处理程序方法 7.返回模型和视图 8.将对象放入模型 9.处理程序方法中的重定向 10.处理表格提交和表格验证 11.处理文件上传 12.在控制器中自动装配业务类 ...
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
求小姐姐抠图竟遭白眼?痛定思痛,我决定用 Python 自力更生!
点击蓝色“Python空间”关注我丫加个“星标”,每天一起快乐的学习大家好,我是 Rocky0429,一个刚恰完午饭,正在用刷网页浪费生命的蒟蒻...一堆堆无聊八卦信息的网页内容慢慢使我的双眼模糊,一个哈欠打出了三斤老泪,就在此时我看到了一张图片:是谁!是谁把我女朋友的照片放出来的!awsl!太好看了叭...等等,那个背景上的一堆鬼画符是什么鬼?!真是看不下去!叔叔婶婶能忍,隔壁老王的三姨妈的四表...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员...
相关热词 c# plc s1200 c#里氏转换原则 c# 主界面 c# do loop c#存为组套 模板 c# 停掉协程 c# rgb 读取图片 c# 图片颜色调整 最快 c#多张图片上传 c#密封类与密封方法
立即提问