egg:实现列表的模糊查询

Posted Ponnenult

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了egg:实现列表的模糊查询相关的知识,希望对你有一定的参考价值。

前言:

       列表数据系列增删改查的查询实现

实现步骤:

1、路由配置:

/**
 * 路由配置
 * @param app
 */
module.exports = app => {
    const { router, controller } = app;
    //--------------------------------------------------
    //用户信息
    app.get('/getUserList', controller.new.user.getUserList);


}

2、controller new user.js 中 写入查询方法  getUserList

/**
 *  用户信息路由
 * @param app
 * @returns {HomeController}
 */
const Controller = require('egg').Controller;
class NewsController extends Controller {
    async getUserList() {

    }
}

module.exports = NewsController;

3、安装配置mysql

4、模糊查询具体方法

async getUserList() {
    //查询库里的user表
    let params = this.ctx.query //获取路径后面的参数
    console.log('用户的参数:');
    console.log(params);
    let sql = 'select * from user'

    let content = [];//参数
    let isMore = false;//是否有多个查询参数
    /**
     * @模糊查询-量大的时候效率低
     * select * from user where name like ? % 内容 %
     * 在user表中全局查找name值 == 内容的
     * % 内容 % 全局查找内容
     *   内容 %  查找以 内容 开头的数据
     * */
    if(params.name){
      sql += " where name like ?";
      content.push( "%"+params.name+"%" );
      isMore = true;
    }
    if(params.age){
      if(isMore){//true代表有多个参数
        sql += "and age LIKE ?";//and是两个条件都必须满足,or是或的关系
      }else{
        sql += " WHERE age LIKE ?";
      }
      content.push( "%"+params.age+"%" )
      isMore = true;
    }
    if(params.address){
      if(isMore){//true代表有多个参数
        sql += "and address LIKE ?";//and是两个条件都必须满足,or是或的关系
      }else{
        sql += " WHERE address LIKE ?";
      }
      content.push( "%"+params.address+"%" )
      isMore = true;
    }
    if(params.phone){
      if(isMore){//true代表有多个参数
        sql += "and phone LIKE ?";//and是两个条件都必须满足,or是或的关系
      }else{
        sql += " WHERE phone LIKE ?";
      }
      content.push( "%"+params.phone+"%" )
    }

    //开启分页
    if(params.page || params.pageSize){
      let current = params.page;//当前页码
      let pageSize = params.pageSize;//一页展示多少条数据
      sql += " limit ?,?";
      content.push((current-1)*pageSize,parseInt(pageSize));
    }


    let userList= await this.app.mysql.query(
      sql,content
    );
    this.ctx.body = {
      code:200,
      masg:'success',
      data:userList
    };
  }

实现效果:

1、页面输入:http://127.0.0.1:7001/getUserList?page=1&pageSize=5

2、页面输入:http://127.0.0.1:7001/getUserList?name=t

 3、页面输入:http://127.0.0.1:7001/getUserList

 

 

 

以上是关于egg:实现列表的模糊查询的主要内容,如果未能解决你的问题,请参考以下文章

ajax实现模糊查询完成列表信息显示

mybatis模糊查询

Python 代码实现模糊查询

Msql使用concat函数实现关键字模糊查询(列表数据过滤-附前后端代码)

10 行 Python 代码实现模糊查询/智能提示

C# 模糊查询带出下拉列表的问题