Mybatis 批量insert

2020-10-21  本文已影响0人  xiaoqiaobian

一、controller

@CrossOrigin
@RestController
@RequestMapping("/sku")
public class SkuDataController {

    @Autowired
    private SkuDataService skuDataService;

    //添加sku
    @PostMapping(value = "/add",produces = "application/json;charset=utf-8")
    public Result saveSku(@RequestBody List<SkuData>list){
        skuDataService.insert(list);
        return new Result(true, StatusCode.OK,"insert success");

二、service
public interface SkuDataService {
void insertAll(List<SkuData> list);
}

impl
@Override
public void insertAll(List<SkuData> list) {
skuDataDao.insertAll(list);
}

三、dao

@Component
@org.apache.ibatis.annotations.Mapper
public interface SkuDataDao extends Mapper<SkuData> {

    //Mybatis批量新增
    @InsertProvider(type = Provider.class, method = "insertAll")
    void insertAll(@Param(value="list")List<SkuData> skuData);

    class Provider {
        /* 批量插入 */
        public String insertAll(Map map) {
            List<SkuData> skuData = (List<SkuData>) map.get("list");
            StringBuilder sb = new StringBuilder();
            sb.append("INSERT INTO tb_sku ");
            sb.append("(id, sn, name, price, num, alertNum, image, images, weight , createTime , updateTime, spuId, categoryId, categoryName, brandName, spec, saleNum, commentNum, status, version) ");
            sb.append("VALUES ");
            MessageFormat mf = new MessageFormat(
                    "(#'{'list[{0}].id}, " +
                            "#'{'list[{0}].sn}," +
                            "#'{'list[{0}].name}," +
                            "#'{'list[{0}].price," +
                            "#'{'list[{0}].num}," +
                            "#'{'list[{0}].alertNum}," +
                            "#'{'list[{0}].image}," +
                            "#'{'list[{0}].images}," +
                            "#'{'list[{0}].weight}," +
                            "#'{'list[{0}].createTime}," +
                            "#'{'list[{0}].createTime}," +
                            "#'{'list[{0}].updateTime}," +
                            "#'{'list[{0}].spuId}," +
                            "#'{'list[{0}].categoryId}," +
                            "#'{'list[{0}].categoryName}," +
                            "#'{'list[{0}].brandName}," +
                            "#'{'list[{0}].spec}," +
                            "#'{'list[{0}].saleNum}," +
                            "#'{'list[{0}].commentNum}," +
                            "#'{'list[{0}].status}," +
                            "#'{'list[{0}].version})");

            for (int i = 0; i < skuData.size(); i++) {
                sb.append(mf.format(new Object[]{i}));
                if (i < skuData.size() - 1)
                    sb.append(",");
            }
            return sb.toString();
        }
    }
}

postman
http://localhost:9008/sku/agent/insertAll

[
{
"id": "100000001111",
"sn": "",
"name": "锤子手机 X23 8GB+128GB 幻夜蓝 水滴屏全面屏 游戏手机 移动联通电信全网通4G手机",
"price": 99999,
"num": 9980,
"alertNum": 100,
"image": "https://m.360buyimg.com/mobilecms/s720x720_jfs/t1/4612/28/6223/298257/5ba22d66Ef665222f/d97ed0b25cbe8c6e.jpg!q70.jpg.webp",
"images": "https://m.360buyimg.com/mobilecms/s720x720_jfs/t1/4612/28/6223/298257/5ba22d66Ef665222f/d97ed0b25cbe8c6e.jpg!q70.jpg.webp",
"weight": 10,
"createTime": "2020-05-01 00:00:00",
"updateTime": "2020-05-21 11:15:00",
"spuId": "889527500",
"categoryId": 0,
"categoryName": "手机",
"brandName": "vivo",
"spec": "{'颜色': '红色', '版本': '8GB+128GB'}",
"saleNum": 0,
"commentNum": 0,
"status": "1"
},
{
"id": "100000002222",
"sn": "",
"name": "薇妮(viney)女士单肩包 时尚牛皮女包百搭斜挎包女士手提大包(经典黑)",
"price": 87900,
"num": 10000,
"alertNum": 100,
"image": "https://m.360buyimg.com/mobilecms/s720x720_jfs/t5590/64/5811657380/234462/5398e856/5965e173N34179777.jpg!q70.jpg.webp",
"images": "https://m.360buyimg.com/mobilecms/s720x720_jfs/t5590/64/5811657380/234462/5398e856/5965e173N34179777.jpg!q70.jpg.webp",
"weight": 10,
"createTime": "2019-05-01 11:11:11",
"updateTime": "2019-05-01 11:11:11",
"spuId": "451277100",
"categoryId": 0,
"categoryName": "真皮包",
"brandName": "viney",
"spec": "{'颜色': '黑色'}",
"saleNum": 0,
"commentNum": 0,
"status": "1"
},
{
"id": "100000003333",
"sn": "",
"name": "巴布豆(BOBDOG)柔薄悦动婴儿拉拉裤XXL码80片(15kg以上)",
"price": 1,
"num": 10000,
"alertNum": 100,
"image": "https://m.360buyimg.com/mobilecms/s720x720_jfs/t23998/350/2363990466/222391/a6e9581d/5b7cba5bN0c18fb4f.jpg!q70.jpg.webp",
"images": "https://m.360buyimg.com/mobilecms/s720x720_jfs/t23998/350/2363990466/222391/a6e9581d/5b7cba5bN0c18fb4f.jpg!q70.jpg.webp",
"weight": 10,
"createTime": "2018-05-01 00:00:00",
"updateTime": "2018-05-01 11:11:11",
"spuId": "10000000616300",
"categoryId": 757,
"categoryName": "拉拉裤",
"brandName": "巴布豆",
"spec": "{}",
"saleNum": 0,
"commentNum": 0,
"status": "1"
},
{
"id": "100000004444",
"sn": "",
"name": "莎米特SUMMIT拉杆箱22英寸PC材质万向轮旅行箱行李箱PC154T4A可扩容 法拉利红",
"price": 78900,
"num": 10000,
"alertNum": 100,
"image": "https://m.360buyimg.com/mobilecms/s720x720_jfs/t1/25363/12/2929/274060/5c21df3aE1789bda7/030af31afd116ae0.jpg!q70.jpg.webp",
"images": "https://m.360buyimg.com/mobilecms/s720x720_jfs/t1/25363/12/2929/274060/5c21df3aE1789bda7/030af31afd116ae0.jpg!q70.jpg.webp",
"weight": 10,
"createTime": "2017-05-01 00:00:00",
"updateTime": "2017-05-01 11:11:11",
"spuId": "595502400",
"categoryId": 0,
"categoryName": "拉杆箱",
"brandName": "莎米特",
"spec": "{'颜色': '红色'}",
"saleNum": 0,
"commentNum": 0,
"status": "1"
}
]

上一篇下一篇

猜你喜欢

热点阅读