(SpringBoot集成通用Mybatis 常用增刪改查API+註解開發)tk.mybatis

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();
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章