关于java查询语句 如何简化的问题

    public static void main(String[] args) {

        List<Map<String, Object>> params = new ArrayList<Map<String,Object>>();

        Map<String, Object> param = new HashMap<String, Object>();

        

        //查询条件

        param.put("k", "user_name");

        param.put("v", "'小美'");

        param.put("rela", "=");

        params.add(param);


        //查询条件

        param = new HashMap<String, Object>();

        param.put("k", "mobile");

        param.put("v", "18712345678");

        param.put("rela", "=");

        params.add(param);

        

        //查询条件 

        param = new HashMap<String, Object>();

        param.put("k", "age");

        param.put("v", 33);

        param.put("rela", "=");

        params.add(param);

        

        //如果我查询条件很多,这里要写一堆param吗?怎么写可以简洁一点??

        query(params);

    }


    public List<Goddess> query(List<Map<String, Object>> params) throws Exception{

        List<Goddess> result=new ArrayList<Goddess>();

        Connection conn=DBUtil.getConnection();

        StringBuilder sb=new StringBuilder();

        sb.append("select * from imooc_goddess where 1=1 ");

        

        if(params!=null&&params.size()>0){

            for (int i = 0; i < params.size(); i++) {

                Map<String, Object> map=params.get(i);

                sb.append(" and  "+map.get("name")+" "+map.get("rela")+" "+map.get("value")+" ");

            }

        }

        

        PreparedStatement ptmt=conn.prepareStatement(sb.toString());

        

        System.out.println(sb.toString());

        ResultSet rs=ptmt.executeQuery();

        

        Goddess g=null;

        while(rs.next()){

            g=new Goddess();

            g.setId(rs.getInt("id"));

            g.setUser_name(rs.getString("user_name"));

            g.setAge(rs.getInt("age"));

            g.setSex(rs.getInt("sex"));

            g.setEmail(rs.getString("email"));

            g.setMobile(rs.getString("mobile"));

            result.add(g);

        }

        return result;

    }


子衿沉夜
浏览 412回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java