91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Mybatis?Example怎么用

發布時間:2021-12-14 12:24:34 來源:億速云 閱讀:249 作者:小新 欄目:開發技術

小編給大家分享一下Mybatis Example怎么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

Mybatis Example的高級用法

近幾個項目一直使用的mybatis來對數據庫做查詢,期間用到了很多高效簡潔的查詢方法,特此記錄和分享。

一. mapper接口中的函數及方法

方法名功能
int countByExample(UserExample example)按條件計數
int deleteByPrimaryKey(Integer id)按主鍵刪除
int deleteByExample(UserExample example)按條件查詢
String/Integer insert(User record)插入數據(返回值為ID)
User selectByPrimaryKey(Integer id)按主鍵查詢
ListselectByExample(UserExample example)按條件查詢
ListselectByExampleWithBLOGs(UserExample example)按條件查詢(包括BLOB字段)。只有當數據表中的字段類型有為二進制的才會產生。
int updateByPrimaryKey(User record)按主鍵更新
int updateByPrimaryKeySelective(User record)按主鍵更新值不為null的字段
int updateByExample(User record, UserExample example)按條件更新
int updateByExampleSelective(User record, UserExample example)按條件更新值不為null的字段

二. example實例方法

example 用于添加條件,相當于where后面的部分,理論上單表的任何復雜條件查詢都可以使用example來完成。

方法說明
example.setOrderByClause(“字段名 ASC”);添加升序排列條件,DESC為降序
example.setDistinct(false)去除重復,boolean型,true為選擇不重復的記錄。
example.and(Criteria criteria)為example添加criteria查詢條件,關系為與
example.or(Criteria criteria)為example添加criteria查詢條件,關系為或
criteria.andXxxIsNull添加字段xxx為null的條件
criteria.andXxxIsNotNull添加字段xxx不為null的條件
criteria.andXxxEqualTo(value)添加xxx字段等于value條件
criteria.andXxxNotEqualTo(value)添加xxx字段不等于value條件
criteria.andXxxGreaterThan(value)添加xxx字段大于value條件
criteria.andXxxGreaterThanOrEqualTo(value)添加xxx字段大于等于value條件
criteria.andXxxLessThan(value)添加xxx字段小于value條件
criteria.andXxxLessThanOrEqualTo(value)添加xxx字段小于等于value條件
criteria.andXxxIn(List<?>)添加xxx字段值在List<?>條件
criteria.andXxxNotIn(List<?>)添加xxx字段值不在List<?>條件
criteria.andXxxLike(“%”+value+”%”)添加xxx字段值為value的模糊查詢條件
criteria.andXxxNotLike(“%”+value+”%”)添加xxx字段值不為value的模糊查詢條件
criteria.andXxxBetween(value1,value2)添加xxx字段值在value1和value2之間條件
criteria.andXxxNotBetween(value1,value2)添加xxx字段值不在value1和value2之間條件

三. 使用案例

1.基本字段查詢

  // 1.使用criteria
      Example example = new Example(User.class);
            Criteria criteria = example.createCriteria();
            criteria.andEqualTo("name", name);
            criteria.andNotEqualTo("id", id);
            criteria.andEqualTo("userId", uid);
            List<User> list = userMapper.selectByExample(example);
            
            // 不使用criteria,實則example.and()本質底層還是返回的criteria,倒是可以簡便寫法。
            Example example = new Example(User.class);
   example.and()
                .andEqualTo("name", name)
                .andEqualTo("id", id)
                .andEqualTo("userId", uid);
    List<User> list = userMapper.selectByExample(example);
  等效于:select * from user where name = #{name} and id = #{id} and uid = #{uid}

2. and or 查詢

  Example example = new Example(User.getClass());
        // where 條件
        Criteria criteria = example.createCriteria();
        Criteria criteria1 = example.createCriteria();
        
        criteria.andIn("id", ids);
        criteria1.orLike("des", "%" + des + "%");
        criteria1.orLike("name", "%" + name + "%");
        example.and(criteria1);
        example.and().andEqualTo("status", staus)
 等效于:where id in ( #{ids} ) and ( name like concat(‘%', #{name} ,'%') or des like concat(‘%', #{des} ,'%') ) and status = #{status}

注意:如果不加 example.and(criteria1);,則默認example只添加生成的第一個criteria,criteria1 將不會加到此條件中

3. 數組參數的條件查詢

public Example test(List<String> names, String sex) {
  Example example = new Example(User.getClass());
  example.and().andEqualTo("sex", sex)
        Example.Criteria criteria = example.createCriteria();
        for (String str : names) {
             criteria.orLike("name", str);
         }
         example.and(criteria);
         List<User> list = userMapper.selectByExample(example);
            
 等效于:where sex = #{sex} and ( name like concat(‘%', #{name1} ,'%') or name like concat(‘%', #{name2} ,'%') )
}

說說Mybatis Example常見用法

一. 說明

我們在使用mybatis example做業務 增/刪/改/查時,會遇到一些場景。做一下記錄。

二. 排序查詢

使用mybatis example方式做查詢時候,業務需要按照條件排序,比如:創建時間倒序

example.setOrderByClause("create_time desc");

2.1 示例:

 @Override
    public UpgradeNotifyInfoDTO queryLatestNotify(Integer appType) {
        UpgradeNotifyInfoDTO notifyDTO=new UpgradeNotifyInfoDTO();
        SportAppUpgradeNotifyExample example = new SportAppUpgradeNotifyExample();
        example.setOrderByClause("`create_time` desc");
        SportAppUpgradeNotifyExample.Criteria criteria =  example.createCriteria();
        criteria.andAppTypeEqualTo(appType);
        // 0- 禁用 1-啟用
        criteria.andStatusEqualTo(1);
        List<SportAppUpgradeNotify> list = upgradeNotifyMapper.selectByExample(example);
        if (!CollectionUtils.isEmpty(list)){
            BeanUtils.copyProperties(list.get(0),notifyDTO);
        }
        return notifyDTO;
    }

注: 多條件排序寫法如下:

   ReservationProductOrderDetailExample example = new ReservationProductOrderDetailExample();
        example.setOrderByClause("`reservate_time` desc,`reservate_start_time` desc, `create_time` desc");
        ReservationProductOrderDetailExample.Criteria criteria = example.createCriteria();

三. 查詢limit, 只返回前50條數據

3.1 借助PageHelper

我們通過Pagehelper做分頁查詢,那么limit同樣可以使用Pagehelper。如下,查詢符合條件中的前50條。這里不會返回數據總數 count

PageHelper.startPage(1, 50);
 public List<ShopCityInfoRespDTO> queryShopList(String shopCityName,String shopCityId) {
        List<ShopCityInfoRespDTO> shopCityList = new ArrayList<>();
        ShopInfoExample example = new ShopInfoExample();
        ShopInfoExample.Criteria criteria =  example.createCriteria();
        criteria.andStatusEqualTo("0");
        if(!StringUtils.isEmpty(shopCityId)) {
            criteria.andShopIdEqualTo(shopCityId);
        }
        if(!StringUtils.isEmpty(shopCityName)) {
            criteria.andShopNameLike("%" + shopCityName + "%");
        }
        // 這里限制查詢50條數據,但不能返回總數
        PageHelper.startPage(1, 50);
        List<ShopInfo>  shopInfoList = shopInfoMapper.selectByExample(example);
        if(CollectionUtils.isEmpty(shopInfoList)){
           return shopCityList;
        }
        for (ShopInfo shopInfo : shopInfoList){
            ShopCityInfoRespDTO  respDTO = new ShopCityInfoRespDTO();
            respDTO.setCompanyId(shopInfo.getCompanyId());
            respDTO.setShopCityId(shopInfo.getShopId());
            respDTO.setShopCityName(shopInfo.getShopName());
            respDTO.setShopCityCode(shopInfo.getShopCode());
            respDTO.setShopType(1);
            shopCityList.add(respDTO);
        }
        return shopCityList;
    }

以上是“Mybatis Example怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东阿县| 甘南县| 铅山县| 邯郸市| 鹿泉市| 西林县| 克东县| 施秉县| 锡林郭勒盟| 福泉市| 南陵县| 雷州市| 古浪县| 江阴市| 全州县| 浦北县| 普安县| 綦江县| 彭州市| 桑植县| 五峰| 万州区| 双柏县| 汕头市| 雷州市| 辛集市| 叶城县| 林周县| 奉贤区| 嵊州市| 时尚| 和静县| 张掖市| 神池县| 肃宁县| 庆云县| 砚山县| 高陵县| 娄烦县| 镇江市| 深水埗区|