返回顶部
首页 > 资讯 > 后端开发 > Python >Bean Searcher配合SpringBoot的使用详解
  • 541
分享到

Bean Searcher配合SpringBoot的使用详解

2024-04-02 19:04:59 541人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

先吐槽一下,现在的Bean Searcher操作手册的指引弱的可怜…对我这样的小白及其不友好 话不多说直入主题 1、首先肯定是得引入依赖 <dependency&

先吐槽一下,现在的Bean Searcher操作手册的指引弱的可怜…
对我这样的小白及其不友好

话不多说直入主题

1、首先肯定是得引入依赖

<dependency>
            <groupId>com.ejlchina</groupId>
            <artifactId>bean-searcher-boot-starter</artifactId>
            <version>${searcher.version}</version>
        </dependency>

2、再配置一下设置

bean-searcher:
  params:
    pagination:
      start: 1

其他的依赖、数据源啥的比较常用这里就不展出

3、然后就是创建实体类

由于我为了快速就用了之前使用mybatis做持久化的一个项目,所以会有Mapper啥的,不过看官方文档和Demo上的例子,好像也没用到所以应该没影响

!!!为了直观我直接Copy源代码上来,可以先跳过这个源码直接看重点介绍

package com.so2.core.model.entity;
import com.baomidou.mybatisplus.annotation.*;
import java.io.Serializable;
import java.util.Date;
import com.ejlchina.searcher.bean.BeanAware;
import com.ejlchina.searcher.bean.DbField;
import com.ejlchina.searcher.bean.SearchBean;
import lombok.Data;

@TableName(value ="user")
@Data
@SearchBean( tables = "user")
public class User implements Serializable, BeanAware {
    
    @TableId(type = IdType.AUTO)
    @DbField("id")
    private Integer id;
    
    @DbField("name")
    private String name;
    
    @DbField("userId")
    private Integer userid;
    
    @DbField("email")
    private String email;
    
    @DbField("passWord")
    private String password;
    
    @DbField
    private Byte delflag;
    
    @DbField("role")
    private Byte role;
    
    @DbField("reGISterTime")
    private Date registertime;
    @Override
    public boolean equals(Object that) {
        if (this == that) {
            return true;
        }
        if (that == null) {
            return false;
        }
        if (getClass() != that.getClass()) {
            return false;
        }
        User other = (User) that;
        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
            && (this.getName() == null ? other.getName() == null : this.getName().equals(other.getName()))
            && (this.getUserid() == null ? other.getUserid() == null : this.getUserid().equals(other.getUserid()))
            && (this.getEmail() == null ? other.getEmail() == null : this.getEmail().equals(other.getEmail()))
            && (this.getPassword() == null ? other.getPassword() == null : this.getPassword().equals(other.getPassword()))
            && (this.getDelflag() == null ? other.getDelflag() == null : this.getDelflag().equals(other.getDelflag()))
            && (this.getRole() == null ? other.getRole() == null : this.getRole().equals(other.getRole()))
            && (this.getRegistertime() == null ? other.getRegistertime() == null : this.getRegistertime().equals(other.getRegistertime()));
    }
    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
        result = prime * result + ((getName() == null) ? 0 : getName().hashCode());
        result = prime * result + ((getUserid() == null) ? 0 : getUserid().hashCode());
        result = prime * result + ((getEmail() == null) ? 0 : getEmail().hashCode());
        result = prime * result + ((getPassword() == null) ? 0 : getPassword().hashCode());
        result = prime * result + ((getDelflag() == null) ? 0 : getDelflag().hashCode());
        result = prime * result + ((getRole() == null) ? 0 : getRole().hashCode());
        result = prime * result + ((getRegistertime() == null) ? 0 : getRegistertime().hashCode());
        return result;
    }
    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append(getClass().getSimpleName());
        sb.append(" [");
        sb.append("Hash = ").append(hashCode());
        sb.append(", id=").append(id);
        sb.append(", name=").append(name);
        sb.append(", userid=").append(userid);
        sb.append(", email=").append(email);
        sb.append(", password=").append(password);
        sb.append(", delflag=").append(delflag);
        sb.append(", role=").append(role);
        sb.append(", registertime=").append(registertime);
        sb.append("]");
        return sb.toString();
    }
    @Override
    public void afterAssembly() {
        System.out.println("--------使用了afterAssembly方法----------");
    }
}

创建实体类需要注意几点

  1. 类,要在类名加上 @SearchBean( tables = “定义表名”) 注解,而且必须加上表名,我之前不加表名会报错,而且加上表名在进行多表查询时才能复用
  2. 实现接口,必须要实现 BeanAware或者ParamAware接口,重写的方法可以不做任何改动。
  3. 字段,必须要在需要得到响应的字段或查询的字段上加上**@DbField(“自定义字段名”)** 注解,而且必须指定字段名,且加上注解的字段必须 大于0 | 大于被查询数
  4. get set,加上LomBok的 @Data 注解,或使用idea的快速生成

4、最后就是编写Controller层

先粘上源码
同上,也可先跳过源码直接看注意事项

package com.so2.core.controller;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ejlchina.searcher.MapSearcher;
import com.ejlchina.searcher.SearchResult;
import com.ejlchina.searcher.Searcher;
import com.ejlchina.searcher.util.MapUtils;
import com.GitHub.xiaoymin.knife4j.annotations.apiSupport;
import com.so2.core.service.impl.UserServiceImpl;
import com.so2.core.model.entity.User;
import com.so2.core.base.BaseResponse;
import com.so2.core.base.ResultUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.apache.catalina.util.RequestUtil;
import org.apache.ibatis.util.MapUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.WEB.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.Http.httpservletRequest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Api(tags = "测试接口类")
@ApiSupport(author = "Lynn", order = 07)
@RestController
@RequestMapping("/test")
public class HealthController {
	//MyBatis
    @Resource
    private UserServiceImpl user;
	//注入MapSearcher
    @Autowired
    private MapSearcher mapSearcher;
//	先使用MyBatis方法做个对照组	
//	提示:BaseResponse是我写的响应类,而ResultUtils是返回工具类,返回的结果包含了响应码、响应数据、控制台提示
//    千万别加这个,一旦加了就会报空指针异常
//    @ApiImplicitParam(name = "userName", value = "用户账号名", required = true)
    @ApiOperation(value = "通过用户账号名获取信息")
    @GetMapping("/getN")
    @ResponseBody
    public BaseResponse<List<User>> testGetUser(String userName){
        QueryWrapper<User> qw = new QueryWrapper<>();
        qw.like("name", userName);
        return ResultUtils.success(user.list(qw), "查找成功");
    }
//	这个方法比较多变,官方文档也有说明
    @ApiOperation(value = "通过新的Searcher方法来进行便捷查找")
    @ResponseBody
    @GetMapping("/searcherGet")
    public Object getForSearcher(HttpServletRequest request){
		//	可以在builder()后使用其他方法进行数据筛选
        return mapSearcher.search(User.class,
                MapUtils.builder()
                        .build());
    }
//	这个方法可以传入值进行动态查找
    @ApiOperation(value = "使用Searcher “动态“ 查找字段")
    @ResponseBody
    @GetMapping("/searcherGetName")
    public BaseResponse<Object> dynamicField(){
        Map<String, Object> map = new HashMap<>();
        map.put("name", "Lynn");
        return ResultUtils.success(mapSearcher.searchList(User.class, map), "------动态查询字段成功------");
    }

}

Controller层编写的注意事项

  1. 需要先注入MapSearcherBeanSearcher(官方文档那个提示构建构造器的步骤坑死我了,还以为要写一个单例Bean来进行配置)
  2. 看源码注释,哈哈
  3. (dog这个源码比较粗糙,看的出来我并没有对一些可能出现的异常、情况进行捕获。

看看我查询返回的数据

MyBatis查询

Bean Searcher查询

返回加了字段名字段的所有信息

查找字段名为name且值为Lynn的加了字段名字段的信息

结语

最后要说一句,现在网上的文章很多都是抄来抄去的,有互相抄的也有直接搬官方文档的,所以大家在学一样东西之前如果有官方文档官方示例一定要先去看,别问我为什么懂这个道理的…

最后附上Bean Searcher官方文档地址和示例的gitee仓库

官方文档地址: https://searcher.ejlchina.com/

官方gitee仓库地址:git@gitee.com:ejlchina-zhxu/bean-searcher.git

到此这篇关于Bean Searcher配合SpringBoot的使用的文章就介绍到这了,更多相关Bean Searcher配合SpringBoot使用内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Bean Searcher配合SpringBoot的使用详解

本文链接: https://lsjlt.com/news/150469.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Bean Searcher配合SpringBoot的使用详解
    先吐槽一下,现在的Bean Searcher操作手册的指引弱的可怜…对我这样的小白及其不友好 话不多说直入主题 1、首先肯定是得引入依赖 <dependency&...
    99+
    2024-04-02
  • 详解Spring中使用xml配置bean的细节
    整理总结刚学的关于spring的xml配置bean的知识。 在ApplicationContext.xml文件中使用bean节点配置bean,bean的属性id在IOC容器中必须是唯一的。<bean id="helloWorld" c...
    99+
    2023-05-31
    spring xml bean
  • SpringBoot整合Apollo配置中心快速使用详解
    目录一、简介二、使用1. 测试项目搭建2. Apollo配置中心的配置3. 项目启动与测试4.常见整合问题附录一、简介 1.Apollo 是什么?Apollo(阿波罗)是携程框架部门...
    99+
    2024-04-02
  • 详解Spring Bean的集合注入和自动装配
    目录一、Spring Bean 集合注入集合常用标签案例二、Spring Bean自动装配什么是自动装配自动装配的方式案例注意点一、Spring Bean 集合注入 在【Spring...
    99+
    2024-04-02
  • Springboot详解如何整合使用Thymeleaf
    目录引入Thymeleaf取值有无转义循环模板引擎的作用就是我们来写一个页面模板,比如有些值呢,是动态的,我们写一些表达式。而这些值,从哪来呢,就是我们在后台封装一些数据。然后把这个...
    99+
    2024-04-02
  • springBoot整合redis使用案例详解
    一、创建springboot项目(采用骨架方式) 创建完成; 我们分析下pom文件中内容: 所使用到的关键依赖: <!--springBoot集成redis-...
    99+
    2024-04-02
  • SpringBoot @Configuration与@Bean注解使用介绍
    目录demo示例特点和特性之前我们都是通过xml的方式定义bean,里面会写很多bean元素,然后spring启动的时候,就会读取bean xml配置文件,然后解析这些配置,然后会将...
    99+
    2022-11-13
    SpringBoot @Configuration注解 SpringBoot @Bean注解
  • Springboot项目中使用redis的配置详解
    程序结构: 一、配置  1. 在pom.xml中添加依赖 pom.xml文件如下: <?xml version="1.0" encoding="UTF-...
    99+
    2024-04-02
  • Spring Xml装配Bean的思路详解
    1,概述 在Spring中提供了三种方式来对Bean进行配置: 在xml文件中配置在Java的接口和实现类中配置隐式Bean的发现机制和自动装配原则 这三种方式都经常用到,而且常常会...
    99+
    2024-04-02
  • SpringBoot向容器注册bean的方法详解
    目录简介法1:@Component法2:@Configuration+@Bean法3:@Import等法4:FactoryBean简介 本文用示例介绍SpringBoot如何向容器注...
    99+
    2024-04-02
  • Pandas搭配lambda组合使用详解
    导入模块与读取数据 我们第一步需要导入模块以及数据集 import pandas as pd df = pd.read_csv("IMDB-Movie-Data.csv") d...
    99+
    2024-04-02
  • 详解SpringBoot如何删除引用jar包中的无用bean
    目录前言代码示例实现代码示例前言 公司有个项目,时间比较赶,而且项目的部分需求,和之前做的项目部分功能一样,为了赶速度和直接将之前多模块的maven项目中的部分模块,直接以jar包的...
    99+
    2024-04-02
  • 详解SpringBoot自定义配置与整合Druid
    目录SpringBoot配置文件优先级yaml的多文档配置扩展SpringMVC添加自定义视图解析器自定义DruidDataSourcesAbout Druid添加依赖配置数据源其他...
    99+
    2024-04-02
  • Spring中bean集合注入的方法详解
    目录Map注入List注入Set注入数组注入应用哈喽大家好啊,我是Hydra。 Spring作为项目中不可缺少的底层框架,提供的最基础的功能就是bean的管理了。bean的注入相信大...
    99+
    2024-04-02
  • Maven的porfile与SpringBoot的profile结合使用案例详解
    使用maven的profile功能,我们可以实现多环境配置文件的动态切换,可参考我的上一篇博客。但随着SpringBoot项目越来越火,越来越多人喜欢用SpringBoot的prof...
    99+
    2024-04-02
  • SpringBoot详解Banner的使用
    Banner的设置方式有以下几种 1、默认:SpringBoot + 版本号; 2、添加自定义资源文件:banner.txt; 3、添加自定义资源文件:banner.jpg/png/...
    99+
    2024-04-02
  • springboot-controller的使用详解
    Controller的使用一、 @Controller:处理http请求 @RestController:Spring4之后新加的注解,原来返回json需要@ResponseBody配合@Controller @RequestMapp...
    99+
    2023-05-31
    spring boot controller
  • @Bean注解和@Configuration、@Component注解组合使用的区别
    目录一、@Bean的“full”模式和“lite”模式二、两种模式的差异1、“full”模式下@Bean方法互相调用2、“lite”模式下@Bean方法互相调用三、总结 一、@Bea...
    99+
    2024-04-02
  • 使用Springboot整合Apollo配置中心
    Apollo简介 Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理...
    99+
    2024-04-02
  • springboot ehcache 配置使用方法代码详解
    EhCache是一个比较成熟的Java缓存框架,最早从hibernate发展而来, 是进程中的缓存系统,它提供了用内存,磁盘文件存储,以及分布式存储方式等多种灵活的cache管理方案...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作