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

使用mybatisPlus生成oracle自增序列遇到的坑及解決

 更新時(shí)間:2023年03月30日 09:26:22   作者:旗木卡卡西zz  
這篇文章主要介紹了使用mybatisPlus生成oracle自增序列遇到的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

記錄一次使用mybatisPlus遇到的坑,在網(wǎng)上找了各種配置,依然沒(méi)有實(shí)現(xiàn)oracle插入數(shù)據(jù)實(shí)現(xiàn)序列自增,原因是引入的mybatisPlus依賴有誤。

下面記錄下代碼:

看看這張圖片就知道多坑了 這么多的jar包,我用的是springboot,試了好幾個(gè)jar包,最終才找到正確的引用。

正確依賴

<!--mybatis plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.0.6</version>
        </dependency>

配置文件

mybatis-plus:
#配置mapper.xml路徑
  mapper-locations: classpath:/mapper/*.xml
  #配置實(shí)體類路徑
  type-aliases-package: com.jp.entity
  global-config:
    #主鍵類型  0:"數(shù)據(jù)庫(kù)ID自增", 1:"用戶輸入ID",2:"全局唯一ID (數(shù)字類型唯一ID)", 3:"全局唯一ID UUID";
    id-type: 1
    #駝峰下劃線轉(zhuǎn)換
    db-column-underline: true
  configuration:
  #配置打印sql
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

配置類一定不能少,自以為在application.yml文件中配置過(guò)就完事了,誰(shuí)知道還要添加一個(gè)配置類來(lái)配置oracle序列,就是這里坑了我好久,一定記得加上。

如下:

package com.jp.config;

import com.baomidou.mybatisplus.extension.incrementer.OracleKeyGenerator;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author ljp
 * @date 2020/4/23 22:14
 */
@Configuration
@MapperScan("com.jp.mapper")
public class MybatisPlusConfig {

    @Bean
    public OracleKeyGenerator oracleKeyGenerator() {
        return new OracleKeyGenerator();
    }
}

下面是實(shí)體類

package com.jp.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

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

/**
 * @author :Y19090908
 * @date :Created in 2020/3/25 下午 05:17
 */
@Data
@TableName("people")
@KeySequence(value = "seq_people", clazz = Integer.class)
public class People implements Serializable {
    private static final long serialVersionUID = 1110056585174675869L;
    @TableId(value = "ID", type = IdType.INPUT)
    private Integer id;
    private String name;
    private String sex;
    private String city;
    private String job;
    private String money;
    private Date createTime;

    public People() {
    }

    public People(String name, String sex, String city, String job, String money) {
        this.name = name;
        this.sex = sex;
        this.city = city;
        this.job = job;
        this.money = money;
    }

    public People(Integer id, String name, String sex, String city, String job, String money) {
        this.id = id;
        this.name = name;
        this.sex = sex;
        this.city = city;
        this.job = job;
        this.money = money;
    }

}

mapper:

@Mapper
public interface PeopleMapper extends BaseMapper<People> {
    
    List<People> selectDistinct();

    void importExcel(List<People> list);

    void importAll(List<People> list);

    void callInsert(Map<String, Object> map);

    void removeAll();

}

service:

package com.jp.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.jp.bean.ErrorExcelResult;
import com.jp.entity.People;

import java.util.List;

/**
 * @author :Y19090908
 * @date :Created in 2020/3/25 下午 05:24
 */
public interface PeopleService extends IService<People> {

    /**
     * excel導(dǎo)入
     *
     * @param list
     * @return
     */
    Object importExcel(List<People> list) throws Exception;

    List<ErrorExcelResult> importExcelForEach(List<People> list) throws Exception;

    List<People> selectDistinct();
}

實(shí)現(xiàn)類

@Service
public class PeopleServiceImpl extends ServiceImpl<PeopleMapper, People> implements PeopleService {

    @Autowired
    private PeopleMapper peopleMapper;

    @Override
    @Transactional(rollbackFor = Exception.class)
    public Object importExcel(List<People> list) throws Exception {
        if (MyStringUtil.isEmpty(list)) {
            throw new Exception("沒(méi)有要導(dǎo)入的數(shù)據(jù)");
        }
        peopleMapper.importAll(list);
        Map<String, Object> map = new HashMap<>();
        peopleMapper.callInsert(map);
        List<People> repeatList = (List<People>) map.get("P_CURSOR");
        List<ErrorExcelResult> errorList = new ArrayList<>();
        ErrorExcelResult errorExcelResult;
        if (!MyStringUtil.isEmpty(repeatList)) {
            for (People p : repeatList) {
                errorExcelResult = new ErrorExcelResult(p.getName(), p.getSex(), p.getCity(), p.getJob(), p.getMoney(), "數(shù)據(jù)重複");
                errorList.add(errorExcelResult);
            }
        }
//        peopleMapper.removeAll();
        return errorList;
    }

    @Override
    @Transactional(rollbackFor = Exception.class)
    public List<ErrorExcelResult> importExcelForEach(List<People> list) throws Exception {
        if (MyStringUtil.isEmpty(list)) {
            throw new Exception("沒(méi)有要導(dǎo)入的數(shù)據(jù)");
        }
        List<ErrorExcelResult> errorList = new ArrayList<>();
        ErrorExcelResult errorExcelResult;
        List<People> rightList = new ArrayList<>();
        long start = System.currentTimeMillis();
        for (People p : list) {
            //如果重複記錄該條數(shù)據(jù)
            if (peopleMapper.selectCount(new QueryWrapper<People>().eq("name", p.getName()).eq("sex", p.getSex())) > 0) {
                errorExcelResult = new ErrorExcelResult(p.getName(), p.getSex(), p.getCity(), p.getJob(), p.getMoney(), "該條數(shù)據(jù)重複");
                errorList.add(errorExcelResult);
                continue;
            }
            rightList.add(p);
        }
        peopleMapper.importExcel(rightList);
//        this.saveBatch(rightList);
        long end = System.currentTimeMillis();
        System.out.println(end - start);
        return errorList;
    }


    @Override
    public List<People> selectDistinct() {
        return peopleMapper.selectDistinct();
    }

}

service實(shí)現(xiàn)類是要加@Service注解的,之前會(huì)忘記。

下面是新增的接口,還是蠻簡(jiǎn)單的,只把添加的接口展示出來(lái)了。

 @PostMapping("/page/easy/add")
    @ResponseBody
    public Object add(@RequestBody People people) {
        JSONObject jsonObject = new JSONObject();
        try {
            validate(people);
            people.setCreateTime(new Date());
            peopleService.save(people);
            jsonObject.put("code", 0);
            return jsonObject;
        } catch (Exception e) {
            log.error(e.getMessage());
            jsonObject.put("code", 1);
            jsonObject.put("msg", e.getMessage());
            return jsonObject;
        }
    }

只是白天工作的時(shí)候一直生成數(shù)據(jù)庫(kù)序列自增失敗,所以下班想找找原因,代碼寫(xiě)的特別簡(jiǎn)單,就是為了試試能不能生成自增序列。

以下是postman測(cè)試傳入的參數(shù)

傳入一些簡(jiǎn)單數(shù)據(jù)

以上就是測(cè)試的數(shù)據(jù),很簡(jiǎn)單

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Mybatis一對(duì)一延遲加載實(shí)現(xiàn)過(guò)程解析

    Mybatis一對(duì)一延遲加載實(shí)現(xiàn)過(guò)程解析

    這篇文章主要介紹了Mybatis一對(duì)一延遲加載實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • java后端解決跨域的幾種問(wèn)題解決

    java后端解決跨域的幾種問(wèn)題解決

    這篇文章主要介紹了java后端解決跨域的幾種問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • IntelliJ IDEA安裝scala插件并創(chuàng)建scala工程的步驟詳細(xì)教程

    IntelliJ IDEA安裝scala插件并創(chuàng)建scala工程的步驟詳細(xì)教程

    這篇文章主要介紹了IntelliJ IDEA安裝scala插件并創(chuàng)建scala工程的步驟,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • RocetMQ搭建步驟與問(wèn)題解決之道

    RocetMQ搭建步驟與問(wèn)題解決之道

    這篇文章主要給大家介紹了關(guān)于RocetMQ搭建步驟與問(wèn)題解決之道的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Java利用apache ftp工具實(shí)現(xiàn)文件上傳下載和刪除功能

    Java利用apache ftp工具實(shí)現(xiàn)文件上傳下載和刪除功能

    這篇文章主要為大家詳細(xì)介紹了Java利用apache ftp工具實(shí)現(xiàn)文件上傳下載、刪除功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • 關(guān)于SpingMVC的<context:component-scan>包掃描踩坑記錄

    關(guān)于SpingMVC的<context:component-scan>包掃描踩坑記錄

    這篇文章主要介紹了關(guān)于SpingMVC的<context:component-scan>包掃描踩坑記錄,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java中2個(gè)Integer比較相同的四種方式舉例

    Java中2個(gè)Integer比較相同的四種方式舉例

    這篇文章主要介紹了Java中比較兩個(gè)Integer對(duì)象的四種方式,并解釋了每種方式的原理和適用范圍,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-01-01
  • Java如何使用Iterator迭代器刪除集合重復(fù)選項(xiàng)

    Java如何使用Iterator迭代器刪除集合重復(fù)選項(xiàng)

    這篇文章主要介紹了Java如何使用Iterator迭代器刪除集合重復(fù)選項(xiàng),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Java中的Random()函數(shù)及兩種構(gòu)造方法

    Java中的Random()函數(shù)及兩種構(gòu)造方法

    Java中存在著兩種Random函數(shù)分別是java.lang.Math.Random和java.util.Random,文中給大家介紹了random()的兩種構(gòu)造方法,感興趣的朋友跟隨小編一起看看吧
    2018-11-11
  • Java中創(chuàng)建ZIP文件的方法

    Java中創(chuàng)建ZIP文件的方法

    本文通過(guò)一段簡(jiǎn)單代碼給大家介紹了java中創(chuàng)建zip文件的方法,代碼超簡(jiǎn)單,感興趣的朋友跟隨腳本之家小編一起看看吧
    2018-06-06

最新評(píng)論

三台县| 孝义市| 靖西县| 兰坪| 遵化市| 印江| 清原| 长武县| 阿坝县| 黔西县| 普兰县| 泉州市| 双鸭山市| 甘泉县| 冷水江市| 栾城县| 阳春市| 许昌市| 济南市| 高陵县| 化隆| 临猗县| 岳阳县| 九龙县| 越西县| 罗平县| 玉林市| 广南县| 灌南县| 浦江县| 绍兴县| 中牟县| 聂荣县| 孟州市| 丹阳市| 中超| 育儿| 巴林右旗| 盱眙县| 绥滨县| 宁强县|