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

您的位置:首頁技術(shù)文章
文章詳情頁

Mybatis Plus使用條件構(gòu)造器增刪改查功能的實(shí)現(xiàn)方法

瀏覽:24日期:2023-10-19 12:08:07
java后端層級結(jié)構(gòu)Controller 接口層

接口層比較好理解,它是面向web網(wǎng)絡(luò)的接口,使用http格式去調(diào)用

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

在實(shí)際應(yīng)用中,更復(fù)雜的邏輯應(yīng)該寫在 Service 業(yè)務(wù)層方法中,在業(yè)務(wù)方法中再調(diào)用數(shù)據(jù)層方法,實(shí)現(xiàn)從 接口層-業(yè)務(wù)層-數(shù)據(jù)層 的鏈路調(diào)用關(guān)系,提高代碼的可讀性

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

業(yè)務(wù)層實(shí)現(xiàn)

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

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

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

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

如果手動(dòng)編寫數(shù)據(jù)層的sql,BaseMapper實(shí)現(xiàn)者即對應(yīng)xml中的sql方法

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

**mapper.xml **

xml內(nèi)容例子,該例子自定義了一個(gè)根據(jù)id的查詢方法,無視了刪除標(biāo)志

<?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() 方法新增一條記錄,成果后會(huì)將數(shù)據(jù)庫的id返回給實(shí)體

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

saveBatch

service 類中提供了 saveBatch() 方法,可實(shí)現(xiàn)批量插入,該方法是支持事務(wù)

saveOrUpdate

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

查詢(R)

查詢多數(shù)要借助條件構(gòu)造器使用才有意義,實(shí)現(xiàn)更靈活的查詢;

查詢實(shí)體

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

.getOne() 接收一個(gè)條件構(gòu)造器作為參數(shù)

getById() 根據(jù)id進(jìn)行查詢實(shí)體

查詢集合

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

.list() 方法也可以接收一個(gè)條件構(gòu)造器作為參數(shù)

構(gòu)造器的使用

條件構(gòu)造器包含 QueryWrapper 和 LambdaQueryWrapper 兩個(gè)類。

LambdaQueryWrapper 為函數(shù)式編程的書寫習(xí)慣,與 QueryWrapper 表達(dá)的意義相同,優(yōu)點(diǎn)是簡化了代碼。

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

// 1、直接用new創(chuàng)建// 創(chuàng)建對象的方式會(huì)更加靈活,可配合 if()...else 達(dá)到更靈活的sql拼接LambdaQueryWrapper<TCenterPoint> wrapper = new LambdaQueryWrapper<>();wrapper.eq(TCenterPoint::getPoint, 10.0);// 2、靜態(tài)方法創(chuàng)建 Wrappers.<>lambdaQuery()// 構(gòu)造器方法多為鏈?zhǔn)骄幊?可連寫Wrappers.<TCenterPoint>lambdaQuery().eq(TCenterPoint::getPoint, 10.0)// 3、靜態(tài)方法創(chuàng)建 Wrappers.query() // query可接受對象 字段不為null則自動(dòng)拼接.eq()方法Wrappers.query(tUserDetail)

構(gòu)造器方法

/** * 源碼 * @param condition 執(zhí)行條件 可省略 * @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框架中較為不好理解,總之,其結(jié)果是實(shí)現(xiàn)一個(gè)查詢條件和多個(gè)條件并列的關(guān)系

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() 方法更新實(shí)體,只有字段內(nèi)容不為空,才會(huì)觸發(fā)字段內(nèi)容的修改

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

刪除(D)

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

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

到此這篇關(guān)于Mybatis-Plus使用條件構(gòu)造器增刪改查的文章就介紹到這了,更多相關(guān)Mybatis Plus條件構(gòu)造器增刪改查內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Mybatis 數(shù)據(jù)庫
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
伊人精品视频| 精品美女在线视频| 亚洲深爱激情| 91欧美精品| 久久青青视频| 视频一区二区中文字幕| 欧美国产不卡| 日韩国产一区| 亚洲精选成人| 久久久久久夜| 日韩一区二区三区在线看| 石原莉奈在线亚洲三区| a国产在线视频| 免费看日韩精品| 精品国产不卡| 亚洲精品自拍| 国产99亚洲| 久久精品日韩欧美| 在线精品一区| 三级在线看中文字幕完整版| 国产精品白丝久久av网站| 性色一区二区| 亚洲精品第一| 欧美日韩一二三四| 久久这里只有精品一区二区| 综合激情一区| 久久av电影| 蜜桃一区二区三区在线观看| 久久久噜噜噜| 国产三级精品三级在线观看国产| 国产精品调教| 欧美日韩免费观看一区=区三区| 久久99性xxx老妇胖精品| 国产视频一区免费看| 老色鬼精品视频在线观看播放| 欧美日韩午夜| 在线人成日本视频| 国产免费av国片精品草莓男男| 日韩精品久久久久久久软件91| 亚洲精品美女91| 久久久五月天| 正在播放日韩精品| 国产精品主播| 久久黄色影视| 婷婷综合电影| 亚洲精品视频一二三区| 亚洲九九精品| 亚洲激情国产| 久久精品青草| a日韩av网址| 亚洲国产福利| 亚洲免费成人av在线| 久久亚洲影院| 亚洲视频综合| 日韩中文字幕在线一区| 国产精品伦一区二区| 国产精品网站在线看| 亚洲播播91| 久久精品国产99国产精品| 国内精品伊人| 国产日产精品_国产精品毛片| 亚洲精品观看| 免费中文字幕日韩欧美| 国产精品xvideos88| 亚洲天堂av影院| 国产一区二区三区黄网站| 麻豆91在线播放| 国产精品.xx视频.xxtv| 日韩精品第一区| sm捆绑调教国产免费网站在线观看| 天使萌一区二区三区免费观看| 日本在线成人| 免费在线观看精品| 亚洲精选久久| 日本不卡的三区四区五区| 精品国产一区二区三区2021| 日韩在线电影| 中文视频一区| 日韩va亚洲va欧美va久久| 久久91导航| 麻豆中文一区二区| 国产精品成人a在线观看| 美女网站久久| 先锋亚洲精品| 99精品视频精品精品视频| 日韩一区精品| 日韩不卡一区二区| 麻豆一区二区99久久久久| 欧洲精品一区二区三区| 日韩国产欧美一区二区三区| 亚洲开心激情| 国产日本久久| 国产在视频一区二区三区吞精| 亚州av乱码久久精品蜜桃| 91福利精品在线观看| 精品国产第一福利网站| 97se亚洲| 国产日韩1区| 精品精品99| 好看不卡的中文字幕| 三级一区在线视频先锋| 国产欧美日韩一区二区三区在线| 日韩成人三级| 国产综合欧美| 亚洲免费成人av在线| sm久久捆绑调教精品一区| 久久福利一区| 日韩精品电影一区亚洲| 午夜亚洲精品| 久久精品毛片| 日韩欧美网址| 亚洲不卡视频| av中文资源在线资源免费观看| 蜜桃视频一区二区三区| 欧美激情另类| 日韩av一级片| 久久中文字幕二区| 国产欧美亚洲一区| 亚洲高清av| 亚洲欧美久久| 麻豆91小视频| 爽爽淫人综合网网站| 久久国产亚洲精品| 视频一区中文字幕精品| 久久aⅴ国产紧身牛仔裤| 免费中文字幕日韩欧美| 国产精品原创| 亚洲精品欧美| 亚洲欧美日韩国产综合精品二区| 91亚洲国产| 蜜臀久久99精品久久久画质超高清| 福利一区二区免费视频| 欧美国产亚洲精品| 另类中文字幕国产精品| 日韩av自拍| 日韩激情综合| 亚久久调教视频| 日韩制服丝袜先锋影音| 精品一区二区三区四区五区| 国产精品毛片在线看| 日本一二区不卡| 欧美日韩精品免费观看视频完整| 另类中文字幕国产精品| 国产精品成人一区二区不卡| 国产精选久久| 久久精品影视| 日韩精品国产精品| 91精品精品| 国产精品2023| 性欧美长视频| 欧美激情国产在线| 亚洲综合图色| 日韩精品欧美激情一区二区| 亚洲午夜国产成人| 精品资源在线| 影音先锋久久精品| av综合电影网站| 欧美日韩一视频区二区| 国产精品美女午夜爽爽| 日韩和欧美一区二区三区| 免费看精品久久片| 精品一区二区三区在线观看视频 | 久久天堂精品| 日本不卡视频一二三区| 香蕉视频成人在线观看| 日韩视频中文| 老司机免费视频一区二区| 欧美aⅴ一区二区三区视频| 麻豆精品视频在线观看| 免费在线亚洲| 综合欧美亚洲| 午夜久久一区| 久久久国产精品一区二区中文| 欧美日韩日本国产亚洲在线| 日韩视频精品在线观看| 在线综合视频| 国产一区二区三区日韩精品 | 久久国产影院| 国产精品三p一区二区| 欧美自拍一区| 在线亚洲自拍| 三级小说欧洲区亚洲区| 石原莉奈在线亚洲二区| 蜜桃tv一区二区三区| 亚洲二区视频| 91成人精品| 亚洲爱爱视频| 国产一区二区三区不卡av| 国产精品红桃| 好看不卡的中文字幕| 欧美一区=区| 婷婷激情一区| 成人自拍av| 久久久成人网| 美女网站一区| 激情欧美丁香| 亚洲色诱最新| 日韩在线精品| 国产经典一区| 国产日韩欧美高清免费|