(一)where 1=1的用法
在写项目中需要建立一个动态的sql,这时可以使用where 1=1.
实例:
- String sql=”select name,age from usertable where”;//这里我们没有加where 1=1
- if(!"".equals(user.getName())&&user.getName()!=null){ //这是表示用户的名字不为null就在sql中添加name条件
- sql=sql+“name='“+user.getName().trim()+"'"; //注意sql查询语句,对于字符串要加上单引号,即name=‘xiaoming’,不要落下单引号
- }
- if(!"".equals(user.getAge())&&user.getAge()!=null){
- sql=sql+“and age='“+user.getAge().trim()+"'";
- }
实例说明:
1、要注意Object的equals()方法容易抛出空指针异常。应该使用常量或者有确定值的对象来调用equals()方法。比如:"".equals(user.getAge())
上面的sql语句我们没有添加where 1=1,当两个if语句都不成立时,sql=select name,age from usertable where 显然这样的查询语句会报错。因此,该语句就是一条错误的语句,肯定不能被执行,不仅报错,同时还不会查询到任何数据。
当我们加上where 1=1 时,表示where 1=1 条件始终成立(为true)。sql语句在两个if语句不成立时,sql=select name,age from usertable where 1=1,因此,该条语句语法正确,能够被正确执行,它的作用相当于:sql=select name,age from usertable ,即返回表中所需数据。
(二)where 1=0的用法
where 1=0;该条件始终为false,结果不会返回任何数据,只有表结构,可用于快速建表
"SELECT * FROM strName WHERE 1 = 0"; 该select语句主要用于读取表的结构而不考虑表中的数据,这样节省了内存,因为可以不用保存结果集。
create table newtable as select * from oldtable where 1=0; 创建一个新表,而新表的结构与查询的表的结构是一样的。
(三)String类的常用方法
1、equalsIgnoreCase(String anotherString):将此
String
与另一个 String
比较,不考虑大小写。
2、
trim(): 返回字符串的副本,忽略前导空白和尾部空白。
3、toUpperCase():使用默认语言环境的规则将此 String
中的所有字符都转换为大写。
4、substring(int beginIndex, int endIndex): 返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的 beginIndex
处开始,直到索引 endIndex - 1
处的字符。(字符串的序号是从0开始)
5、split(String regex, int limit)
: 根据匹配给定的正则表达式来拆分此字符串。其中limit可以省略。其中当limit<0时,那么模式将被应用尽可能多的次数。返回一个数组
例如:字符串 "boo:and:foo" 使用这些参数可生成以下结果:
Regex | Limit | 结果 |
---|---|---|
: | 2 | { "boo", "and:foo" } |
: | 5 | { "boo", "and", "foo" } |
: | -2 | { "boo", "and", "foo" } |
7、toUpperCase():使用默认语言环境的规则将此字符串所有字符都转化为大写
equalsIgnoreCase(String anotherString) |