批量插入,可以把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ù)提供者:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-705042.html
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)!