java模糊查询代码_Java模糊查询方法详解
这篇文章主要为大家详细介绍了Java模糊查询方法的实现,实例教你如何用Java做模糊查询结果,感兴趣的小伙伴们可以参考一下
当我们需要开发一个方法用来查询数据库的时候,往往会遇到这样一个问题:就是不知道用户到底会输入什么条件,那么怎么样处理sql语句才能让我们开发的方法不管接受到什么样的条件都可以正常工作呢?这时where '1'='1'加上list就可以完美解决这个问题了,废话少说,上代码:
// 模糊查询方法
public List query() {
List 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 list1 = new ArrayList();
//使用 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对象
PreparedStatement pst = con.prepareStatement(sql);
// 设置?的值
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、以上代码操作一个Oracle数据库:
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是一个javabean
下面教大家如何用Java做模糊查询结果
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("//");
String name1=name.substring(str2+1,str1.length());
//截取最后一个"/"之前的所有字符串
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+"+");//正则表达式选取以你填的单词为首的所有查询结果
Matcher match=p.matcher((String)hashtable.get(j));
if (match.find())
{
s++;
//记录索引结点到数组中a[]中
a[s]=a[s]+m.getSize()-j;
System.out.println(hashtable.get(j));
System.out.println(a[s]);
}
}
//可以选择不多个选项(因为前面设置了JList可以多项选择)
list.setSelectedIndices(a);
}
catch (Exception e)
{
}
}
if (event.getSource()==btn4)
{
//int j;
//for (j=0;j
//{
//if (hashtable.containsValue(Integer.parseInt(j)+"*")
//hashtable.put(j,
//}
}
}
public void valueChanged(ListSelectionEvent event)
{
System.out.println(list.getSelectedIndex());
}
}
通过这两个实例大家是否对java模糊查询方法有了一定的了解,希望大家喜欢小编的文章,继续关注哦!
java模糊查询代码_Java模糊查询方法详解相关推荐
- oracle数据库按日期查询,关于Oracle数据库日期范围查询的两种实现方法详解,oracle详解...
关于Oracle数据库日期范围查询的两种实现方法详解,oracle详解 Oracle数据库日期范围查询有两种方式:to_char方式和to_date方式,接下来我们通过一个实例来介绍这一过程.我们假设 ...
- 安卓java安装apk代码_Android 通过代码安装 APK的方法详解
在 APK 开发中,通过 Java 代码来打开系统的安装程序以安装 APK 并不是什么难事,一般的 Android 系统都有开放这一功能. 但随着 Android系统版本的迭代,其对于权限的把控越来越 ...
- java 枚举 方法_Java枚举使用方法详解
在实际编程中,往往存在着这样的"数据集",它们的数值在程序中是稳定的,而且"数据集"中的元素是有限的. 例如星期一到星期日七个数据元素组成了一周的"数 ...
- java kaptcha_java相关:kaptcha验证码使用方法详解
java相关:kaptcha验证码使用方法详解 发布于 2020-6-7| 复制链接 摘记: 本文为大家分享了kaptcha验证码的使用方法,供大家参考,具体内容如下1.首先在pom.xml文件中导入 ...
- eclipse java 逆向工程_Mybatis 逆向工程的三种方法详解
Mybatis 逆向工程 逆向工程通常包括由数据库的表生成 Java 代码 和 通过 Java 代码生成数据库表.而Mybatis 逆向工程是指由数据库表生成 Java 代码. Mybaits 需要程 ...
- Java SHA-256加密的两种实现方法详解
利用Apache的工具类实现加密,使用commons-codec包中的DigestUtils算法工具类(入参支持字符串.字节数组.文件流等): maven: 1 2 3 4 5 <depende ...
- php实现手机归属地的查询、,PHP实现查询手机归属地的方法详解
本文介绍的是PHP实现查询手机归属地的方法,首先来看看手机归属地查询的类图: 后台 MobileQuery类调用: \libs\HttpRquest \libs\ImRedis (未使用) Api类调 ...
- in not 效率太慢_mysql in 子查询效率慢的优化方法详解
表结构如下,文章只有690篇. 文章表article(id,title,content) 标签表tag(tid,tag_name) 标签文章中间表article_tag(id,tag_id,artic ...
- java final修饰符_java final修饰符详解,final修饰方法
之前给大家讲过java final修饰符final修饰变量方面的知识,那么下面要继续给大家讲到的就是final修饰方法方面的知识,一起来了解一下吧. final修饰的方法不能被重写,假如因为一些原因, ...
最新文章
- C# 在PDF中绘制动态图章
- cacti监控服务器的数据迁移
- 一个方法搞定安卓路由跳转
- kafka 报错:kafka server:Message was too large ,server rejected it to avoid allocation
- 帆软报表(finereport) 饼图联动
- error PRJ0003 : 生成“C:\WINDOWS\system32\cmd.exe”时出错
- 基于html的明星网站
- matlab自由落体程序,基于MATLAB的自由落体运动仿真.pdf
- IMU与GPS传感器ESKF融合定位
- npn三种波形失真_三极管放大电路各点电压、电流波形图
- 微信小程序申请发布流程
- Python生成 一维条码
- 电脑开热点手机无法连接,无法启用 Internet 连接共享.为 LAN 连接配置的 IP 地址需要使用自动 IP 寻址.
- 计算机设备不能正常启动怎么办,电脑没有找到可引导设备怎么办
- php theexcerpt,the_excerpt()函数
- vsftpd 虚拟用户
- 2018年sfdc工作总结_前端绑数据 前端定义勿用驼峰命名法
- 关于 fir.im 你可能不知道的实用小工具
- 完美解决Xmind打开乱码的问题
- gif动图可以压缩大小吗?gif图片怎么压缩?