SpringBoot引入tk.mybatis座標
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.0.4</version>
</dependency>
- 查詢所有 selectAll()
- 根據主鍵查詢 selectByPrimaryKey(id)
- 添加 insert(sku)
- 根據主鍵修改 updateByPrimaryKey(sku)
- 根據主鍵刪除 deleteByPrimaryKey(id)
- 條件查詢 selectByExample(example);
Example example = createExample(searchMap);
selectByExample(example);
/**
* 構建查詢對象
*
* @param searchMap
* @return
*/
private Example createExample(Map<String, Object> searchMap) {
Example example = new Example(Sku.class);
Example.Criteria criteria = example.createCriteria();
if (searchMap != null) {
// 商品id
if (searchMap.get("id") != null && !"".equals(searchMap.get("id"))) {
criteria.andEqualTo("id", searchMap.get("id"));
}
// 商品條碼
if (searchMap.get("sn") != null && !"".equals(searchMap.get("sn"))) {
criteria.andEqualTo("sn", searchMap.get("sn"));
}
// SKU名稱
if (searchMap.get("name") != null && !"".equals(searchMap.get("name"))) {
criteria.andLike("name", "%" + searchMap.get("name") + "%");
}
// 商品圖片
if (searchMap.get("image") != null && !"".equals(searchMap.get("image"))) {
criteria.andLike("image", "%" + searchMap.get("image") + "%");
}
// 商品圖片列表
if (searchMap.get("images") != null && !"".equals(searchMap.get("images"))) {
criteria.andLike("images", "%" + searchMap.get("images") + "%");
}
// SPUID
if (searchMap.get("spuId") != null && !"".equals(searchMap.get("spuId"))) {
criteria.andEqualTo("spuId", searchMap.get("spuId"));
}
// 類目名稱
if (searchMap.get("categoryName") != null && !"".equals(searchMap.get("categoryName"))) {
criteria.andLike("categoryName", "%" + searchMap.get("categoryName") + "%");
}
// 品牌名稱
if (searchMap.get("brandName") != null && !"".equals(searchMap.get("brandName"))) {
criteria.andLike("brandName", "%" + searchMap.get("brandName") + "%");
}
// 規格
if (searchMap.get("spec") != null && !"".equals(searchMap.get("spec"))) {
criteria.andLike("spec", "%" + searchMap.get("spec") + "%");
}
// 商品狀態 1-正常,2-下架,3-刪除
if (searchMap.get("status") != null && !"".equals(searchMap.get("status"))) {
criteria.andEqualTo("status", searchMap.get("status"));
}
// 價格(分)
if (searchMap.get("price") != null) {
criteria.andEqualTo("price", searchMap.get("price"));
}
// 庫存數量
if (searchMap.get("num") != null) {
criteria.andEqualTo("num", searchMap.get("num"));
}
// 庫存預警數量
if (searchMap.get("alertNum") != null) {
criteria.andEqualTo("alertNum", searchMap.get("alertNum"));
}
// 重量(克)
if (searchMap.get("weight") != null) {
criteria.andEqualTo("weight", searchMap.get("weight"));
}
// 類目ID
if (searchMap.get("categoryId") != null) {
criteria.andEqualTo("categoryId", searchMap.get("categoryId"));
}
// 銷量
if (searchMap.get("saleNum") != null) {
criteria.andEqualTo("saleNum", searchMap.get("saleNum"));
}
// 評論數
if (searchMap.get("commentNum") != null) {
criteria.andEqualTo("commentNum", searchMap.get("commentNum"));
}
}
return example;
}
注意updateByPrimaryKeySelective() 與updateByPrimaryKey()方法的區別
- updateByPrimaryKeySelective() 接收的參數爲對應於數據庫的實體類對象,利用字段的自動匹配進行更新表的操作,如果傳入obj對象中的某個屬性值爲null,則不進行數據庫對應字段的更新。
- updateByPrimaryKey() 與updateByPrimaryKeySelective的區別在於,如果傳入的obj對象中某個屬性值爲null,會將對應的數據庫字段賦值爲null。
insertSelective()與insert()區別
insertSelective–有選擇性的保存數據
比如User裏面有三個字段:id name age password
User u=new user();
u.setName("bill");
mapper.insertSelective(u);
insertSelective執行對應的sql語句的時候,只插入對應的name字段
sql語句如下:
insert into tb_user (name) value ("bill")
insert則是每個字段都要添加一遍
insert into tb_user (id,name,age,password) value(null,"bill",null,null);
4.4、pagehelper-spring-boot-starter SpringBoot集成的pagehelper分頁插件的使用
在yml文件內配置pageHelper
#分頁插件
pagehelper:
helper-dialect: mysql # mysql數據庫
reasonable: true # 負數頁碼顯示第一頁 超出最大頁碼顯示最後一頁
support-methods-arguments: true
params: count=countSql
1、導入座標
<!--mybatis分頁插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
2、Controller層代碼
@GetMapping(value = "/search/{page}/{size}")
@ApiOperation("分頁")
public Result findPage(@PathVariable("page") int page, @PathVariable("size") int size){
Page<Brand> pageList = brandService.findPage(page, size);
PageResult pageResult = new PageResult(pageList.getTotal(), pageList.getResult());
return new Result(true,StatusCode.OK,"查詢成功",pageResult);
}
3、服務實現類代碼
/**
* 分頁查詢
*
* @param page
* @param size
* @return
*/
@Override
public Page<Brand> findPage(int page, int size) {
PageHelper.startPage(page, size);
return (Page<Brand>) brandMapper.selectAll();
}