模糊查询-带分页

模糊查询-带分页

async function getStusByPage(req, res, next) {
  let {pageindex=1,pagesize=3,key}=req.query;
  //模糊搜索
  let reg=new RegExp(key); //相当于 {$regex:/关键词/}
  //获取分页数组
  let stus = await stusModel.find({name:reg}).skip((pageindex-1)*pagesize).limit(pagesize)  
  //获取总条数
  let count=await stusModel.find({name:reg}).count();
  //计算总页数
  let pagecount= Math.ceil(count/pagesize)
  res.send({
    code: 200,
    page:{
      stus,
      pageindex:pageindex-0,
      pagecount:pagecount-0,
      count:count-0
    }
  })
}

关联查询

为了解决冗余问题,我们会建立两张表,但是有弊端,前端查询需要先查询学生,再查询班级,很不方便,因此,我们得使用mongoose提供的关联查询来解决:前端以后也只需要发送一次请求即可–当查询学生时,mongoose能够自动关联查询班级

stu     
_id  sname   age    clas_id
                     班级编号


clas
_id  cname  rules  address
班级编号

配置

clasModel.js

//获得model对象
let mongoose=require('mongoose');
let Schema=mongoose.Schema;
let clasSchema=new Schema({
    cname:String,
    rules:String,
    address:String
},{versionKey:false})

let clasModel=mongoose.model("clasModel",clasSchema,"clas")

//暴露 
module.exports=clasModel

stusModel.js

let mongoose=require('mongoose');
let Schema=mongoose.Schema;
let stusSchema=new Schema({
    name:String,
    age:Number,
    gender:Number,
    hobby:Array,
    head:String,
    //关联查询班级对象
    clas_id:{
        type:Schema.Types.String,
        ref:"clasModel"//对应班级Model中的关联名字
    }
},{versionKey:false})
let stusModel=mongoose.model("stusModel",stusSchema,"stus")
module.exports=stusModel

stusController.js

//populate("学生表中的关联字段")
let stus = await stusModel.find({name:reg}).skip((pageindex-1)*pagesize).limit(pagesize).populate("clas_id")

复习iframe

left.html:

    <a href="./right1.html" target="xx">r1</a>
    <br>
    <a href="./right2.html" target="xx">r2</a>
    <br>
    <a href="./right3.html" target="xx2">r3</a>

main.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="head">
        <iframe name="xx2" src="./head.html" frameborder="0" scrolling="no" width="100%" height="100px"></iframe>
    </div>

    <div id="main" style="display: flex;">

        <div id="left">
            <iframe src="./left.html" frameborder="0" scrolling="no" width="20%"></iframe>
        </div>

        <div id="right" style="margin-left:-200px;width: 600px;">
            <iframe src="./right1.html" name="xx" frameborder="0" scrolling="no" width="100%"></iframe>
        </div>

    </div>
</body>
</html>

跳出iframe

方式1:标签

 <a href="./login.html" target="_parent">注销2</a>

方式2:js

parent.location.href="./login.html"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Mybatis-Plus进行分页模糊查询,可以通过以下步骤实现: 1. 在Mapper接口定义分页查询方法,使用@Select注解指定SQL语句,使用@Param注解指定参数。 2. 在SQL语句使用LIKE关键字进行模糊查询,使用LIMIT关键字进行分页查询。 3. 在Service层调用Mapper接口定义的分页查询方法,传入分页参数和模糊查询参数。 4. 在Controller层接收前端传来的分页参数和模糊查询参数,调用Service层的方法进行查询。 5. 将查询结果封装成Page对象返回给前端。 示例代码: Mapper接口: @Mapper public interface UserMapper extends BaseMapper<User> { @Select("SELECT * FROM user WHERE name LIKE CONCAT('%',#{name},'%') LIMIT #{offset},#{limit}") List<User> selectUserList(@Param("name") String name, @Param("offset") int offset, @Param("limit") int limit); } Service层: @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public Page<User> getUserList(String name, int pageNum, int pageSize) { Page<User> page = new Page<>(pageNum, pageSize); List<User> userList = userMapper.selectUserList(name, page.getOffset(), page.getLimit()); page.setRecords(userList); return page; } } Controller层: @RestController @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @GetMapping("/list") public Page<User> getUserList(@RequestParam(required = false) String name, @RequestParam(defaultValue = "1") int pageNum, @RequestParam(defaultValue = "10") int pageSize) { return userService.getUserList(name, pageNum, pageSize); } }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值