日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Mybatis Plus使用條件構造器增刪改查功能的實現方法

瀏覽:27日期:2023-10-19 12:08:07
java后端層級結構Controller 接口層

接口層比較好理解,它是面向web網絡的接口,使用http格式去調用

/** * 圖文課程管理Controller */@RestController@RequestMapping('/driver/imageCourse')public class TImageCourseController extends BaseController {@Autowired private ITImageCourseService tImageCourseService; @Autowired private TImageCourseMapper tImageCourseMapper;// 具體接口...}Service 業務層

在實際應用中,更復雜的邏輯應該寫在 Service 業務層方法中,在業務方法中再調用數據層方法,實現從 接口層-業務層-數據層 的鏈路調用關系,提高代碼的可讀性

/** * 圖文課程管理Service接口 */public interface ITImageCourseService extends IService<TImageCourse> {}

業務層實現

/** * 圖文課程管理Service業務層處理 */@Servicepublic class TImageCourseServiceImpl extends ServiceImpl<TImageCourseMapper, TImageCourse> implements ITImageCourseService { @Autowired private TImageCourseMapper tImageCourseMapper;}

ServiceImpl 類實現了 IService 接口中的方法;ServiceImpl 中的方法,本質上是對 BaseMapper 方法的封裝,同時也增加了一些 BaseMapper 類中沒有的特性,例如常用的 list() 、count() 方法

// Service方法調用了Mapper方法 只是將insert()返回轉換成了布爾值@Overridepublic boolean save(T entity) { return retBool(baseMapper.insert(entity));}Mapper 數據層

繼承 BaseMapper 接口后,無需編寫 mapper.xml 文件,即可獲得CRUD功能;例如,insert() 、 deleteById() 、updateById() 、 selectById() 等方法

如果手動編寫數據層的sql,BaseMapper實現者即對應xml中的sql方法

/** * 圖文課程管理Mapper接口 */public interface TImageCourseMapper extends BaseMapper<TImageCourse> {}

**mapper.xml **

xml內容例子,該例子自定義了一個根據id的查詢方法,無視了刪除標志

<?xml version='1.0' encoding='UTF-8' ?><!DOCTYPE mapperPUBLIC '-//mybatis.org//DTD Mapper 3.0//EN''http://mybatis.org/dtd/mybatis-3-mapper.dtd'><mapper namespace='com.ruoyi.mapper.TRuralInfoMapper'> <resultMap type='TRuralInfo' id='RuralInfoResult'><id property='id' column='id' /><result property='cityName' column='city_name' /><result property='countyName' column='county_name' /><result property='townName' column='town_name' /><result property='villageName' column='village_name' /><result property='checkCode' column='check_code' /><result property='parentLevel' column='parent_level' /><result property='parentId' column='parent_id' /><result property='delFlag'column='del_flag' /><result property='createBy' column='create_by' /><result property='createTime' column='create_time' /><result property='updateBy' column='update_by' /><result property='updateTime' column='update_time' /> </resultMap> <sql id='selectRuralInfoVo'>select t_rural_info.id, city_name, county_name, town_name, village_name, check_code, parent_level, parent_id,t_rural_info.del_flag, t_rural_info.create_by, t_rural_info.create_time, t_rural_info.update_by, t_rural_info.update_timefrom t_rural_info </sql> <select parameterType='Long' resultMap='RuralInfoResult'><include refid='selectRuralInfoVo'/>where id = #{id} </select></mapper>增刪改查新增(C)

使用 mapper 對象的 insert() 方法新增一條記錄,成果后會將數據庫的id返回給實體

/** * 新增圖文課程管理 */@PostMappingpublic AjaxResult add(@RequestBody TImageCourse tImageCourse){... return toAjax(tImageCourseMapper.insert(tImageCourse));}

saveBatch

service 類中提供了 saveBatch() 方法,可實現批量插入,該方法是支持事務

saveOrUpdate

service 類中提供了 saveOrUpdate() 方法,如果id為空則調用 save() 方法保存,反之則調用 updateById() 方法更新

查詢(R)

查詢多數要借助條件構造器使用才有意義,實現更靈活的查詢;

查詢實體

常用的方法有 .getOne() ,getById() ;

.getOne() 接收一個條件構造器作為參數

getById() 根據id進行查詢實體

查詢集合

常用的查詢方法包括 .list(),

.list() 方法也可以接收一個條件構造器作為參數

構造器的使用

條件構造器包含 QueryWrapper 和 LambdaQueryWrapper 兩個類。

LambdaQueryWrapper 為函數式編程的書寫習慣,與 QueryWrapper 表達的意義相同,優點是簡化了代碼。

此處以 LambdaQueryWrapper 的使用為例,常用的三種方法:

// 1、直接用new創建// 創建對象的方式會更加靈活,可配合 if()...else 達到更靈活的sql拼接LambdaQueryWrapper<TCenterPoint> wrapper = new LambdaQueryWrapper<>();wrapper.eq(TCenterPoint::getPoint, 10.0);// 2、靜態方法創建 Wrappers.<>lambdaQuery()// 構造器方法多為鏈式編程 可連寫Wrappers.<TCenterPoint>lambdaQuery().eq(TCenterPoint::getPoint, 10.0)// 3、靜態方法創建 Wrappers.query() // query可接受對象 字段不為null則自動拼接.eq()方法Wrappers.query(tUserDetail)

構造器方法

/** * 源碼 * @param condition 執行條件 可省略 * @param column 字段 * @param val 值 */eq(boolean condition, R column, Object val)eq 相等 = ne 不等于 != gt 大于 > ge 大于等于 >= lt 小于 < le 小于等于 <= between BETWEEN 值1 AND 值2like LIKE ‘%值%’notLike NOT LIKE ‘%值%’likeLeft LIKE ‘%值’ ; likeRight同理 isNull 字段 IS NULL;orderByAsc 排序:ORDER BY 字段, … ASC; orderByDesc同理

在sql中使用and和or,邏輯只需寫在where中即可,在ORM框架中較為不好理解,總之,其結果是實現一個查詢條件和多個條件并列的關系

OR

or(Consumer<Param> consumer)or(boolean condition, Consumer<Param> consumer)

OR 嵌套,例如

// or (name = ’李白’ and status <> ’活著’)or(i -> i.eq('name', '李白').ne('status', '活著'))

AND

and(Consumer<Param> consumer)and(boolean condition, Consumer<Param> consumer)

AND 嵌套,例如

// and (name = ’李白’ and status <> ’活著’)and(i -> i.eq('name', '李白').ne('status', '活著'))

修改(U)

使用 mapper 對象的 updateById() 方法更新實體,只有字段內容不為空,才會觸發字段內容的修改

/** * 修改圖文課程管理 */@PutMappingpublic AjaxResult edit(@RequestBody TImageCourse tImageCourse){ return toAjax(tImageCourseMapper.updateById(tImageCourse));}

刪除(D)

刪除常用的方法是根據id進行刪除,使用 mapper 對象的 deleteById ,框架也支持批量刪除的操作 deleteBatchIds

/** * 刪除圖文課程管理 */@DeleteMapping('/{ids}')public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(tImageCourseMapper.deleteBatchIds(Arrays.asList(ids)));}

到此這篇關于Mybatis-Plus使用條件構造器增刪改查的文章就介紹到這了,更多相關Mybatis Plus條件構造器增刪改查內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Mybatis 數據庫
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩精品一区二区三区免费观看| 欧美精品成人| 国产盗摄——sm在线视频| 国产精品115| 国产精品theporn| 国产一区二区三区不卡av| av资源新版天堂在线| 男女激情视频一区| 日韩有吗在线观看| 日本v片在线高清不卡在线观看| 日韩**一区毛片| 一级成人国产| 日韩精品久久理论片| 久久国产婷婷国产香蕉| 精品一二三区| 久久久夜精品| 在线视频精品| 中文字幕成人| 国产精品一页| 日韩a一区二区| 在线日韩av| 免费观看在线综合色| 国产亚洲人成a在线v网站| 国产成人精选| 亚洲成人一区在线观看| 亚洲在线观看| 日韩精品免费一区二区夜夜嗨| 日本不卡视频一二三区| 欧美国产极品| 日韩久久精品| 日韩专区在线视频| 免费在线观看一区| 久久久久美女| 日韩精品福利一区二区三区| 老司机免费视频一区二区| 精品丝袜在线| 美女福利一区二区三区| 亚洲一区日韩| 欧美激情 亚洲a∨综合| 视频福利一区| 蜜臀av性久久久久蜜臀aⅴ流畅| 日韩精品一区二区三区中文在线 | 亚洲精品综合| 国产精品红桃| av亚洲在线观看| 国产乱码精品一区二区三区四区 | 午夜久久tv| 国产精品超碰| 亚洲欧美一区在线| 国产日产一区| 五月天久久久| 国产精品三p一区二区| 欧美午夜精彩| 国产精品男女| 欧美一区=区| 四季av一区二区凹凸精品| 蜜桃视频在线观看一区| 97视频热人人精品免费| 亚洲免费影视| 国产a亚洲精品| 免费在线成人网| 日韩成人三级| 欧美片第1页综合| 久久亚洲在线| 国产精品亚洲欧美| 影院欧美亚洲| 国内自拍视频一区二区三区| 九九在线精品| 精品国产亚洲一区二区三区| 亚洲中字黄色| 色爱综合网欧美| 综合亚洲视频| 欧美好骚综合网| 亚洲精品日本| 国产一区日韩欧美| 国内揄拍国内精品久久| 亚洲人成网77777色在线播放| 粉嫩av一区二区三区四区五区 | 成人在线网站| 国产精品日韩精品中文字幕| 99视频精品| 卡一精品卡二卡三网站乱码| 亚洲一区二区三区四区五区午夜| 成人精品高清在线视频| 日本强好片久久久久久aaa| 亚洲高清毛片| av资源中文在线| 久久激情综合网| 亚洲精品无播放器在线播放| 99久久婷婷这里只有精品| 岛国精品一区| 久久国产欧美日韩精品| 一区二区三区网站| 亚洲高清二区| 日韩欧美精品综合| 国产成人a视频高清在线观看| 日韩区一区二| 日韩精品一级二级| 欧美日韩一二三四| 韩国精品主播一区二区在线观看 | 国产伦精品一区二区三区千人斩| 99香蕉国产精品偷在线观看| 肉色欧美久久久久久久免费看 | 日韩三区免费| 久久男人av资源站| 国产剧情在线观看一区| 亚洲精品一二三**| 久久国产电影| 日韩激情网站| 免费成人在线观看| 99在线精品免费视频九九视| 99视频精品全国免费| 久久男人天堂| 福利在线免费视频| 亚洲午夜电影| 日韩精品一区二区三区免费观看| 伊人网在线播放| 成人午夜亚洲| 国产成人精选| 91视频一区| 日韩一区二区在线免费| 成人国产精品一区二区免费麻豆| 日韩高清在线不卡| 婷婷综合国产| 日本午夜精品一区二区三区电影| 亚洲日本欧美| 蜜桃视频在线观看一区| 亚洲伊人精品酒店| 亚洲香蕉视频| 日韩不卡手机在线v区| 日韩激情av在线| 国产欧美久久一区二区三区| 国产欧美丝祙| 精品五月天堂| 国产传媒在线观看| 日韩理论片av| 精品亚洲美女网站| 99精品国产一区二区三区| 日韩在线免费| 不卡中文字幕| 快she精品国产999| 色8久久久久| 国产精品探花在线观看| 美女性感视频久久| 日韩av福利| 亚洲精品电影| 亚洲精品免费观看| 国产精品一区二区精品视频观看| 国产精品一国产精品k频道56| 国产精品成人一区二区网站软件| 老牛国内精品亚洲成av人片 | 亚洲v天堂v手机在线| 国产欧美高清| 久久久久久自在自线| jiujiure精品视频播放| 日韩精品一区第一页| 欧美伊人久久| 国产一区二区精品久| 久久视频精品| 亚洲va久久| 欧美激情视频一区二区三区在线播放| 福利一区和二区| 免费国产自久久久久三四区久久 | 伊人久久亚洲美女图片| 亚洲ab电影| 精品视频在线你懂得| 国产一区清纯| 日本不卡不码高清免费观看| 国产精品99一区二区三| 欧美日韩国产综合网| 日韩国产一二三区| 日韩综合在线| 日韩影院在线观看| 欧美国产不卡| 国产综合精品| 日韩高清一区在线| 桃色av一区二区| 丝袜a∨在线一区二区三区不卡| 国产探花在线精品一区二区| 日韩欧美在线中字| 日韩中文字幕| 国产精品视频一区二区三区四蜜臂| 国产成人精品一区二区三区在线| 欧美综合另类| 中文字幕一区二区三区在线视频| 精品一区二区三区在线观看视频| 日韩一区二区中文| 婷婷综合电影| 蜜桃av在线播放| 日韩精品一级中文字幕精品视频免费观看 | 久久伊人亚洲| 欧美成人基地| 日韩精品第二页| 国产在线|日韩| 日韩国产欧美在线播放| 久久精品av| 美女尤物国产一区| 爽爽淫人综合网网站| 国产一区二区精品福利地址| 亚洲人成在线影院|