最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2021年05月12日 09:30:29   作者:旺卡先生  
這篇文章主要介紹了Mybatis-Plus使用條件構(gòu)造器增刪改查,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

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ù)層

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

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

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

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

}

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

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

Mapper 數(shù)據(jù)層

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

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

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

**mapper.xml **

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

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//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_time
        from t_rural_info
    </sql>

    <select id="getRuralInfoById" parameterType="Long" resultMap="RuralInfoResult">
        <include refid="selectRuralInfoVo"/>
        where id = #{id}
    </select>
</mapper>

增刪改查


新增(C)

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

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

saveBatch

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

saveOrUpdate

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

查詢(R)

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

查詢實體

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

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

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

查詢集合

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

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

構(gòu)造器的使用

條件構(gòu)造器包含 QueryWrapperLambdaQueryWrapper 兩個類。

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

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

// 1、直接用new創(chuàng)建
// 創(chuàng)建對象的方式會更加靈活,可配合 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則自動拼接.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 值2
like LIKE ‘%值%'
notLike NOT LIKE ‘%值%'
likeLeft LIKE ‘%值' ; likeRight同理
isNull 字段 IS NULL;
orderByAsc 排序:ORDER BY 字段, … ASC; orderByDesc同理

在sql中使用and和or,邏輯只需寫在where中即可,在ORM框架中較為不好理解,總之,其結(jié)果是實現(xiàn)一個查詢條件和多個條件并列的關(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() 方法更新實體,只有字段內(nèi)容不為空,才會觸發(fā)字段內(nèi)容的修改

/**
 * 修改圖文課程管理
 */
@PutMapping
public 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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用HttpClient調(diào)用接口的實例講解

    使用HttpClient調(diào)用接口的實例講解

    下面小編就為大家?guī)硪黄褂肏ttpClient調(diào)用接口的實例講解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • 如何用java程序(JSch)運行遠(yuǎn)程linux主機上的shell腳本

    如何用java程序(JSch)運行遠(yuǎn)程linux主機上的shell腳本

    這篇文章主要介紹了如何用java程序(JSch)運行遠(yuǎn)程linux主機上的shell腳本,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08
  • Java實現(xiàn)分頁的幾種方法詳細(xì)解析

    Java實現(xiàn)分頁的幾種方法詳細(xì)解析

    這篇文章主要介紹了Java實現(xiàn)分頁的幾種方法詳細(xì)解析,在Java中想實現(xiàn)分頁功能有幾種常用的方法,今天我們就來詳細(xì)解析一下,文中提供了解決思路和部分實現(xiàn)代碼,需要的朋友可以參考下
    2023-11-11
  • Springboot死信隊列?DLX?配置和使用思路分析

    Springboot死信隊列?DLX?配置和使用思路分析

    死信隊列簡稱就是DLX,死信交換機和死信隊列和普通的沒有區(qū)別,當(dāng)消息成為死信后,如果該隊列綁定了死信交換機,則消息會被死信交換機重新路由到死信隊列,本文給大家介紹Springboot死信隊列?DLX的相關(guān)知識,感興趣的朋友一起看看吧
    2022-03-03
  • Java超詳細(xì)教你寫一個網(wǎng)絡(luò)購書系統(tǒng)案例

    Java超詳細(xì)教你寫一個網(wǎng)絡(luò)購書系統(tǒng)案例

    這篇文章主要介紹了怎么用Java來寫一個購書系統(tǒng),購買書籍主要需要每本書的編號、書名、單價、庫存屬性,能夠讓客戶通過編號來選書,感興趣的朋友跟隨文章往下看看吧
    2022-03-03
  • Shiro+Cas微服務(wù)化及前后端完全分離

    Shiro+Cas微服務(wù)化及前后端完全分離

    這篇文章主要為大家詳細(xì)介紹了Shiro+Cas微服務(wù)化及前后端完全分離,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • Spring AOP實現(xiàn)復(fù)雜的日志記錄操作(自定義注解)

    Spring AOP實現(xiàn)復(fù)雜的日志記錄操作(自定義注解)

    Spring AOP實現(xiàn)復(fù)雜的日志記錄操作(自定義注解),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Post請求參數(shù)是數(shù)組或者List時的請求處理方式

    Post請求參數(shù)是數(shù)組或者List時的請求處理方式

    這篇文章主要介紹了Post請求參數(shù)是數(shù)組或者List時的請求處理方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • java使用poi導(dǎo)出Excel的方法

    java使用poi導(dǎo)出Excel的方法

    這篇文章主要為大家詳細(xì)介紹了java使用poi導(dǎo)出Excel的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • kafka生產(chǎn)實踐(詳解)

    kafka生產(chǎn)實踐(詳解)

    下面小編就為大家?guī)硪黄猭afka生產(chǎn)實踐(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08

最新評論

靖宇县| 西青区| 罗江县| 内乡县| 夏邑县| 建宁县| 石家庄市| 横峰县| 蓬莱市| 兴国县| 乌兰浩特市| 乌苏市| 巴彦淖尔市| 广安市| 许昌市| 双城市| 巧家县| 石城县| 深水埗区| 田林县| 卢龙县| 贞丰县| 阜宁县| 汽车| 泽库县| 肥城市| 晋州市| 江华| 新沂市| 江津市| 景东| 长治县| 新兴县| 商洛市| 且末县| 华阴市| 河曲县| 久治县| 丰原市| 澜沧| 四会市|