Mybatis plus無(wú)介紹快使用,自定義sql語(yǔ)句CRUD增刪改查附源碼(二)

問(wèn)題背景

因?yàn)閙ybatis plus非常的流行胀屿,雖然平常mybatis generator也夠用了溉痢,但多會(huì)一個(gè)僻造,看別人的代碼就輕松一點(diǎn)
注意事項(xiàng):

Mybatis-plus無(wú)介紹快使用,CRUD增刪改查基本使用附源碼(一)

Mybatis-plus無(wú)介紹快使用梯码,自定義sql語(yǔ)句CRUD增刪改查附源碼(二)

Mybatis-plus無(wú)介紹快使用宝泵,自帶封裝service層的使用附源碼(三)

Mybatis-plus無(wú)介紹快使用,注解的使用(四)

Mybatis-plus無(wú)介紹快使用轩娶,Wrapper條件構(gòu)造器的使用附源碼(五)

Mybatis-plus無(wú)介紹快使用儿奶,分頁(yè)插件和樂(lè)觀鎖插件的使用附源碼(六)

Mybatis-plus無(wú)介紹快使用,枚舉變量的使用附源碼(七)

Mybatis-plus無(wú)介紹快使用罢坝,多數(shù)據(jù)源的使用(八)

Mybatis-plus無(wú)介紹快使用廓握,MybatisX自動(dòng)生成代碼插件的使用(九)

Mybatis-plus無(wú)介紹快使用,可繼承通用的基礎(chǔ)實(shí)體類(十)

項(xiàng)目搭建

1 很久上篇的CRUD基礎(chǔ)嘁酿,這個(gè)篇章講解自定義CRUD隙券,現(xiàn)在resources文件夾下創(chuàng)建mapper文件夾



2 添加application.yml的mapper的xml掃描路徑

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://10.10.195.193:3306/fusion?severTimezone=Asia/Shanghai&allowMultiQueries=true&autoReconnect=true&characterEncoding=UTF-8&useUnicode=true&useSSL=false
    username: fusion
    password: iEx8c

#生成sql日志打印,一般關(guān)閉
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  #classpath*就是路徑resources
  mapper-locations: classpath*:/mapper/**/*.xml

3 ctrl+alt+s打開setting闹司,創(chuàng)建mapper模板


<?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="">


</mapper>

4 在mapper文件夾下創(chuàng)建UserMapper.xml文件娱仔,名字必須和UserMapper的接口名一致




5 編寫自定義sql語(yǔ)句, resultType返回結(jié)果類型

<?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.yg.mybatisplus.mapper.UserMapper">
    <!--selectUserById-->
    <select id="selectUserById" resultType="com.yg.mybatisplus.entity.User">
        select id, name, age, email
        from user
        where id = #{id}
    </select>
    <!--selectMapById-->
    <select id="selectMapById" resultType="map">
        select id, name, age, email
        from user
        where id = #{id}
    </select>

</mapper>

6 UserMapper接口編寫

package com.yg.mybatisplus.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yg.mybatisplus.entity.User;
import org.springframework.stereotype.Repository;

import java.util.Map;

/**
 * @Author suolong
 * @Date 2022/6/2 17:25
 * @Version 2.0
 */
@Repository
public interface UserMapper extends BaseMapper<User> {

    /**
     * @Caption 根據(jù)id查詢用戶信息為map集合
     * @Param id
     * @Return map<字段名, 值>
     */
    Map<String, Object> selectMapById(Long id);

    /**
     * @Caption 根據(jù)id查詢用戶信息
     * @Param id
     * @Return User
     */
    User selectUserById(Long id);

}

7 測(cè)試程序

package com.yg.mybatisplus;

import com.yg.mybatisplus.entity.User;
import com.yg.mybatisplus.mapper.UserMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @Author suolong
 * @Date 2022/6/2 17:42
 * @Version 2.0
 */

@SpringBootTest
public class MybatisPlusTest {

    @Autowired
    UserMapper userMapper;


    @Test
    void selectTest(){
        //全查
        List<User> users = userMapper.selectList(null);
        users.forEach(System.out::println);
    }

    /**
     * 測(cè)試插入一條數(shù)據(jù)
     * MyBatis-Plus在實(shí)現(xiàn)插入數(shù)據(jù)時(shí),會(huì)默認(rèn)基于雪花算法的策略生成id
     */
    @Test
    public void testInsert(){
        User user = new User();
        user.setName("Vz1");
        user.setAge(211);
        user.setEmail("vz@oz61.cn");
        int result = userMapper.insert(user);
        System.out.println(result > 0 ? "添加成功游桩!" : "添加失斏取耐朴!");
        System.out.println("受影響的行數(shù)為:" + result);
        //1527206783590903810(當(dāng)前 id 為雪花算法自動(dòng)生成的id)
        System.out.println("id自動(dòng)獲取" + user.getId());
    }

    /**
     * 測(cè)試根據(jù)id刪除一條數(shù)據(jù)
     */
    @Test
    public void testDeleteById(){
        int result = userMapper.deleteById(1533011356262625282L);
        System.out.println(result > 0 ? "刪除成功!" : "刪除失旐镌鳌筛峭!");
        System.out.println("受影響的行數(shù)為:" + result);
    }

    /**
     * 測(cè)試通過(guò)id批量刪除數(shù)據(jù)
     */
    @Test
    public void testDeleteBatchIds(){
        List<Long> ids = Arrays.asList(1532349895093833729L,1533012537454157826L,1533012657583161345L);
        int result = userMapper.deleteBatchIds(ids);
        System.out.println(result > 0 ? "刪除成功!" : "刪除失斉忝俊影晓!");
        System.out.println("受影響的行數(shù)為:" + result);
    }

    /**
     * 測(cè)試根據(jù)Map集合中所設(shè)置的條件刪除數(shù)據(jù)
     */
    @Test
    public void testDeleteByMap(){
        //當(dāng)前演示為根據(jù)name和age刪除數(shù)據(jù)
        //執(zhí)行SQL為:DELETE FROM user WHERE name = ? AND age = ?
        Map<String,Object> map = new HashMap<>();
        map.put("name","Vz1 ");
        map.put("age",211);
        int result = userMapper.deleteByMap(map);
        System.out.println(result > 0 ? "刪除成功!" : "刪除失旈莺獭挂签!");
        System.out.println("受影響的行數(shù)為:" + result);
    }

    /**
     * 測(cè)試根據(jù)id修改用戶信息, 只修改改變的值, 其他信息保持原值
     */
    @Test
    public void testUpdateById(){
        //執(zhí)行SQL為: UPDATE user SET name=?, age=?, email=? WHERE id=?
        User user = new User();
        user.setId(5L);
        user.setEmail("Vz@sina.com");
        int result = userMapper.updateById(user);
        System.out.println(result > 0 ? "修改成功!" : "修改失斉尾饵婆!");
        System.out.println("受影響的行數(shù)為:" + result);
    }

    /**
     * 測(cè)試根據(jù)id查詢用戶數(shù)據(jù)
     */
    @Test
    public void testSelectById(){
        User user = userMapper.selectById(1L);
        System.out.println(user);
    }

    /**
     * 根據(jù)多個(gè)id查詢用戶數(shù)據(jù)
     */
    @Test
    public void testSelectBatchIds(){
        //執(zhí)行SQL為:SELECT id,name,age,email FROM user WHERE id IN ( ? , ? , ? )
        List<Long> ids = Arrays.asList(1L,2L,3L);
        List<User> users = userMapper.selectBatchIds(ids);
        users.forEach(System.out::println);
    }

    /**
     * 根據(jù)Map所設(shè)置的條件查詢用戶
     */
    @Test
    public void testSelectByMap(){
        //執(zhí)行SQL為:SELECT id,name,age,email FROM user WHERE age = ?
        Map<String,Object> map = new HashMap<>();
        map.put("age",18);
        List<User> users = userMapper.selectByMap(map);
        users.forEach(System.out::println);
    }


    /**
     * 測(cè)試根據(jù)id查詢用戶數(shù)據(jù), 返回User對(duì)象
     */
    @Test
    public void testSelectUserById(){
        User user = userMapper.selectUserById(1L);
        System.out.println(user);
    }


    /**
     * 測(cè)試根據(jù)id查詢用戶數(shù)據(jù),返回map
     */
    @Test
    public void testSelectMapById(){
        Map<String, Object> stringObjectMap = userMapper.selectMapById(1L);
        System.out.println(stringObjectMap);
    }

}

8 項(xiàng)目目錄


總結(jié)

  • 需要自定的增刪改查的語(yǔ)句戏售,可以通過(guò)寫xml配置文件




作為程序員第 150 篇文章侨核,每次寫一句歌詞記錄一下,看看人生有幾首歌的時(shí)間灌灾,wahahaha ...

Lyric: 灰狼啃食著水鹿的骨頭

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末芹关,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子紧卒,更是在濱河造成了極大的恐慌,老刑警劉巖诗祸,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件跑芳,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡直颅,警方通過(guò)查閱死者的電腦和手機(jī)博个,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)功偿,“玉大人盆佣,你說(shuō)我怎么就攤上這事⌒岛桑” “怎么了共耍?”我有些...
    開封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)吨瞎。 經(jīng)常有香客問(wèn)我痹兜,道長(zhǎng),這世上最難降的妖魔是什么颤诀? 我笑而不...
    開封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任字旭,我火速辦了婚禮对湃,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘遗淳。我一直安慰自己拍柒,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開白布屈暗。 她就那樣靜靜地躺著拆讯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪恐锦。 梳的紋絲不亂的頭發(fā)上往果,一...
    開封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音一铅,去河邊找鬼陕贮。 笑死,一個(gè)胖子當(dāng)著我的面吹牛潘飘,可吹牛的內(nèi)容都是我干的肮之。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼卜录,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼戈擒!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起艰毒,我...
    開封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤筐高,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后丑瞧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體柑土,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年绊汹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了稽屏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡西乖,死狀恐怖狐榔,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情获雕,我是刑警寧澤薄腻,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站届案,受9級(jí)特大地震影響被廓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜萝玷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一嫁乘、第九天 我趴在偏房一處隱蔽的房頂上張望昆婿。 院中可真熱鬧,春花似錦蜓斧、人聲如沸仓蛆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)看疙。三九已至,卻和暖如春直奋,著一層夾襖步出監(jiān)牢的瞬間能庆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工脚线, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留搁胆,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓邮绿,卻偏偏與公主長(zhǎng)得像渠旁,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子船逮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容