欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java模糊查詢方法詳解

 更新時(shí)間:2016年04月29日 09:15:40   投稿:lijiao  
這篇文章主要為大家詳細(xì)介紹了Java模糊查詢方法的實(shí)現(xiàn),實(shí)例教你如何用Java做模糊查詢結(jié)果,感興趣的小伙伴們可以參考一下

當(dāng)我們需要開發(fā)一個(gè)方法用來查詢數(shù)據(jù)庫的時(shí)候,往往會(huì)遇到這樣一個(gè)問題:就是不知道用戶到底會(huì)輸入什么條件,那么怎么樣處理sql語句才能讓我們開發(fā)的方法不管接受到什么樣的條件都可以正常工作呢?這時(shí)where '1'='1'加上list就可以完美解決這個(gè)問題了,廢話少說,上代碼:

// 模糊查詢方法
  public List<person> query() {
    List<person> list = new ArrayList<>();
    Connection con = null;
    Scanner sc = new Scanner(System.in);
    System.err.println("enter name:");
    String name = sc.nextLine();
    System.err.println("enter id:");
    String id = sc.nextLine();
    System.err.println("enter tel:");
    String tel = sc.nextLine();
    System.err.println("enter sex:");
    String sex = sc.nextLine();
    String sql = "select id,name,tel,sex from students "
        // 技巧在此,合理拼接字符串
        + "where 1=1";
    List<Object> list1 = new ArrayList<Object>();
    //使用 commons-lang包
    if (StringUtils.isNotEmpty(name)) {
      sql += " and title like ?";
      list1.add("%" + name + "%");
    }

    if (!StringUtils.isEmpty(id)) {
      sql += " and content like ?";
      list1.add("%" + id + "%");
    }

    if (!StringUtils.isEmpty(tel)) {
      sql += " and addr like ?";
      list1.add("%" + tel + "%");
    }
    try {
      con = DSUtlis.getConnection();
      // SQL語句組成完成以后,就生成pst對(duì)象
      PreparedStatement pst = con.prepareStatement(sql);
      // 設(shè)置?的值
      for (int i = 0; i < list1.size(); i++) {
        pst.setObject(i + 1, list.get(i));
      }
      ResultSet rs = pst.executeQuery();
      while (rs.next()) {
        person p = new person();
        p.setId(rs.getString("id"));
        p.setName(rs.getString("name"));
        p.setTel(rs.getString("tel"));
        p.setSex(rs.getString("sex").equals("1") ? "男" : "女");
        list.add(p);
      }
      rs.close();
      pst.close();
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      try {
        con.close();
      } catch (SQLException e) {
        e.printStackTrace();
      }
    }
    return list;
  }

注解:
1、以上代碼操作一個(gè)Oracle數(shù)據(jù)庫:

create table students(
id varchar(32),
name varchar(30),
tel varcher(15),
sex char(1),
constraint stud_pk primary key(id)
);

2、使用工具類獲取Connection
3、proson是一個(gè)javabean

下面教大家如何用Java做模糊查詢結(jié)果

import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.filechooser.*;
import java.util.*;
import java.util.regex.*;

 

//模糊查詢

public class Media
{
public static void main(String args[])
{
JFrame frame=new MediaFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}

class MediaFrame extends JFrame implements ActionListener,ListSelectionListener
{
private JList list;
private DefaultListModel m;
private JButton btn;
private JButton btn1;
private JButton btn2;
private JButton btn3;
private JButton btn4;
private JFileChooser chooser;
private JTextField textField;
Map hashtable=new Hashtable();
private int i=0;
int s=0;

public MediaFrame()
{
setTitle("Media");
setSize(600,500);

JMenuBar menu=new JMenuBar();
setJMenuBar(menu);

JLabel label=new JLabel("查詢的歌曲名:");
textField=new JTextField();
menu.add(label);
menu.add(textField);

JToolBar TB=new JToolBar();

m=new DefaultListModel();

list=new JList(m);
list.setFixedCellWidth(100);
list.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
list.addListSelectionListener(this);

JScrollPane pane=new JScrollPane(list);

chooser=new JFileChooser();

btn=new JButton("添加歌曲");
btn.addActionListener(this);

btn1=new JButton("刪除歌曲");
btn1.addActionListener(this);

btn2=new JButton("清空列表");
btn2.addActionListener(this);

btn3=new JButton("查找曲目");
btn3.addActionListener(this);

btn4=new JButton("排序");
btn4.addActionListener(this);

JPanel panel=new JPanel();

panel.setLayout(new GridLayout(5,1));

panel.add(btn);
panel.add(btn1);
panel.add(btn2);
panel.add(btn3);
panel.add(btn4);

TB.setLayout(new GridLayout(1,2));

TB.add(pane);
TB.add(panel);

add(TB,BorderLayout.WEST);
}

public void actionPerformed(ActionEvent event)
{

if (event.getSource()==btn)
{
i++;
chooser.setCurrentDirectory(new File("."));

int result=chooser.showOpenDialog(MediaFrame.this);

if (result==JFileChooser.APPROVE_OPTION)
{
System.out.println(i);

String name=chooser.getSelectedFile().getPath();

String str1=name;

int str2=name.lastIndexOf("http://");

String name1=name.substring(str2+1,str1.length());

//截取最后一個(gè)"/"之前的所有字符串

 

int str3=name1.lastIndexOf(".");

String name2=name1.substring(0,str3);

//截取"."后面所有字符串后綴

 

hashtable.put(i,name2);

m.add(0,hashtable.get(i));

System.out.println(hashtable);
}
}

if (event.getSource()==btn1)
{
m.removeElement(list.getSelectedValue());
System.out.println(m);
}

if (event.getSource()==btn2)
{
System.out.println(m);
i=0;
hashtable.clear();
m.clear();
}

if (event.getSource()==btn3)
{
int [] a=new int[m.getSize()];

try
{
int j;
String name=textField.getText();

System.out.println(m.getSize());

for (j=1;j<=m.getSize();j++)
{
Pattern p=Pattern.compile("^"+name+"+");//正則表達(dá)式選取以你填的單詞為首的所有查詢結(jié)果
Matcher match=p.matcher((String)hashtable.get(j));

if (match.find())
{
s++;

 

//記錄索引結(jié)點(diǎn)到數(shù)組中a[]中
a[s]=a[s]+m.getSize()-j;
System.out.println(hashtable.get(j));
System.out.println(a[s]);
}

}

 

//可以選擇不多個(gè)選項(xiàng)(因?yàn)榍懊嬖O(shè)置了JList可以多項(xiàng)選擇)

list.setSelectedIndices(a);

}
catch (Exception e)
{

}

}

if (event.getSource()==btn4)
{

//int j;
//for (j=0;j<m.length();j++)
//{
//if (hashtable.containsValue(Integer.parseInt(j)+"*")
//hashtable.put(j,
//}

}

}

public void valueChanged(ListSelectionEvent event)
{
System.out.println(list.getSelectedIndex());
}

}

通過這兩個(gè)實(shí)例大家是否對(duì)java模糊查詢方法有了一定的了解,希望大家喜歡小編的文章,繼續(xù)關(guān)注哦!

相關(guān)文章

  • Java中的位運(yùn)算符全解

    Java中的位運(yùn)算符全解

    這篇文章主要為大家詳細(xì)介紹了Java中的位運(yùn)算符,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Java解決刪除字符使頻率相同問題

    Java解決刪除字符使頻率相同問題

    給你一個(gè)下標(biāo)從0開始的字符串 word ,字符串只包含小寫英文字母,你需要選擇一個(gè)下標(biāo)并刪除下標(biāo)處的字符,使得word中剩余每個(gè)字母出現(xiàn)頻率相同,本文給大家介紹了Java解決刪除字符使頻率相同問題,需要的朋友可以參考下
    2024-02-02
  • Spring IOC與DI核心深入理解

    Spring IOC與DI核心深入理解

    IOC也是Spring的核心之一了,之前學(xué)的時(shí)候是采用xml配置文件的方式去實(shí)現(xiàn)的,后來其中也多少穿插了幾個(gè)注解,但是沒有說完全采用注解實(shí)現(xiàn)。那么這篇文章就和大家分享一下,全部采用注解來實(shí)現(xiàn)IOC+DI
    2023-02-02
  • Java基于虹軟實(shí)現(xiàn)人臉識(shí)別、人臉比對(duì)、活性檢測(cè)等

    Java基于虹軟實(shí)現(xiàn)人臉識(shí)別、人臉比對(duì)、活性檢測(cè)等

    本文主要介紹了Java基于虹軟實(shí)現(xiàn)人臉識(shí)別、人臉比對(duì)、活性檢測(cè)等,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 詳細(xì)解讀Java編程中面向字符的輸入流

    詳細(xì)解讀Java編程中面向字符的輸入流

    這篇文章主要介紹了Java中面向字符的輸入和輸出流,是Java入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-10-10
  • 使用InputStream的available()能否用來判斷當(dāng)前流是否讀取到文件

    使用InputStream的available()能否用來判斷當(dāng)前流是否讀取到文件

    這篇文章主要介紹了使用InputStream的available()能否用來判斷當(dāng)前流是否讀取到文件問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 解決@Autowired注入static接口的問題

    解決@Autowired注入static接口的問題

    這篇文章主要介紹了解決@Autowired注入static接口的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • SpringBoot實(shí)現(xiàn)token登錄的示例代碼

    SpringBoot實(shí)現(xiàn)token登錄的示例代碼

    在進(jìn)行登錄驗(yàn)證時(shí),我們需要session或cookie會(huì)話進(jìn)行驗(yàn)證,當(dāng)我們脫離瀏覽器用app等向服務(wù)端發(fā)請(qǐng)求就沒有session和cookie機(jī)制,這時(shí)我們就需要使用token令牌進(jìn)行登錄驗(yàn)證,本文就詳細(xì)的介紹一下,感興趣的可以了解一下
    2022-03-03
  • Java動(dòng)態(tài)代理實(shí)現(xiàn)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java動(dòng)態(tài)代理實(shí)現(xiàn)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    動(dòng)態(tài)代理作為代理模式的一種擴(kuò)展形式,廣泛應(yīng)用于框架(尤其是基于AOP的框架)的設(shè)計(jì)與開發(fā),本文將通過實(shí)例來講解Java動(dòng)態(tài)代理的實(shí)現(xiàn)過程
    2017-08-08
  • springboot項(xiàng)目配置context path失效的問題解決

    springboot項(xiàng)目配置context path失效的問題解決

    本文主要介紹了springboot項(xiàng)目配置context path失效的問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04

最新評(píng)論