input输入值模糊查询

input输入后查询数据库给出对应提示


部分代码不能公布,大家可以参考思路

需求:如下

根据输入的值进行模糊查询,前面的select值也会限制模糊查询,如果前面没有选择,默认为所有(如果不需要这个限制可以删除)。效果如下(select标签动态获取参考上一篇)
在这里插入图片描述

代码实现

前端

<!-- 查询条件 -->
    <div class="control-group inline">
        <label class="inline" style="width: 80px;">选择产品:</label>
        <select id="product" name="product" class="input-medium" style="width: 190px;"></select>
        <input id="productId" type="hidden"/>
    </div>
    <div class="control-group inline">
        <label class="inline" style="width: 80px;">参考渠道:</label>
        <input id="channelCodeQuery" name="channelCode" type="text"
               style="width: 200px;"/>
        <input id="channelId" name="channelId" type="hidden"/>
    </div>
$("#channelCodeQuery").click(function () { //渠道号模糊匹配
      var productName = $('#product').val();
      fuzzyMatching('channelCodeQuery', false, productName);
});
/**
 * @desc 模糊匹配单个渠道ID和渠道名
 * @param    {String}  ele 元素id
 * @param    {boolean}  是否进行匹配
 * @param    {String}  productName 产品名称
 */
function fuzzyMatching(ele, flag, productName) {
    if (productName == undefined || productName == "undefined" || productName == "" || productName == "null") {
        productName = "";
    }

    $('#' + ele).empty();
    $.ajax({
        type: 'post',
        url: ctx + '/web/channel/getChannelIdAndName',
        async: false,
        dataType: 'json',
        data: "flag=" + flag + "&productName=" + productName + "&t=" + new Date().getTime(),
        success: function (data) {
            var availableTags = [];
            for (var i = 0; i < data.length; i++) {
                availableTags.push(data[i]);
            }
            $('#' + ele).autocomplete({
                source: availableTags
            });
        }
    });
}

后端【省略接口】

controller层

	/**
	 * 获取渠道ID和渠道名
	 */
	@RequestMapping(value = "/getChannelIdAndName", method = RequestMethod.POST)
	@ResponseBody
	public List<String> getChannelIdAndName(HttpServletRequest request,
			HttpServletResponse response, boolean flag, String productName) {
		// 产品处理(过滤用户可见的产品,数据权限)
		List<String> visibleProduct = new ArrayList<>();
		if (flag) {
			UserVO user = super.getUser();
			List<ProductVO> products = user.getProducts();
			if (products.size() == 0) {
				visibleProduct.add("");
			} else {
				if (org.apache.commons.lang.StringUtils.isBlank(productName)) {
					for (ProductVO p : products) {
						visibleProduct.add(p.getCode());
					}
				}
			}
		}

		if (org.apache.commons.lang.StringUtils.isNotBlank(productName)) {
			visibleProduct.add(productName);
		}

		List<ChannelEntity> beans = channelService.getChannelIdAndName(visibleProduct);

		List<String> vos = new ArrayList<String>();
		if (!super.isEmpty(beans)) {
			for (ChannelEntity bean : beans) {
				String channelId = bean.getChannelId();
				String channelName = bean.getChannelName();
				vos.add(channelId + "(" + channelName + ")");
			}
		}
		return vos;
	}

service层

	@Resource
	private IChannelReadDao channelReadDao;
	@Override
	public List<ChannelEntity> getChannelIdAndName(List<String> visibleProduct) {
		return channelReadDao.getChannelIdAndName(visibleProduct);
	}

dao层

	@Resource
	private SqlSession sqlsessionRead;
	
	@Override
	public List<ChannelEntity> getChannelIdAndName(List<String> visibleProduct) {
		Map<String, Object> params = new HashMap<String, Object>();
		params.put("visibleProduct", visibleProduct);
		return sqlsessionRead.selectList("read.channel.getChannelIdAndName",params);
	}

mapper

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="read.channel">

	<select id="getChannelsByChannelIds" parameterType="java.util.Map" resultType="channelEntity">
		select ChannelId, ChannelName from Channels where  isValid = 1  
		<if test="productId != null and productId != ''">
			and ProductId = #{productId} 
		</if>
		<if test="channelIds != null and channelIds.size()>0">
			AND ChannelId in
			<foreach item="channelId" collection="channelIds" open="(" separator="," close=")">
				#{channelId}
			</foreach>
		</if>
	</select>
</mapper>
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值