CRUD常用技巧

2021-09-25 20:23:18 字數 2604 閱讀 5800

查詢修改

刪除寫業務**我們免不了會一直圍繞著crud轉,這是基礎,也是根本,把crud做好了也是一件不簡單的事情,讓我們扎扎實實地去做好這件事。

批量插入:

insert into test_table

(`name`,`age`)

values

( #,#)

注意:如果dao層傳入的集合引數使用了@param(value=「***list」),則語法要調整:

insert into test_table

(`name`,`age`)

values

( #,#)

批量插入更新

假設name是唯一主鍵,插入時可能會存在衝突

insert into test_table

(`name`,`age`)

values

( #,#)

on duplicate key update age=values(age)

模糊查詢

如果傳入的模糊欄位是字串,建議先進行trim()

如果資料庫有相關欄位且建立了索引,可以在資料庫層使用like進行模糊查詢,注意mybatis like用法-like concat(』%』,#,』%』)

如果有些字段資料庫中沒有,則可以通過**來實現,使用排除法,如果需求場景是這樣:前端傳入的乙個模糊字段匹配多個後端字段,偽**如下:

listresult = new arraylist();

if(fuzzyitem != null)

// 匹配欄位item2

if(item2.contains(fuzzyitem))

// 沒有命中,則繼續下一輪遍歷

continue;

}

分頁查詢

使用github分頁器,pagehelper.startpage(pagenum, pagesize);

public static listreadbypage(listsrclist, int pagenum, int pagesize) 

int fromindex = pagenum > 0 ? (pagenum - 1) * pagesize : 0;

int toindex = pagenum * pagesize;

int size = srclist.size();

if (size <= fromindex) else if (size > fromindex && size < toindex) else

}

public static listreadbypage(listparams, int limit, function, list> readfunction) 

if (params.size() <= limit) else

int total = params.size();

listleftparams = new arraylist<>();

// for迴圈去填充引數,當limit較小,總的size較大時,會比較耗效能

for (int i = limit; i < total; i++)

listtmpresult = readbypage(leftparams, limit, readfunction);

if (totalresult != null && tmpresult != null)

return totalresult;

}}

多欄位排序

使用資料order by實現多欄位排序:oder by filed1 desc, filed2 desc

使用流排序:stream().sorted(comparator.comparing(function1).thencomparing(function2).thencomparing(function3))

使用集合工具排序:

collections.sort(srclist,comparator.comparing().thencomparing().thencomparing())

批量修改

使用mybatis-foreach語法組裝sql,注意這種方式需要在mysql連線配置中加:&allowmultiqueries=true屬性

update test_table

clazz_id = #,

teacher_id = #,

where id = #

「allowmultiqueries=true」的作用:

1.可以在sql語句後攜帶分號,實現多語句執行。

2.可以執行批處理,同時發出多個sql語句

多欄位修改

修改單條記錄多欄位注意不能使用and連線符合,and符號在這裡是邏輯與操作

業務相關的資料盡量使用邏輯刪除

刪除操作盡量要做許可權驗證,表設計中要設計operator_id、create_date、update_date,記錄操作者、建立時間、更新時間

常用 crud 的思考和設計

簡化單錶的crud基本 假設現在有 字段型別 idint name varchar 建立 controller 類 建立 service 類 建立 一些驗證方法 組合起來 restcontroller demo public class projectdemocontroller else crud...

程式設計CRUD

1 增加 id 判斷是否為空 判斷是否為正整數數 0,浮點數,字串,超過負上限和正上限等等 string 判斷是否為空 去空格trim 不能等於 null,false,0,0 0 1,1 等等 判斷長度判斷可如最小限3,最大限為11,即3 x 11 判斷是否含有特殊符號,字元 判斷名稱是否重複 2 ...

簡單操作crud

資料的操作 dml 建立資料 插入資料 insert into tbl name 字段列表 values 值列表 insert into exam student name,stu no values zhangsan php001 如果需要在插入時,為所有的字段設定值,那麼可以省略字段列表。要求是...