简介 目录 评价 推荐
  • 时空摆渡者 2020-01-19

    SELECT * FROM tab_name WHERE 1=1 AND......

    向param中传递参数,如果是字符串类型的要加单引号

    like、=、like与通配符%%。这几对查询都可以

    0赞 · 0采集
  • 程序员慕虎 2019-11-27

    like用于模糊查询 

    通配符“%”代表任意长的多个字符,“_”代表任意1个字符

    List<Map<String,Object>>  List集合中存放Map集合

    查询条件+关系符号(=、>、<、in、like等)+查询值   来自主定义查询条件

    技巧:where后面添加 1=1

    http://img1.mukewang.com/5dde4762000139a309330361.jpg

    调用查询时可以一次设置多个Map对象放入List

    http://img2.mukewang.com/5dde47ab0001fa2105970290.jpg

    0赞 · 0采集
  • Uestc_L 2019-06-14

    查询条件用 List<Map<>> 来存储,使查询更加灵活,妙啊~

    0赞 · 0采集
  • 攻城车 2019-03-30

    like用于模糊查询 

    通配符“%”代表任意长的多个字符,“_”代表任意1个字符

    List<Map<String,Object>>

    List集合中存放Map集合,而这个Map对象的键是String类型,值是Object类型

    sql语句:通过append追加,(" and "+map.get("name")+" "+map.get("rela")+" "+map.get("value")+" "),即查询条件+关系(=、>、like)+值,这样就比较自主。

    技巧:where 1=1

    步骤:

    //创建List集合实例
    //得到访问数据库的连接对象实例
    //创建StringBuilder对象实例
    //向StringBuilder实例增加字符串
    //对sql语句进行预编译
    //进行sql语句的编译,并返回结果集
    //定义一个Goddess对象类型
    //通过得到的结果集对Goddess对象里的变量进行赋值
    //创建一个Goddess对象
    //赋值
    //把Goddess对象添加到result集合中
    //返回result集合,便于GoddessAction层调用Goddess层的get方法

    0赞 · 0采集
  • 慕仰mooc 2019-01-18

    使用query(List<Map<String,Object>> params) 和 where 1=1; jdbc传参数过多的时候:用List<Map<String,Object>> params双泛型作为参数:<br> if(params!=null&¶ms.siaze()>0){<br> for(int i =0;i<params.size();i++){<br> Map<String,Object> map = params.get(i);<br> sb.append("and "+map.get("name")+" "+map.get("relation")+" "+map.get("value")");<br> }<br> }<br> 接下来在Action(main方法)中:<br> GoddessDao g = new GoddessDao();<br> List<Map<String,Object>> params = new ArrayList<Map<String,Object>>;<br> Map<String,Object> param = new HashMap<String,Object>();<br> params.put("name","user_name");<br> params.put("relation","=");<br> params.put("value","'小美'");--------注意如果值是字符串需要加上单引号区分字符串<br> List<Goddess> result = g.query(parms);

    截图
    0赞 · 0采集
  • Kavin1 2018-12-04
    model层: bean类,dao类(主要是通过sql对数据增删改)
    截图
    0赞 · 0采集
  • 空城q 2018-11-23

           

           

                            Map集合怎么用                                                          

    已采纳回答 / 高数CC                            

    可以去看java入门第三季,里面的集合框架那一章


    0赞 · 0采集
  • 空城q 2018-11-21

    为什么一定要加空格?                                                          

               

    最新回答 / zxlolr123_                            

    已解决。为了不与前面的append(追加字符串)连在一起,导致不能识别。若前面的append的追加字符串最后加了空格 后面的可以选择不加。


    0赞 · 0采集
  • Escall 2018-10-25

    sql小技巧 在这里添加WHERE 1 = 1 恒等 表示这条语句永远可以通过 AND 连接到后面的字段


    0赞 · 3采集
  • 唐吉诃德丶 2018-06-11
    报错id不是遍历怎么回事,我对了一下代码一样的
    截图
    0赞 · 0采集
  • BirdOfV 2018-05-27

    @MySQL---List传参和StringBuilder的使用

    public List<Goddess> query(List<Map<String, Object>> params) throws Exception{//传入List集合参数
     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.setBirthday(rs.getDate("birthday"));
      g.setEmail(rs.getString("email"));
      g.setMobile(rs.getString("mobile"));
      g.setCreate_date(rs.getDate("create_date"));
      g.setCreate_user(rs.getString("create_user"));
      g.setUpdate_date(rs.getDate("update_date"));
      g.setUpdate_user(rs.getString("update_user"));
      g.setIsdel(rs.getInt("isdel"));
      
      result.add(g);//添加
     }
     return result;
    }
    0赞 · 1采集
  • 静灬心 2018-05-24

    public Goddess query(String name) throws SQLException{

    //实例化一个数据库对应实体类对象

    Goddess g = new Goddess();

    //通过connection获取数据库连接

    Connection conn = DBUtil.getConnection();

    //根据姓名查询对应信息

    String sql = "select * from imooc_goddess where user_name = ?";

    //预编译sql语句

    PreparedStatement pstm = conn.prepareStatement(sql);

    //对占位符参数进行赋值

    pstm.setString(1, name);

    //执行查询获取结果集

    ResultSet rs = pstm.executeQuery();

    //判断rs是否为空

    if(rs.next()){

    //通过实体类set方法根据查询结果为对象g赋值

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

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

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

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

    g.setBirthday(rs.getDate("birthday"));

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

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

    g.setCreate_date(rs.getString("create_date"));

    g.setCreate_user(rs.getString("create_user"));

    g.setUpdate_date(rs.getString("update_date"));

    g.setUpdate_user(rs.getString("update_user"));

    g.setIsdel(rs.getInt("isdel"));

    }

    //返回对象

    return g;

    }





    GoddessDao gs = new GoddessDao();

    System.out.println(gs.query("lucy"));


    0赞 · 0采集
  • qq_杀意隆_0 2018-05-05

    技巧  select * from tableName where 1=1 

    and ...

    and...

    截图
    0赞 · 0采集
  • 激光波 2018-04-17

    简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象(为什么?问问 Java 的设计者吧,为什么 String 不是原生类型呢?)因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始工作,那速度是一定会相当慢的。

    在执行速度方面的比较:StringBuilder > StringBuffer
    2. StringBuffer与StringBuilder,他们是字符串变量,是可改变的对象,每当我们用它们对字符串做操作时,实际上是在一个对象上操作的,不像String一样创建一些对象进行操作,所以速度就快了。
    3. StringBuilder:线程非安全的
      StringBuffer:线程安全的
    当我们在字符串缓冲去被多个线程使用是,JVM不能保证StringBuilder的操作是安全的,虽然他的速度最快,但是可以保证StringBuffer是可以正确操作的。当然大多数情况下就是我们是在单线程下进行的操作,所以大多数情况下是建议用StringBuilder而不用StringBuffer的,就是速度的原因。

    对于三者使用的总结:1.如果要操作少量的数据用 = String
           2.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder
           3.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer

    0赞 · 0采集
  • 慕粉1205231228 2018-04-06

    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.setBirthday(rs.getDate("birthday"));

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

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

    g.setCreate_date(rs.getDate("create_date"));

    g.setCreate_user(rs.getString("create_user"));

    g.setUpdate_date(rs.getDate("update_date"));

    g.setUpdate_user(rs.getString("update_user"));

    g.setIsdel(rs.getInt("isdel"));

    result.add(g);

    }

    return result;

    }



    0赞 · 0采集
  • qq_科麦艾罗_03928408 2018-03-20
    StringBuilder是一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。
    截图
    0赞 · 0采集
  • GYNexus 2018-01-24
    模糊查询:用%匹配 StringBuilder.append("SELECT * FROM table_name"); StringBuilder.append("WHERE user_name LIKE ? AND mobile LIKE ?"); .... ptmt.setString(1,"%"+name+"%"); ptmt.setString(2,"%"+mobile+"%");
    截图
    0赞 · 0采集
  • GYNexus 2018-01-24
    List<Map<String,Object>>逐步赋值
    0赞 · 0采集
  • GYNexus 2018-01-24
    sql小技巧 在这里添加WHERE 1 = 1 恒等 表示这条语句永远可以通过 AND 连接到后面的字段 如果没有恒等,去掉AND的同时,后面的语句便无法继续拼接 同时,假设没有集合,系统也可以执行WHERE 1=1 前面的语句,保证了语句的完整性 sb.append(" select * from imooc_goddess where 1=1"); if(params!=null&¶ms.size()>0){ for (Map<String, Object> map : params) { sb.append(" and " + map.get("name")+" "+map.get("rela") +" " + map.get("value") + " "); } }
    1赞 · 0采集
  • 阿西莫夫 2017-12-17
    sql小技巧 sb.append(" select * from imooc_goddess where 1=1"); if(params!=null&&params.size()>0){ for (Map<String, Object> map : params) { sb.append(" and " + map.get("name")+" "+map.get("rela") +" " + map.get("value") + " "); } }
    截图
    1赞 · 0采集
  • Sean_Chou 2017-12-08
    这里又犯了一个错误,耽误了好大会儿功夫: 创建了一个StringBuilder对象后(包含基本的SQL查询语句,但还没有拼接条件语句),就很着急地进行预编译了, PreparedStatement preStatement = conn.prepareStatement(sql.toString()); 结果导致后面的SQL语句再怎么拼接都是无效的了,因为前面的预编译行为已经把SQL语句加载到指定的程序里了,程序认为这就是你需要执行的完整的SQL语句,就等着使用execute()方法来执行了。 这里同前两节不一样,老师在使用参数占位符(“?”)的情况下实际上已经拼接完整了SQL语句,只是在预编译行为后又使用setXxx()方法设置了那些参数值。【要注意需要在SQL语句已经完整后才可以去预编译】
    0赞 · 1采集
  • 慕斯卡5122513 2017-11-09
    6.42分
    0赞 · 0采集
  • 呛水de鱼 2017-11-03
    like 模糊查询
    截图
    0赞 · 0采集
  • isaiasS 2017-10-28
    sql查询中的小技巧1=1的用法
    截图
    0赞 · 0采集
  • qq_坝上的草_0 2017-10-20
    在这里添加WHERE 1 = 1 恒等 表示这条语句永远可以通过 AND 连接到后面的字段 如果没有恒等,去掉AND的同时,后面的语句便无法继续拼接 同时,假设没有集合,系统也可以执行WHERE 1=1 前面的语句,保证了语句的完整性
    截图
    0赞 · 1采集
  • nize1989 2017-10-17
    上一条错了 ,like '%小美%'
    截图
    0赞 · 0采集
  • nize1989 2017-10-17
    上一条错了 ,like '%小美%'
    0赞 · 0采集
  • nize1989 2017-10-17
    like的用法 like %'小美'%
    截图
    0赞 · 0采集
  • nize1989 2017-10-17
    list里面有map,map有泛型时该怎么定义list
    截图
    0赞 · 0采集
  • nize1989 2017-10-17
    拼接sql时,为什么会有where1=1,因为and在后面如果不用1=1,where后面直接跟and,语法不通
    截图
    0赞 · 0采集
数据加载中...
开始学习 免费