<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
先吐槽一下,現在的Bean Searcher操作手冊的指引弱的可憐…
對我這樣的小白及其不友好
<dependency> <groupId>com.ejlchina</groupId> <artifactId>bean-searcher-boot-starter</artifactId> <version>${searcher.version}</version> </dependency>
bean-searcher: params: pagination: start: 1
其他的依賴、資料來源啥的比較常用這裡就不展出
由於我為了快速就用了之前使用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; /** 1. 使用者表 2. @author Lynn 3. @TableName user */ @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; /** * 使用者 id */ @DbField("userId") private Integer userid; /** * 使用者郵箱 */ @DbField("email") private String email; /** * 使用者密碼 */ @DbField("password") private String password; /** * 使用者是否被封禁, 0-未封禁,1-已封禁 */ @DbField private Byte delflag; /** * 使用者許可權, 0-遊客, 1-普通使用者, 2-會員使用者, 3-管理員 */ @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方法----------"); } }
建立實體類需要注意幾點
先粘上原始碼
同上,也可先跳過原始碼直接看注意事項
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; /** * 描述:測試類 * * @author: Lynn * @date: 2021/12/3 */ @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層編寫的注意事項
看看我查詢返回的資料
返回加了欄位名欄位的所有資訊
查詢欄位名為name且值為Lynn的加了欄位名欄位的資訊
最後要說一句,現在網上的文章很多都是抄來抄去的,有互相抄的也有直接搬官方檔案的,所以大家在學一樣東西之前如果有官方檔案和官方範例一定要先去看,別問我為什麼懂這個道理的…
最後附上Bean Searcher官方檔案地址和範例的gitee倉庫
官方檔案地址: https://searcher.ejlchina.com/
官方Gitee倉庫地址:git@gitee.com:ejlchina-zhxu/bean-searcher.git
到此這篇關於Bean Searcher配合SpringBoot的使用的文章就介紹到這了,更多相關Bean Searcher配合SpringBoot使用內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45