黑马程序员技术交流社区

标题: 带条件查询,,拼接sql语句部分代码及注意事项 [打印本页]

作者: 进阶的小巨人    时间: 2019-8-5 16:30
标题: 带条件查询,,拼接sql语句部分代码及注意事项
//带条件查询记录数
@Override
public int findTotalCount(Map<String, String[]> map) {
    //定义sql,需要动态生成,定义1=1为了更好的拼接字符串
    String sql = "select count(*) from user where 1 = 1 ";
    StringBuilder sb = new StringBuilder(sql);
    //创建一个放value的集合
    List<Object> params = new ArrayList<>();
    Set<String> keys = map.keySet();
    //遍历,得到每一个属性,name,address,email,知道他们的值只有一个,所以取索引0的值
    for (String key : keys) {
        String value = map.get(key)[0];
        //value不能是"" value 不能null,key 不能currentPage
        if (value != null && !value.equals("") && !key.equals("currentPage")) {
            //拼接一定要有空格,不加会出现 where 1=1and key,这种语句错误
            sb.append(" and " + key + " like ? ");
            //不能有空格,不然出现" %vlaue",会查不到
            params.add("%" + value + "%");
        }
    }    return jdbcTemplate.queryForObject(sb.toString(), Integer.class, params.toArray());
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2