mysql实现搜索_【未完】Java+MySQL简单的实现一个非常简单的搜索功能

本文档描述了如何使用JavaWeb、MySQL、Ajax技术实现一个简单的搜索功能。首先创建MySQL数据库和表,填充测试数据。接着利用已有的SSM(Spring、SpringMVC、MyBatis)框架,编写DAO、Service、Mapper等组件,实现通过关键词查询数据库并去重显示结果。最后通过测试类验证功能。这是一个初步实现,未来计划增加网络爬虫和优化查询算法。
摘要由CSDN通过智能技术生成

暂时搁浅。。。

因为一个小想法,花一点时间来实现一个简单的搜索,功能非常简单,第一次实现,以后再慢慢完善,增加网络爬虫获取数据源,优化查询算法等等

首先想到需要用到技术:

JavaWeb 实现

MySQL 存储数据源

Ajax 无刷新显示检索数据

1.建立数据源

新建一个数据库search,新建一张表search_source,编写一些测试数据

# Host: 127.0.0.1 (Version: 5.5.40)

# Date: 2017-08-07 11:05:49

# Generator: MySQL-Front 5.3 (Build 4.120)

/*!40101 SET NAMES utf8 */;

CREATE TABLE `search_source` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`iteam` varchar(255) DEFAULT NULL COMMENT "待检所内容",

`status` int(1) NOT NULL DEFAULT "0" COMMENT "状态",

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT="检索数据源";

#

# Data for table "search_source"

#

INSERT INTO `search_source` VALUES

(1,"我喜欢学习Java",0),

(2,"我喜欢学习python",0),

(3,"我喜欢学习PHP",0),

(4,"我喜欢学习MySQL",0),

(5,"我喜欢学习编程",0),

(6,"我喜欢学习学习",0);

2.编写实现项目

在这里我们使用之前搭建好的SSM框架来实现,不用用就太浪费了,哈哈哈

没有搭建好SSM的请点击

项目思路就是然后在网页输入:学习+空格+Java,字符串通过空格切割,得到‘学习’,‘Java’两个关键词,然后拿着关键词去数据库匹配 select * from 表名 where 字段名 like "values" 得到相关的数据存入链表中,使用Set来达到去重的目的,在页面进行展示数据。

编写Java代码

新建cn.SpringDemo.model.Datas.SearchDAO.java

package cn.SpringDemo.dao;

import java.util.List;

import cn.SpringDemo.model.Datas;

/**

* 搜索DAO层

* @author yezi

*

*/

public interface SearchDAO {

/**

* 通过录入关键词获取匹配数据

*/

public List getAllDatasbyKey(String key);

}

新建mapper/SearchMapper.xml

select * from search_source where iteam like #{key}

新建cn.SpringDemo.service.SearchService.java

package cn.SpringDemo.service;

import java.util.Set;

import cn.SpringDemo.model.Datas;

import cn.SpringDemo.model.result.ResultDO;

/**

* 搜索服务接口层

* @author yezi

*

*/

public interface SearchService {

/**

* 通过录入字符串获取匹配数据

*/

public ResultDO> getAllDatasbyKeys(String keys);

}

新建cn.SpringDemo.service.impl.SearchServiceImpl.java

package cn.SpringDemo.service.impl;

import java.util.HashSet;

import java.util.List;

import java.util.Set;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

import cn.SpringDemo.dao.SearchDAO;

import cn.SpringDemo.model.Datas;

import cn.SpringDemo.model.result.ResultDO;

import cn.SpringDemo.service.SearchService;

/**

* 搜索服务实现层

* @author yezi

*

*/

@Service("searchService")

public class SearchServiceImpl implements SearchService{

@Autowired

private SearchDAO searchDAO;

//通过录入字符串获取匹配数据

@Override

public ResultDO> getAllDatasbyKeys(String keys) {

ResultDO> datasDo = new ResultDO<>();

Set datas = new HashSet<>();

//判断数据的有效性

if(keys==null||keys.equals("")){

return datasDo;

}

//通过空格切割字符串

String [] key = keys.split(" ");

//循环获取数据

for (String k : key) {

List data = searchDAO.getAllDatasbyKey("%"+k+"%");

System.out.println(k+"个数"+data.size());

if(data!=null&&!data.isEmpty()){

for (Datas d : data) {

datas.add(d.getIteam());

}

}

}

if(datas.isEmpty()){

return datasDo;

}

datasDo.setResult(datas);

return datasDo;

}

}

编写测试类test/UserTest.java

package cn.SpringDemo.test;

import java.util.List;

import java.util.Set;

import org.junit.Before;

import org.junit.Test;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import cn.SpringDemo.model.User;

import cn.SpringDemo.model.result.ResultDO;

import cn.SpringDemo.service.SearchService;

import cn.SpringDemo.service.UserService;

public class UserTest {

private UserService userService;

private SearchService searchService;

@Before

public void before() {

@SuppressWarnings("resource")

ApplicationContext context = new ClassPathXmlApplicationContext(

new String[] { "classpath:conf/spring.xml", "classpath:conf/spring-mybatis.xml" });

userService = (UserService) context.getBean("userService");

searchService = (SearchService) context.getBean("searchService");

}

/**

* 获取结果集

*/

@Test

public void getAllDatasbyKeys() {

String keys = "Java 编程";

ResultDO> keyDO = searchService.getAllDatasbyKeys(keys);

Set datas = keyDO.getResult();

System.out.println(keys+"个数"+datas.size());

System.out.println("----------查询结果-----------------------");

for (String data : datas) {

System.out.println(data);

}

}

}

跑一下测试代码

Fn1KS7v9mdZtehl5hKeX175oiJoU

接下来实现页面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值