Jadual Kandungan
Jangan gunakan pernyataan SQL untuk menambah berbilang jadual dalam Springboot+Mybatis-plus
Masalah yang saya hadapi
Kerja penyediaan
Disimulasikan dalam persekitaran ujian
Rumah Java javaTutorial Bagaimana untuk melaksanakan Springboot+Mybatis-plus tanpa menggunakan pernyataan SQL untuk menambah berbilang jadual

Bagaimana untuk melaksanakan Springboot+Mybatis-plus tanpa menggunakan pernyataan SQL untuk menambah berbilang jadual

Jun 02, 2023 am 11:07 AM
sql springboot mybatis-plus

Jangan gunakan pernyataan SQL untuk menambah berbilang jadual dalam Springboot+Mybatis-plus

Kerja penyediaan untuk masalah yang saya hadapi dipecahkan dengan mensimulasikan pemikiran dalam persekitaran ujian: Cipta objek BrandDTO dengan parameter Simulasi menghantar parameter ke latar belakang

Masalah yang saya hadapi

Kita semua tahu bahawa adalah amat sukar untuk melaksanakan operasi berbilang jadual dalam Mybatis-plus, jika anda tidak menggunakan Mybatis-plus Untuk alatan seperti -join, anda hanya boleh mengkonfigurasi fail Mapper.xml yang sepadan, mengkonfigurasi ResultMap yang busuk dan panjang, dan kemudian menulis pernyataan SQL yang sepadan Walaupun kaedah ini kelihatan menyusahkan, ia mempunyai kecekapan yang tinggi membolehkan kami mengubah suai fungsi Parti A dengan lebih fleksibel.
Tetapi jika saya akan melakukan projek kecil yang sangat biasa, yang tidak memerlukan sebarang perubahan yang fleksibel, dan saya tidak mahu menulis pernyataan SQL, saya mahu terus menggunakan fungsi Mybatis-plus boleh digunakan untuk menambah data pada berbilang jadual (satu tuan dan berbilang hamba), jadi apa yang perlu saya lakukan

Melihat pangkalan data, kita boleh tahu bahawa kita mempunyai jadual produk, tetapi Produk Untuk imej produk , parameter produk dan jenis produk semuanya adalah satu-dengan-banyak atau banyak-dengan-satu, tetapi saya mahu bahagian hadapan kami untuk terus menyerahkan Borang boleh melengkapkan penambahan data dalam berbilang jadual Operasi berbilang jadual tidak dapat dielakkan

Bagaimana untuk melaksanakan Springboot+Mybatis-plus tanpa menggunakan pernyataan SQL untuk menambah berbilang jadual

Kerja penyediaan

Kerana saya telah menggunakan ini. operasi sebelum Mybatis-plus-join operasi pertanyaan berbilang jadual, jadi saya telah menghasilkan kelas entiti DTO

@Data
public class BrandDTO {

    private Integer id;
    //类型表
    private String type;

    //商品表
    private String brandName;
    private String companyName;
    private String description;
    //图片链接表
    private List<Img> imgUrlList;
    //参数表
    private List<Parameter> parameterList;

}
Salin selepas log masuk

Dalam kelas ini anda akan tertanya-tanya: Mengapa saya tidak merangkum objek entiti Jenama secara langsung?
Oleh kerana saya telah menggunakan kelas ini sebelum ini untuk melaksanakan pertanyaan jadual serta meletakkan parameter bagi setiap kelas entiti secara berasingan (tiada nama pendua hhhh), dan kelas ini perlu dipaparkan, jadi saya menambah atribut kelas Jenama seperti yang sedia ada. . Jenis yang sepadan dengan Jenama hendaklah banyak (jenis) kepada satu (Jenama), jadi saya hanya merangkumkan satu di sini, tetapi memandangkan Jenama mempunyai hubungan satu-dengan-banyak dengan Img dan Parameter, saya merangkumkannya ke dalam senarai< , dengan cara ini kita mendapat sesuatu yang serupa dengan kelas perantaraan

Disimulasikan dalam persekitaran ujian

Kita mungkin juga memikirkannya, dengan kelas sedemikian, kita hanya perlu meletakkan parameter Ke tambahkannya pada setiap jadual secara berasingan, kita perlu membayangkan bahawa kita mendapat data merangkum objek BrandDTO, dan kemudian membukanya dan menggunakan kaedah antara muka pemeta masing-masing untuk memasukkan ke dalam jadual
(Mula-mula antara muka mesti mewarisi BaseMapper yang sepadan

>, anda boleh melakukan operasi pantas Sudah tentu, jika anda mempunyai kaedah penambahan yang sepadan dalam antara muka, ia juga boleh dilakukan, tetapi kerana kami menggunakan mybatis-plus, mengapa kami perlu kembali dan menulis penambahan. kaedah diri kita sendiri?)

Jadi, Selepas beberapa percubaan berulang, saya mendapat kaedah ujian berikut:

 @Test
    public void addBrand(){
        Brand brand = new Brand();
        Type type = new Type();
        Img img = new Img();
        Parameter parameter = new Parameter();

        BrandDTO brandDTO = new BrandDTO();
        brandDTO.setBrandName("测试商品3");
        brandDTO.setCompanyName("厂家3");
        brandDTO.setDescription("这是第二个个测试");

        brandDTO.setType("第Ⅱ型");

        List<Img> imgs =new ArrayList<>();
        imgs.add(new Img("w/daw/daw/daww"));
        imgs.add(new Img("xxwdAWd/dawd/wx"));
        brandDTO.setImgUrlList(imgs);


        List<Parameter> parameters = new ArrayList<>();
        parameters.add(new Parameter("110","270*860*270",30,450));
        parameters.add(new Parameter("120","170*4350*720",990,5530));
        brandDTO.setParameterList(parameters);


        List<Img> imgUrlList = brandDTO.getImgUrlList();
        List<Parameter> parameterList = brandDTO.getParameterList();


        brand.setBrandName(brandDTO.getBrandName());
        brand.setCompanyName(brandDTO.getCompanyName());
        brand.setDescription(brandDTO.getDescription());
        brandMapper.insert(brand);

        Integer id = brand.getId();

        type.setBType(brandDTO.getType());
        type.setBId(id);
        typeMapper.insert(type);

        for (Parameter parameterl : parameterList) {
            parameter.setBModel(parameterl.getBModel());
            parameter.setBOutput(parameterl.getBOutput());
            parameter.setBSize(parameterl.getBSize());
            parameter.setBId(id);
            parameterMapper.insert(parameter);
        }

        for (Img imgl : imgUrlList) {
            img.setImgUrl(imgl.getImgUrl());
            img.setBrandId(id);
            imgMapper.insert(img);
        }

        System.out.println(id);

    }
Salin selepas log masuk

Hancurkan pemikiran:

Seterusnya, saya akan mengurai dan menyatakan setiap sebahagian daripada badan kaedah

Buat Cipta objek BrandDTO dengan parameter

Mula-mula kami mensimulasikan objek BrandDTO yang merangkum pelbagai parameter:

        Type type = new Type();
        Img img = new Img();
        Parameter parameter = new Parameter();

        BrandDTO brandDTO = new BrandDTO();
        brandDTO.setBrandName("测试商品3");
        brandDTO.setCompanyName("厂家3");
        brandDTO.setDescription("这是第二个个测试");

        brandDTO.setType("第Ⅱ型");

        List<Img> imgs =new ArrayList<>();
        //此操作能成功是因为我在对应的对象中生成了除了id属性和外键属性的有参构造
        imgs.add(new Img("w/daw/daw/daww"));
        imgs.add(new Img("xxwdAWd/dawd/wx"));
        brandDTO.setImgUrlList(imgs);


        List<Parameter> parameters = new ArrayList<>();
        //此操作能成功是因为我在对应的对象中生成了除了id属性和外键属性的有参构造
        parameters.add(new Parameter("110","270*860*270",30,450));
        parameters.add(new Parameter("120","170*4350*720",990,5530));
        brandDTO.setParameterList(parameters);
Salin selepas log masuk

Bahagian ini terutamanya mengenai merangkum parameter dan ialah kerja hujung hadapan. Marilah kami Pelayan latar belakang menerima objek BrandDTO dengan parameter

mensimulasikan parameter yang dihantar ke latar belakang

mengeluarkan parameter yang sepadan dalam setiap jadual

rreee

Selepas operasi di atas, kami Satu baris maklumat ditambahkan pada jadual Jenama, dan kunci utama dikembalikan.

Jadi jadual kami yang lain mengetahui id produk yang sepadan dan boleh menggunakan id ini untuk tentukan id kunci asing dalam jadual:

(Sila ambil perhatian bahawa dalam kelas ujian ini saya menyuntik antara muka Mapper bagi setiap kelas entiti yang perlu saya gunakan, jadi saya boleh memanggil kaedah sisipan)

		//取出ImgUrlList和ParameterList()
		List<Img> imgUrlList = brandDTO.getImgUrlList();
        List<Parameter> parameterList = brandDTO.getParameterList();

		//单独封装brand对象
        brand.setBrandName(brandDTO.getBrandName());
        brand.setCompanyName(brandDTO.getCompanyName());
        brand.setDescription(brandDTO.getDescription());
        //调用对应Mapper接口的insert方法(或者你自己写的添加方法)
        brandMapper.insert(brand);
        //使用主键返回(要确保mybatis中设置了主键自增并且在各个实体类中声明了主键属性)
        Integer id = brand.getId();
Salin selepas log masuk

Adopt Dengan menambah dalam gelung, kita boleh menambah data dalam objek pada setiap jadual satu demi satu Seterusnya, kita perlu menggunakan konsol untuk mendapatkan id kunci utama yang sepadan dengan produk yang kita menambah:

		//向Type表中添加数据并指定外键(BrandID)的id
		type.setBType(brandDTO.getType());
        type.setBId(id);
        typeMapper.insert(type);
        //向Paramater表中添加数据并指定外键(BrandID)的id
        for (Parameter parameterl : parameterList) {
            parameter.setBModel(parameterl.getBModel());
            parameter.setBOutput(parameterl.getBOutput());
            parameter.setBSize(parameterl.getBSize());
            parameter.setBId(id);
            parameterMapper.insert(parameter);
        }
        //向Img表中添加数据并指定外键(BrandID)的id
        for (Img imgl : imgUrlList) {
            img.setImgUrl(imgl.getImgUrl());
            img.setBrandId(id);
            imgMapper.insert(img);
        }
Salin selepas log masuk

Selepas itu, kami menjalankan, dan saya mendapatkannya di sini Datanya ialah 3, dan kemudian kami memanggil kaedah menyoal produk dengan ID: Saya menggunakan Apifox di sini:

Bagaimana untuk melaksanakan Springboot+Mybatis-plus tanpa menggunakan pernyataan SQL untuk menambah berbilang jadual

Ia boleh dilihat bahawa maklumat kami telah dimasukkan Jadual Bahagian nilai pulangan adalah batal kerana pertanyaan berbilang jadual yang saya tulis mempunyai beberapa pepijat kecil, tetapi masih terdapat data dalam pangkalan data. Ia boleh dilihat bahawa ujian ini berjaya. Seterusnya, hanya CV kod ke perkhidmatan yang sepadan anda boleh menguji sama ada ia boleh dilaksanakan dengan mensimulasikan objek Json yang dilalui pada lapisan pengawal

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan Springboot+Mybatis-plus tanpa menggunakan pernyataan SQL untuk menambah berbilang jadual. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah perbezaan antara HQL dan SQL dalam rangka kerja Hibernate? Apakah perbezaan antara HQL dan SQL dalam rangka kerja Hibernate? Apr 17, 2024 pm 02:57 PM

HQL dan SQL dibandingkan dalam rangka kerja Hibernate: HQL (1. Sintaks berorientasikan objek, 2. Pertanyaan bebas pangkalan data, 3. Keselamatan jenis), manakala SQL mengendalikan pangkalan data secara langsung (1. Piawaian bebas pangkalan data, 2. Boleh laku kompleks pertanyaan dan manipulasi data).

Penggunaan operasi bahagian dalam Oracle SQL Penggunaan operasi bahagian dalam Oracle SQL Mar 10, 2024 pm 03:06 PM

"Penggunaan Operasi Bahagian dalam OracleSQL" Dalam OracleSQL, operasi bahagi ialah salah satu operasi matematik yang biasa. Semasa pertanyaan dan pemprosesan data, operasi pembahagian boleh membantu kami mengira nisbah antara medan atau memperoleh hubungan logik antara nilai tertentu. Artikel ini akan memperkenalkan penggunaan operasi pembahagian dalam OracleSQL dan memberikan contoh kod khusus. 1. Dua cara operasi bahagi dalam OracleSQL Dalam OracleSQL, operasi bahagi boleh dilakukan dalam dua cara berbeza.

Apakah yang dimaksudkan dengan atribut identiti dalam SQL? Apakah yang dimaksudkan dengan atribut identiti dalam SQL? Feb 19, 2024 am 11:24 AM

Apakah Identity dalam SQL? Contoh kod khusus diperlukan Dalam SQL, Identity ialah jenis data khas yang digunakan untuk menjana nombor penambahan automatik. Ia sering digunakan untuk mengenal pasti setiap baris data dalam jadual. Lajur Identiti sering digunakan bersama dengan lajur kunci utama untuk memastikan setiap rekod mempunyai pengecam unik. Artikel ini akan memperincikan cara menggunakan Identiti dan beberapa contoh kod praktikal. Cara asas untuk menggunakan Identity ialah menggunakan Identit semasa membuat jadual.

Perbandingan dan perbezaan sintaks SQL antara Oracle dan DB2 Perbandingan dan perbezaan sintaks SQL antara Oracle dan DB2 Mar 11, 2024 pm 12:09 PM

Oracle dan DB2 ialah dua sistem pengurusan pangkalan data hubungan yang biasa digunakan, setiap satunya mempunyai sintaks dan ciri SQL tersendiri. Artikel ini akan membandingkan dan membezakan antara sintaks SQL Oracle dan DB2, dan memberikan contoh kod khusus. Sambungan pangkalan data Dalam Oracle, gunakan pernyataan berikut untuk menyambung ke pangkalan data: CONNECTusername/password@database Dalam DB2, pernyataan untuk menyambung ke pangkalan data adalah seperti berikut: CONNECTTOdataba

Penjelasan terperinci tentang fungsi Set tag dalam teg SQL dinamik MyBatis Penjelasan terperinci tentang fungsi Set tag dalam teg SQL dinamik MyBatis Feb 26, 2024 pm 07:48 PM

Tafsiran teg SQL dinamik MyBatis: Penjelasan terperinci tentang penggunaan teg Set MyBatis ialah rangka kerja lapisan kegigihan yang sangat baik Ia menyediakan banyak teg SQL dinamik dan boleh membina pernyataan operasi pangkalan data secara fleksibel. Antaranya, tag Set ialah tag yang digunakan untuk menjana klausa SET dalam kenyataan UPDATE, yang sangat biasa digunakan dalam operasi kemas kini. Artikel ini akan menerangkan secara terperinci penggunaan teg Set dalam MyBatis dan menunjukkan kefungsiannya melalui contoh kod tertentu. Apakah itu Set tag Set tag digunakan dalam MyBati

Analisis perbandingan dan perbezaan antara SpringBoot dan SpringMVC Analisis perbandingan dan perbezaan antara SpringBoot dan SpringMVC Dec 29, 2023 am 11:02 AM

SpringBoot dan SpringMVC adalah kedua-dua rangka kerja yang biasa digunakan dalam pembangunan Java, tetapi terdapat beberapa perbezaan yang jelas antara mereka. Artikel ini akan meneroka ciri dan penggunaan kedua-dua rangka kerja ini dan membandingkan perbezaannya. Mula-mula, mari belajar tentang SpringBoot. SpringBoot telah dibangunkan oleh pasukan Pivotal untuk memudahkan penciptaan dan penggunaan aplikasi berdasarkan rangka kerja Spring. Ia menyediakan cara yang pantas dan ringan untuk membina bersendirian, boleh dilaksanakan

Bagaimana untuk menyelesaikan ralat 5120 dalam SQL Bagaimana untuk menyelesaikan ralat 5120 dalam SQL Mar 06, 2024 pm 04:33 PM

Penyelesaian: 1. Semak sama ada pengguna log masuk mempunyai kebenaran yang mencukupi untuk mengakses atau mengendalikan pangkalan data, dan pastikan pengguna mempunyai kebenaran yang betul 2. Semak sama ada akaun perkhidmatan SQL Server mempunyai kebenaran untuk mengakses fail yang ditentukan atau folder, dan pastikan akaun Mempunyai kebenaran yang mencukupi untuk membaca dan menulis fail atau folder 3. Semak sama ada fail pangkalan data yang ditentukan telah dibuka atau dikunci oleh proses lain, cuba tutup atau lepaskan fail, dan jalankan semula pertanyaan 4 . Cuba sebagai pentadbir Jalankan Studio Pengurusan seperti dsb.

Bagaimana untuk menggunakan pernyataan SQL untuk pengagregatan data dan statistik dalam MySQL? Bagaimana untuk menggunakan pernyataan SQL untuk pengagregatan data dan statistik dalam MySQL? Dec 17, 2023 am 08:41 AM

Bagaimana untuk menggunakan pernyataan SQL untuk pengagregatan data dan statistik dalam MySQL? Pengumpulan data dan statistik merupakan langkah yang sangat penting semasa melakukan analisis dan statistik data. Sebagai sistem pengurusan pangkalan data perhubungan yang berkuasa, MySQL menyediakan pelbagai fungsi pengagregatan dan statistik, yang boleh melaksanakan pengagregatan data dan operasi statistik dengan mudah. Artikel ini akan memperkenalkan kaedah menggunakan pernyataan SQL untuk melaksanakan pengagregatan data dan statistik dalam MySQL, dan menyediakan contoh kod khusus. 1. Gunakan fungsi COUNT untuk mengira Fungsi COUNT adalah yang paling biasa digunakan

See all articles