• SSH药品信息管理系统问题贴


    ---恢复内容开始---

    1.An internal error occurred during: "Initializing Java Tooling". MyEclipse启动发生的错误

    解决方法:MyEclipse ->windows -> Reset perspactive 重置MyEclipse 页面 。(就闪了一下问题,倒是没出现错误,用了方法后不知道解没解决实际问题)

    2.最最严重的问题,Tomcat莫名打不开网页,可以打开别的项目就是那个项目时不时的

    待解决

    可能是自己删除了新建项目的web.xml文件

    3.关闭可视化视图

    window->preferences->general->editors->file associations->找到jsp->...

     4.MyEclipse提示错误The type java.util.Map$Entry cannot be resolved.(即调用接口ActionSuport的java文件package报错)

    解决方法:因为JDK用的是1.8MyEclipse用的是10.7版本太低了。。所以最后jdk换成了自带的sun 1.6或者是下载新版的MyEclipse.

    5.js文件出错

    解决办法:

     5.SQL语言中where 1=1的问题

    where 1=1有什么用?在SQL语言中,写这么一句话就跟没写一样,干嘛要出力不讨好呢。

    select * from table1 where 1=1与select * from table1完全没有区别,甚至还有其他许多变种的写法如1<>2,'a'='a','a'<>'b'等,其目的就只有一个,where 的条件为永真,得到的结果就是未加约束条件的。

    在SQL注入时会用到这个,例如select * from table1 where name='test'给强行加上select * from table1 where name='test' or 1=1这就又变成了无约束的查询了。

    然而where 1=1的妙处不仅如此,这些使用方法在书本中可能看不到,它们多数来自实际项目。

    多条件查询

     

    在不定数量查询条件情况下,where 1=1可以很方便的规范语句。例如一个查询可能有name,age,phone查询条件,也可能没有,那该如何处理呢?

    注意,这里写了一个多余的where 1=1。

    String sql="select * from table1 where 1=1";

    StringBuffer buffer = new StringBuffer();

    buffer.append(sql);

    if (null != name && !"".equals(name)) {

     buffer.append(" and name = " + name);

    }

    if (null != age && !"".equals(age)) {

     buffer.append(" and age = " + age);

    }

    if (null != phone && !"".equals(phone)) {

     buffer.append(" and phone like '%" + phone + "%'");

    }

    如果不写1=1呢,那么在每一个不为空的查询条件面前,都必须判断有没有where子句,然后在第一个出现的地方加上where。

    当然,一般情况下是多表关联查询,如果SQL中已经出现过where子句,那么就没必要添加where 1=1了,例如:String sql=select * from table1,table2 where table1.id=table2.id

    如果你正在使用Hibernate、Mybatis等ORM框架的话,这样的问题不需要担心,这些ORM框架都进行了良好的处理。下面是Mybatis的一个配置样例:

    <select id="findContact" parameterType="Map" resultMap="ContactResult">

    select * from table1

    <where>

    <if test="cusId!=null and cusId!=' ' ">

    and cusId = #{cusId}

    </if>

    </where>

    </select>

    表拷贝

     

    所谓表的拷贝就是以一个表为源表,拷贝出一个数据和结构都一样的表,以Oracle为例,其他数据库语法自行参考,基本上大同小异。

    拷贝表(where 1=1永为true,拷贝表结构和数据)

    create   table_name   as   select   *   from   source_table   where   1=1;

    复制表结构(where 1<>1永为false,不拷贝数据,仅复制表结构)

    create   table_name   as   select   *   from   source_table   where 1<>1;

    有很多技术书籍,并没有使用where 1=1而是采用比较复杂的判断逻辑,从这一点也可以看出书本知识与实践的不同,在实践中,开发者会不断使用省事省力的方法,而不是拘泥于书本。

    where 1=1可能还有其他方面的应用案例,大家不妨留言告知,精选出来,让更多人学会使用1=1这个小的技巧。

    文字转自公众号作者:开发者圆桌   

  • 相关阅读:
    Python3-笔记-E-005-库-系统os
    Python3-笔记-E-004-库-日历calendar
    Python3-笔记-E-003-库-日期时间datatime
    Python3-笔记-E-002-库-Unix纪元时间戳time
    Python3-笔记-E-001-库-随机数random
    Python3-笔记-D-001-异常与断言
    Python3-笔记-C-007-函数-导入模块并调用
    【bzoj2199/Usaco2011 Jan】奶牛议会——2-sat
    【bzoj1578/Usaco2009 Feb】Stock Market 股票市场——完全背包
    【bzoj1741/Usaco2005 nov】Asteroids 穿越小行星群——最小割
  • 原文地址:https://www.cnblogs.com/sucks/p/8997312.html
Copyright © 2020-2023  润新知