国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

No Spring環(huán)境Mybatis-Plus批量插入并返回主鍵的兩種方式

這篇具有很好參考價(jià)值的文章主要介紹了No Spring環(huán)境Mybatis-Plus批量插入并返回主鍵的兩種方式。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

批量插入返回主鍵,spring,mybatis,java


批量插入,可以把Mybatis-Plus看作是Mybatis加強(qiáng)版;故Mybatis中的相關(guān)操作都可以在Mybatis-Plus中使用;在mysql數(shù)據(jù)庫(kù)中支持批量插入,所以只要配置useGeneratedKeys和keyProperty就可以批量插入并返回主鍵了。

下面是批量插入的Dao層接口
?


?一注解方式:

? ? ?直接擼代碼:

? ?

package org.jd.data.netty.big.window.chat.frame.ui.room.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Param;
import org.jd.data.netty.big.window.chat.entity.SysRandomColor;

import java.util.List;


/**
 * <p>@Description:Mapper隨機(jī)顏色服務(wù)接口</p>
 * <p>@Copyright: Copyright (c)2,023</p>
 * <p>@Company: 北京惠農(nóng)科技有限公司</p>
 * <P>@Created Date :2023年03月19日</P>
 * <P>@version 1.0
 * <p>@author yh19166</p>
 */
@Mapper
public interface SysRandomColorMapper extends BaseMapper<SysRandomColor> {
    /**
     * 批量插入
     *
     * @param sysRandomColorList 集合參數(shù)
     * @return {@link Integer} 返回插入的總條數(shù)
     */
    @Insert("<script>" +
            "     insert into sys_random_color (color_zh_name,color_cn_name,color_hexadecimal,color_rgb_value,create_time,update_time) values " +
            " <foreach" +
            "     collection='aList' item='c' separator=','>(#{c.colorZhName},#{c.colorCnName},#{c.colorHexadecimal},#{c.colorRgbValue},#{c.createTime},#{c.updateTime})" +
            " </foreach>" +
            "</script>")
    @Options(useGeneratedKeys = true, keyProperty = "colorId")
    int batchSave(@Param("aList") List<SysRandomColor> sysRandomColorList);

}

?第二種: XML方式

<?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="org.jd.data.netty.big.window.chat.frame.ui.room.mapper.SysRandomColorMapper">

    <insert id="batchSave" useGeneratedKeys="true" keyProperty="colorId">
        insert into sys_random_color (color_zh_name,color_cn_name,color_hexadecimal,color_rgb_value,create_time,update_time)
        values
        <foreach collection="aList" item="c" separator=",">
            (#{c.colorZhName},#{c.colorCnName},#{c.colorHexadecimal},#{c.colorRgbValue},#{c.createTime},#{c.updateTime})
        </foreach>
    </insert>
</mapper>

測(cè)試實(shí)例:


package org.jd.data.netty.big.window.chat.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;

import java.io.Serializable;
import java.util.Date;

/**
 * <p>@Description: 顧客入住信息領(lǐng)域模型</p>
 * <p>@Copyright: Copyright (c)2,023</p>
 * <p>@Company: 北京惠農(nóng)科技有限公司</p>
 * <P>@Created Date :2023年03月19日</P>
 * <P>@version 1.0
 * <p>@author yh19166</p>
 */
@TableName("sys_random_color")
@Data
@NoArgsConstructor
public class SysRandomColor implements Serializable {
    /**
     * =========================================================================================
     * 注解名稱    功能
     * @Setter 自動(dòng)添加類中所有屬性相關(guān)的 set 方法
     * @Getter 自動(dòng)添加類中所有屬性相關(guān)的 get 方法
     * @Builder 使得該類可以通過(guò) builder (建造者模式)構(gòu)建對(duì)象
     * @RequiredArgsConstructor 生成一個(gè)該類的構(gòu)造方法,禁止無(wú)參構(gòu)造
     * @ToString 重寫該類的toString()方法
     * @EqualsAndHashCode 重寫該類的equals()和hashCode()方法
     * @Data 等價(jià)于上面的@Setter、@Getter、@RequiredArgsConstructor、@ToString、@EqualsAndHashCode
     * ===========================================================================================
     */

    @TableField(exist = false)
    // 不需要為該字段生成get方法
    @Getter(AccessLevel.NONE)
    @Setter(AccessLevel.NONE)
    private static final long serialVersionUID = 1L;

    /**
     * 顏色I(xiàn)D
     */
    @TableId(value = "color_id", type = IdType.AUTO)
    private Long colorId;

    /**
     * 中文名稱
     */
    @TableField(value = "color_zh_name")
    private String colorZhName;

    /**
     * 英文名稱
     */
    @TableField(value = "color_cn_name")
    private String colorCnName;

    /**
     * 16進(jìn)制
     */
    @TableField(value = "color_hexadecimal")
    private String colorHexadecimal;

    /**
     * 顏色RGB值
     */
    @TableField(value = "color_rgb_value")
    private String colorRgbValue;

    /**
     * 創(chuàng)建時(shí)間
     */
    private Date createTime;

    /**
     * 更新時(shí)間
     */
    private Date updateTime;


    @Override
    public String toString() {
        return "SysRandomColor{" +
                ", colorId = " + colorId +
                ", colorZhName = " + colorZhName +
                ", colorCnName = " + colorCnName +
                ", colorHexadecimal = " + colorHexadecimal +
                ", colorRgbValue = " + colorRgbValue +
                ", createTime = " + createTime +
                ", updateTime = " + updateTime +
                "}";
    }
}


測(cè)試類:


package org.jd.data.frame.big.window.service;


import cn.hutool.core.convert.Convert;
import org.jd.data.netty.big.window.chat.entity.SysRandomColor;
import org.jd.data.netty.big.window.chat.frame.ui.room.provider.SysRandomColorProvider;
import org.jd.data.netty.big.window.chat.util.FileReaderLineUtil;
import org.jd.data.netty.big.window.chat.util.handler.BeanInstanceFactoryHandler;
import org.junit.Before;
import org.junit.Test;

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

public class SysRandomColorProviderTest {

    private Optional<SysRandomColorProvider> sysRandomColorProviderInstance;

    @Before
    public void init() {
        sysRandomColorProviderInstance = BeanInstanceFactoryHandler.getBeanInstance(SysRandomColorProvider.class);
    }

    @Test
    public void saveSysRandomColor() {
        if (sysRandomColorProviderInstance.isPresent()) {
            SysRandomColorProvider sysRandomColorProvider = sysRandomColorProviderInstance.get();
            Optional<List<FileReaderLineUtil.RandomColor>> result = FileReaderLineUtil.productColor();
            if (result.isPresent()) {
                List<SysRandomColor> targetList = new ArrayList<>();
                result.get().stream().forEach(e -> {
                    // 相同字段屬性間的拷貝
                    SysRandomColor sysRandomColor = Convert.convert(SysRandomColor.class, e);
                    targetList.add(sysRandomColor);
                });
                int n = sysRandomColorProvider.batchSaveRandomColor(targetList);
                System.out.println("返回插入的總條數(shù): " + n);
            }

        }
    }

    @Test
    public void list() {
        if (sysRandomColorProviderInstance.isPresent()) {
            SysRandomColorProvider sysRandomColorProvider = sysRandomColorProviderInstance.get();
            List<SysRandomColor> resultList = sysRandomColorProvider.list(null, null);
            System.out.println("resultList: "+resultList);
        }
    }
}


?數(shù)據(jù)提供者:

package org.jd.data.netty.big.window.chat.frame.ui.room.provider;

import org.jd.data.netty.big.window.chat.entity.SysRandomColor;
import org.jd.data.netty.big.window.chat.frame.ui.room.service.SysRandomColorService;
import org.jd.data.netty.big.window.chat.frame.ui.room.service.impl.SysRandomColorServiceImpl;
import org.jd.data.netty.big.window.chat.util.instance.annotion.AutoInstanceServiceBean;

import java.util.List;

public class SysRandomColorProvider {


    private SysRandomColorService sysRandomColorService;

    @AutoInstanceServiceBean(value = SysRandomColorServiceImpl.class)
    public void setSysRandomColorService(SysRandomColorService sysRandomColorService) {
        this.sysRandomColorService = sysRandomColorService;
    }

    public int saveRandomColor(SysRandomColor sysRandomColor){
        return sysRandomColorService.saveSysRandomColor(sysRandomColor);
    }

    public int batchSaveRandomColor(List<SysRandomColor> randomColorList){
        return sysRandomColorService.batchSaveRandomColor(randomColorList);
    }

    public List<SysRandomColor> list(String colorZhName,String colorCnName){
        return sysRandomColorService.list(colorZhName,colorCnName);
    }
}


?服務(wù)接口及實(shí)現(xiàn)類:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-705042.html



package org.jd.data.netty.big.window.chat.frame.ui.room.service;


import org.jd.data.netty.big.window.chat.entity.SysRandomColor;
import java.util.List;

/**
 * <p>@Description: 隨機(jī)顏色服務(wù)接口</p>
 * <p>@Copyright: Copyright (c)2,023</p>
 * <p>@Company: 北京惠農(nóng)科技有限公司</p>
 * <P>@Created Date :2023年03月19日</P>
 * <P>@version 1.0
 * <p>@author yh19166</p>
 */
public interface SysRandomColorService{

    int saveSysRandomColor(SysRandomColor sysRandomColor);

    int batchSaveRandomColor(List<SysRandomColor> sysRandomColorList);

    /**
     * 獲取所有隨機(jī)顏色記錄
      * @param colorZhName
     * @param colorCnName
     * @return {@link List<SysRandomColor>}
     */
    List<SysRandomColor> list(String colorZhName,String colorCnName);

}


package org.jd.data.netty.big.window.chat.frame.ui.room.service.impl;


import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.apache.ibatis.session.SqlSession;
import org.jd.data.netty.big.window.chat.entity.SysRandomColor;
import org.jd.data.netty.big.window.chat.frame.ui.contant.SsyConstant;
import org.jd.data.netty.big.window.chat.frame.ui.room.mapper.SysRandomColorMapper;
import org.jd.data.netty.big.window.chat.frame.ui.room.service.SysRandomColorService;
import org.jd.data.netty.big.window.chat.util.ProxyDruidPoolUtil;

import java.util.List;

/**
 * <p>@Description: 房間類型信息服務(wù)實(shí)現(xiàn)類</p>
 * <p>@Copyright: Copyright (c)2,023</p>
 * <p>@Company: 北京惠農(nóng)科技有限公司</p>
 * <P>@Created Date :2023年03月19日</P>
 * <P>@version 1.0
 * <p>@author yh19166</p>
 */
public class SysRandomColorServiceImpl implements SysRandomColorService {

    private SysRandomColorMapper sysRandomColorMapper;

    @Override
    public int saveSysRandomColor(SysRandomColor sysRandomColor) {
        SqlSession session = ProxyDruidPoolUtil.getSession();
        int result;
        try {
            sysRandomColorMapper = session.getMapper(SysRandomColorMapper.class);
            result = sysRandomColorMapper.insert(sysRandomColor);
            session.commit();
        } catch (Exception e) {
            e.printStackTrace();
            result = SsyConstant.INSERT_DATABASE_ERROR;
            session.rollback();
        } finally {
            sysRandomColorMapper = null; // 幫助垃圾回收
            session.close();
        }
        return result;
    }

    /**
     * 返回總條數(shù)
     *
     * @param sysRandomColorList
     * @return
     */
    @Override
    public int batchSaveRandomColor(List<SysRandomColor> sysRandomColorList) {
        SqlSession session = ProxyDruidPoolUtil.getSession();
        int result;
        try {
            sysRandomColorMapper = session.getMapper(SysRandomColorMapper.class);
            result = sysRandomColorMapper.batchSave(sysRandomColorList);
            session.commit();
        } catch (Exception e) {
            session.rollback();
            result = SsyConstant.INSERT_DATABASE_ERROR;
        } finally {
            sysRandomColorMapper = null; // 幫助垃圾回收
            session.close();
        }
        return result;
    }

    @Override
    public List<SysRandomColor> list(String colorZhName, String colorCnName) {
        SqlSession session = ProxyDruidPoolUtil.getSession();
        try {
            QueryWrapper<SysRandomColor> queryWrapper = new QueryWrapper<>();
            queryWrapper.lambda()
                    .eq(StrUtil.isNotEmpty(colorCnName), SysRandomColor::getColorCnName, colorCnName)
                    .eq(StrUtil.isNotEmpty(colorZhName), SysRandomColor::getColorZhName, colorZhName)
                    .orderByAsc(SysRandomColor::getCreateTime);
            sysRandomColorMapper = session.getMapper(SysRandomColorMapper.class);
            return sysRandomColorMapper.selectList(queryWrapper);
        } catch (Exception e) {
            return null;
        } finally {
            sysRandomColorMapper = null;
            session.close();
        }
    }

}

到了這里,關(guān)于No Spring環(huán)境Mybatis-Plus批量插入并返回主鍵的兩種方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Mybatis-Plus的SQL注入器實(shí)現(xiàn)批量插入/修改,效率比較

    Mybatis-Plus的SQL注入器實(shí)現(xiàn)批量插入/修改,效率比較

    mysql支持一條sql語(yǔ)句插入多條數(shù)據(jù)。但是Mybatis-Plus中默認(rèn)提供的saveBatch、updateBatchById方法并不能算是真正的批量語(yǔ)句,而是遍歷實(shí)體集合執(zhí)行INSERT_ONE、UPDATE_BY_ID語(yǔ)句。 mybatis-plus雖然做了分批請(qǐng)求、一次提交的處理。但如果jdbc不啟用配置rewriteBatchedStatements,那么批量提交的s

    2024年02月11日
    瀏覽(25)
  • spring boot集成mybatis-plus——Mybatis Plus 批量 Insert_新增數(shù)據(jù)(圖文講解)

    spring boot集成mybatis-plus——Mybatis Plus 批量 Insert_新增數(shù)據(jù)(圖文講解)

    ?更新時(shí)間 2023-01-10 16:02:58 大家好,我是小哈。 本小節(jié)中,我們將學(xué)習(xí)如何通過(guò) Mybatis Plus 實(shí)現(xiàn) MySQL 批量插入數(shù)據(jù)。 先拋出一個(gè)問(wèn)題:假設(shè)老板給你下了個(gè)任務(wù),向數(shù)據(jù)庫(kù)中添加 100 萬(wàn)條數(shù)據(jù),并且不能耗時(shí)太久! 通常來(lái)說(shuō),我們向 MySQL 中新增一條記錄,SQL 語(yǔ)句類似如下:

    2024年02月04日
    瀏覽(28)
  • spring boot集成mybatis-plus——Mybatis Plus 新增數(shù)據(jù)并返回主鍵 ID(圖文講解)

    spring boot集成mybatis-plus——Mybatis Plus 新增數(shù)據(jù)并返回主鍵 ID(圖文講解)

    ?更新時(shí)間 2023-01-10 15:37:37 大家好,我是小哈。 本小節(jié)中,我們將學(xué)習(xí)如何通過(guò) Mybatis Plus 框架給數(shù)據(jù)庫(kù)表新增數(shù)據(jù),主要內(nèi)容思維導(dǎo)圖如下: Mybatis Plus 新增數(shù)據(jù)思維導(dǎo)圖 為了演示新增數(shù)據(jù),在前面小節(jié)中,我們已經(jīng)定義好了一個(gè)用于測(cè)試的用戶表, 執(zhí)行腳本如下: 定義一

    2024年02月02日
    瀏覽(41)
  • spring boot mybatis-plus dynamic-datasource 配置文件 相關(guān)依賴環(huán)境配置

    spring boot mybatis-plus dynamic-datasource 配置文件 相關(guān)依賴環(huán)境配置

    spring boot mybatis-plus dynamic-datasource 配置文件 相關(guān)依賴環(huán)境配置 ##yaml配置 ##父級(jí)pom.xml配置 ##子模塊pom.xml配置 ##表結(jié)構(gòu) ##Test.java ##TestMapper.xml ##TestMapper.java ##TestService.java ##TestController ##項(xiàng)目啟動(dòng)類BootStrap.java ##瀏覽器訪問(wèn) 192.168.3.188:8866/yym/test/v1/test

    2024年02月02日
    瀏覽(32)
  • Mybatis-plus批量操作

    ? ? ? ? 使用Mybatis-plus可以很方便的實(shí)現(xiàn)批量新增和批量修改,不僅比自己寫foreach遍歷方便很多,而且性能也更加優(yōu)秀。但是Mybatis-plus官方提供的批量修改和批量新增都是根據(jù)id來(lái)修改的,有時(shí)候我們需求其他字段,所以就需要我們自己修改一下。 ? ? ? ? 在Mybatis-plus的IS

    2024年02月11日
    瀏覽(19)
  • Mybatis-Plus批量更新原理

    Mybatis-Plus批量更新原理

    IService的updateBatchById方法 默認(rèn)batchSize = 1000 com.baomidou.mybatisplus.extension.service.impl.ServiceImpl#updateBatchById 構(gòu)建了一個(gè)回調(diào),進(jìn)入executeBatch方法 在這個(gè)方法基本就能看出來(lái)了,執(zhí)行1000次方法后執(zhí)行一次flushStatements,也就是說(shuō)理論上是積累了1000個(gè)更新sql,才進(jìn)行一次數(shù)據(jù)庫(kù)更新 使用

    2024年02月05日
    瀏覽(20)
  • mybatis-plus的批量新增insertBatchSomeColumn

    mybatis-plus的批量新增insertBatchSomeColumn

    MyBatis-Plus 是基于 MyBatis 進(jìn)行封裝的一套優(yōu)秀的持久層框架,它提供了豐富的便捷操作方法和強(qiáng)大的代碼生成器,大大簡(jiǎn)化了 MyBatis 的使用。在 MyBatis-Plus 中,我們可以使用 insertBatchSomeColumn 方法來(lái)實(shí)現(xiàn)批量新增指定字段的操作。 mybatis-plus 的? IService 接口? 默認(rèn)提供 ? saveBat

    2024年02月01日
    瀏覽(17)
  • mybatis-plus批量保存異常及效率優(yōu)化

    mybatis-plus批量保存異常及效率優(yōu)化

    最近基于自己公司內(nèi)部服務(wù)維護(hù),發(fā)現(xiàn)其中調(diào)度中心近期出現(xiàn)不少錯(cuò)誤日志,但是該任務(wù)卻是正常執(zhí)行,生成的報(bào)表數(shù)據(jù)也是正常的,所以很多天沒(méi)有發(fā)現(xiàn)問(wèn)題 這就匪夷所思了, ? ?經(jīng)仔細(xì)排查發(fā)現(xiàn),是觸發(fā)了feign超時(shí)hystrix熔斷器機(jī)制 也就是說(shuō)子服務(wù)出現(xiàn)了執(zhí)行時(shí)間過(guò)長(zhǎng)的

    2024年01月16日
    瀏覽(22)
  • mybatis-plus 根據(jù)指定字段 批量 刪除/修改

    mybatis-plus 根據(jù)指定字段 批量 刪除/修改

    mybatis-plus 提供了根據(jù)id批量更新和修改的方法,這個(gè)大家都不陌生 但是當(dāng)表沒(méi)有id的時(shí)候怎么辦) 這個(gè)就不說(shuō)了,就是因?yàn)椴幌胧謱慡QL 所以才有這篇博客 mybatis plus 的 executeBatch 參考 mybatis plus 的updateBatchById 方法. 調(diào)用處: 接口 重寫方法 實(shí)現(xiàn) 這種寫法其實(shí)批量的效率還是比較慢的

    2024年02月13日
    瀏覽(17)
  • Spring Boot學(xué)習(xí)隨筆- 集成MyBatis-Plus,第一個(gè)MP程序(環(huán)境搭建、@TableName、@TableId、@TableField示例)

    Spring Boot學(xué)習(xí)隨筆- 集成MyBatis-Plus,第一個(gè)MP程序(環(huán)境搭建、@TableName、@TableId、@TableField示例)

    學(xué)習(xí)視頻:【編程不良人】Mybatis-Plus整合SpringBoot實(shí)戰(zhàn)教程,提高的你開(kāi)發(fā)效率,后端人員必備! MyBatis-Plus是一個(gè)基于MyBatis的增強(qiáng)工具,旨在簡(jiǎn)化開(kāi)發(fā),提高效率。它擴(kuò)展了MyBatis的功能,提供了許多實(shí)用的特性,包括強(qiáng)大的CRUD操作、條件構(gòu)造器、分頁(yè)插件、代碼生成器等。MyBa

    2024年02月04日
    瀏覽(24)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包