成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

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

瀏覽:4日期: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 數據庫
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
日韩精品久久久久久| 91久久免费观看| 久久久久欧美精品| 国产精品美女久久久久久| 成人a免费在线看| 91精品久久久久久久99蜜桃| 久久99热这里只有精品| 欧美日韩中文另类| 老司机午夜精品| 欧美视频一区二| 美国十次综合导航| 欧美午夜片在线看| 精品亚洲国产成人av制服丝袜| 欧美色图片你懂的| 精品一区二区三区影院在线午夜 | 日本va欧美va瓶| 色香色香欲天天天影视综合网| 日本va欧美va精品发布| 欧洲av在线精品| 国产九色精品成人porny| 欧美一区二区视频观看视频| 丁香婷婷综合激情五月色| 日韩免费一区二区三区在线播放| 成人小视频免费在线观看| 精品国产污污免费网站入口| 成人午夜激情视频| 久久综合色鬼综合色| 欧美激情第六页| 日韩精品一区在线| 欧美精品1区| 亚洲天堂免费看| 国产精品美女诱惑| 天堂影院一区二区| 欧美日韩一区二区三区高清| 国产在线精品免费| 精品国产乱码久久久久久免费| 欧美日韩国产不卡在线看| 亚洲精品高清在线| 91福利国产成人精品照片| 国产伦精品一区二区三区免费| 欧美本精品男人aⅴ天堂| 91在线小视频| 亚洲欧美日韩中文播放| 一本大道久久a久久精品综合| 激情综合色播五月| 精品国产欧美一区二区| 欧美午夜影院| 洋洋成人永久网站入口| 一本久久a久久精品亚洲| 国产裸体歌舞团一区二区| 久久久精品黄色| 国内精品久久久久久久97牛牛 | 国产伦精品一区二区| 男女视频一区二区| 日韩亚洲欧美一区| 欧美精品一区三区在线观看| 亚洲精品免费在线播放| 91精品福利视频| 成人性生交大片免费| 国产精品麻豆视频| 久久久99国产精品免费| 国产一区二区三区在线观看免费| 久久综合99re88久久爱| 亚洲三级毛片| 精品一区二区三区av| 久久精品夜夜夜夜久久| 亚洲一区二区毛片| 国产乱码精品一区二区三区忘忧草| 中文字幕乱码一区二区免费| 亚洲一区激情| 国产91综合网| 欧美成人福利视频| aa级大片欧美三级| 国产在线播精品第三| 国产日韩欧美不卡在线| 久久精品天堂| 91在线免费播放| 亚洲一区二区五区| 日韩一二三区视频| 亚洲一区精彩视频| 不卡av在线免费观看| 一区二区欧美国产| 欧美一区二区三区四区视频| 亚洲欧洲日韩综合二区| 久久av老司机精品网站导航| 中文字幕久久午夜不卡| 一本到一区二区三区| 91视频免费播放| 日韩va欧美va亚洲va久久| 国产日韩欧美不卡在线| 色婷婷精品久久二区二区蜜臂av| 91视频在线观看| 日本vs亚洲vs韩国一区三区| 国产偷v国产偷v亚洲高清| 一本一道久久a久久精品综合蜜臀| 91网站黄www| 久久精品国产99国产精品| 国产精品久久久久影院亚瑟| 欧美色综合影院| 一区在线视频观看| 国产乱子伦视频一区二区三区 | 久久精品久久精品| 国产精品久久国产精麻豆99网站| 欧美三日本三级三级在线播放| 欧美黄色一级视频| 激情小说欧美图片| 亚洲女厕所小便bbb| 日韩欧美成人一区| 久久久久久国产精品mv| 欧美日韩1080p| 国产一区二区三区国产| 亚洲午夜影视影院在线观看| 精品sm在线观看| 在线看日韩精品电影| 亚洲激情欧美| 91亚洲精品一区二区乱码| 亚洲图片欧美色图| 欧美激情一区在线| 欧美一区二区在线免费播放| 亚洲一区免费看| 欧美激情第六页| 国产成人精品一区二区三区网站观看 | 国产精品久久久久9999高清| caoporen国产精品视频| 另类的小说在线视频另类成人小视频在线 | 欧美福利视频一区| 亚洲尤物在线| 国模精品一区二区三区| 粉嫩绯色av一区二区在线观看| 五月天丁香久久| 亚洲欧洲中文日韩久久av乱码| 欧美精品一区二区久久婷婷| 欧美乱熟臀69xxxxxx| 色婷婷久久99综合精品jk白丝| 亚洲精品在线视频观看| 欧美一区二区三区在线免费观看| 韩国精品免费视频| 视频一区视频二区中文字幕| 国产精品美女视频| 久久综合色一综合色88| 6080yy午夜一二三区久久| 美女精品一区| 亚洲每日更新| 欧美视频日韩| 99久久精品免费看| 成人小视频免费在线观看| 极品少妇一区二区三区精品视频 | 欧美xxx在线观看| 成人午夜精品一区二区三区| 精品中文字幕一区二区小辣椒| 亚洲一区二区在线观看视频| 亚洲欧洲精品成人久久奇米网| 精品91自产拍在线观看一区| 91精品国产91久久综合桃花| 欧美午夜不卡视频| 色嗨嗨av一区二区三区| 久久国产一区二区| 新狼窝色av性久久久久久| 国产精品av一区二区| 成人天堂资源www在线| 国产成人精品三级麻豆| 国产精品91xxx| 国产一区二区成人久久免费影院| 麻豆91精品91久久久的内涵| 三级久久三级久久| 婷婷综合五月天| 天天亚洲美女在线视频| 亚洲第一电影网| 亚洲成人www| 亚洲一区二区三区精品在线| 亚洲精品一卡二卡| 亚洲最新视频在线播放| 亚洲免费伊人电影| 亚洲一区在线免费观看| 亚洲第一福利一区| 天堂影院一区二区| 六月丁香综合在线视频| 九九精品视频在线看| 国内精品伊人久久久久av影院| 国产在线视频一区二区| 国产一区在线不卡| 粉嫩aⅴ一区二区三区四区| 成人av在线资源| 91在线porny国产在线看| 91蝌蚪porny| 国内视频一区| 99视频在线精品国自产拍免费观看| 亚洲免费成人| 久久久www| 7777精品久久久大香线蕉| 欧美大黄免费观看| 国产日韩欧美高清| 日韩美女视频一区二区| 一区二区欧美国产| 人人爽香蕉精品| 国产精品1区2区3区在线观看| 成av人片一区二区| 狠狠爱综合网| 亚洲免费在线| 欧美中文字幕久久|