模糊查询
select * from tablename where fieldname like '&&'
正常SQL语句是这样写的,如果换成预处理语句(preparestatement),即使用JDBC的方法,使用占位符?会更好String sql = "select * from tablename where fieldname like ?"; ... statement.setString(1, name==null?"%%":"%"+name+"%");
注意:本来正常SQL语句中,like 后面是要跟一个字符串的,要用“”或者‘’括起来,表明是字符串,而在预处理语句中,因为使用serString来设置占位符时,就已经说明值为字符串,所以预处理语句sql的占位符就不用括起来了。而判断name是否为null是因为如果name的值是通过getAttribute获取表单信息得来的话,就有可能发生用户直接访问页面,没有进行表单提交操作的情况,此时name的值就为null,而如果是进行表单提交,就算该栏中没有填写信息,name的值也为空串“”,不会是null。所以这里主要是考虑到提交表单来获取值的情况。
日期查询
String sql = "select createTime" + ",updateTime from tablename where datediff(now(),createTime)<=2 order by " + " createTime desc limit 2";
运用了datediff函数,通过now()的值跟createTime的值相减得到两者之差,数值只是day单位,不是minute单位。而limit 2其实不是用来分页,而是选取数据中前两位的值,因此当limit跟order by配合使用就能产生 选取前几位 的效果