SpringBoot+Mybatis plus+React實現(xiàn)條件選擇切換搜索實踐
在寫React前端邏輯時,經(jīng)常遇到可以切換不同條件的列表查詢功能,例如下邊截圖這樣的,其實,這塊代碼基本都一個邏輯,可以一次性將實現(xiàn)過程記錄下來,待以后再遇到時,直接根據(jù)筆記復用即可。
一、首先,是前端React頁面代碼,這類搜索框,一般都是放在Form表單當中,然后使用有前綴下拉框選項的Input組件,這類模式的組件是在Input組件當中實現(xiàn)一個addonBefore屬性即可,如下代碼:
render () { let { getFieldDecorator } = this.props.form; return ( <Form onSubmit={this.submit} layout={'inline'}> <FormItem> {getFieldDecorator('searchUser', { initialValue: "" })( <Input allowClear placeholder="請輸入搜索條件" addonBefore={ getFieldDecorator('condition', { initialValue: 'name' })( <Select style={{ width: 100 }}> <Option value="name">學生姓名</Option> <Option value="class">班級</Option> <Option value="studentNo">學號</Option> </Select> ) } /> )} </FormItem> </Form> ); }
二、寫好表單頁面后,就可以對該表單邏輯進行開發(fā)。因為該搜索框?qū)喾N方式,但輸入框只有一個,也就是多對一的情況,故而需要做一些轉(zhuǎn)換,需要將輸入框的值,相應轉(zhuǎn)換為對應下拉框選項的值,因此,可以用switch判斷來做轉(zhuǎn)換,當然,你也可以用if-else,我試過if-else的效果,看起來就是一坨......
稍微解釋一下這段代碼,假如下拉框是以“學生姓名”為維度來搜索,那么表單的getFieldDecorator('condition')屬性值即“name”,也就是values.condition==“name”,就會跳轉(zhuǎn)至values.name = values.searchValue,就意味著是搜索條件name的值,為對應輸入框的值values.searchValue。在表單當中,輸入框的屬性label是getFieldDecorator('searchUser')。
submit = (e) => { e.preventDefault() let { form, getStudentList } = this.props let values = {} form.validateFieldsAndScroll({ first: true }, ((errors, value) => { if (errors) { message.error(getFormFirstErrorMsg(errors)); } else { values = trimObjectValues(value); switch (values.condition) { case "name": values.name = values.searchValue; break; case "className": values.className = values.searchValue break; case "studentNo": values.studentNo = values.searchValue break; default: break; } getStudentList(params); } })) }
3、最后,就是后端邏輯實現(xiàn)
@Data public class Student { private String name; private String className; private String sex; }
public interface StudentMapper extends BaseMapper<Student> {}
這里使用了Mybatis plus的ORM框架,可以直接使用lambda表達式的搜索條件進行,因為搜索條件搜索,故而,需要用like的模糊搜索,搜索條件是name+"%",沒有兩邊都用"%",是因為若第一個模糊條件有索引的話,那么"%"+name+"%"將會造成索引失效。
public List<Student> getStudents(Student reqVO) { String name = reqVO.getName(); String className = reqVO.getClassName(); String sex = reqVO.getSex(); List<Student> students = studentMapper.selectList( new QueryWrapper<Student>().lambda() .like(StringUtils.isNotEmpty(name),Student::getName,name+"%") .like(StringUtils.isNotEmpty(className),Student::getClassName,className+"%") .like(StringUtils.isNotEmpty(sex),Student::getSex,sex+"%") ); return students; }
到此這篇關(guān)于SpringBoot+Mybatis plus+React實現(xiàn)條件選擇切換搜索實踐的文章就介紹到這了,更多相關(guān)SpringBoot+Mybatis plus+React條件選擇切換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot整合RocketMQ實現(xiàn)發(fā)送同步消息
RocketMQ 是一款開源的分布式消息中間件,由阿里巴巴開源,它具有高可用性、高性能、低延遲等特點,廣泛應用于阿里巴巴集團內(nèi)部以及眾多外部企業(yè)的業(yè)務系統(tǒng)中,本文給大家介紹了SpringBoot整合RocketMQ實現(xiàn)發(fā)送同步消息,需要的朋友可以參考下2024-04-04從Myeclipse 導入到eclipse中無法識別為 web項目 問題的解決步驟
這篇文章主要介紹了從Myeclipse 導入到eclipse中無法識別為 web項目 問題的解決步驟,需要的朋友可以參考下2018-05-05Mybatis實現(xiàn)傳入多個參數(shù)的四種方法詳細講解
這篇文章主要介紹了Mybatis實現(xiàn)傳入多個參數(shù)的四種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧2023-01-01MyEclipse整合ssh三大框架環(huán)境搭載用戶注冊源碼下載
這篇文章主要為大家詳細介紹了如何使用MyEclipse整合ssh三大框架進行環(huán)境搭載,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-10-10二種jar包制作方法講解(dos打包jar eclipse打包jar文件)
這篇文章主要介紹了二種jar包制作方法講解:dos打包jar和eclipse打包jar文件,大家參考使用吧2013-11-11springboot實現(xiàn)添加郵件發(fā)送及壓縮功能
這篇文章主要介紹了springboot實現(xiàn)添加郵件發(fā)送及壓縮功能 ,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-07-07java讀取文件內(nèi)容,解析Json格式數(shù)據(jù)方式
這篇文章主要介紹了java讀取文件內(nèi)容,解析Json格式數(shù)據(jù)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09