Rumah Java javaTutorial Kaji konsep reka bentuk pemalam paging MyBatis

Kaji konsep reka bentuk pemalam paging MyBatis

Feb 23, 2024 pm 11:09 PM
pemalam penomboran mybatis pernyataan sql

Kaji konsep reka bentuk pemalam paging MyBatis

Teroka idea reka bentuk pemalam paging MyBatis

MyBatis ialah rangka kerja lapisan kegigihan yang sangat baik yang digunakan secara meluas dalam pembangunan Java. Dalam pembangunan projek sebenar, kami sering menghadapi keperluan untuk memaparkan hasil pertanyaan pangkalan data dalam halaman. MyBatis tidak menyediakan pemalam paging rasmi, jadi pembangun biasanya menggunakan pemalam pihak ketiga untuk mencapai fungsi ini. Artikel ini akan menyelidiki cara mereka bentuk pemalam paging MyBatis yang ringkas dan cekap serta memberikan contoh kod khusus.

1. Idea reka bentuk

Untuk mereka bentuk pemalam paging MyBatis, anda perlu melaksanakan dengan jelas prinsip teras paging: hadkan bilangan dan offset hasil pertanyaan melalui LIMIT dan OFFSET dalam pernyataan pertanyaan SQL. Oleh itu, pemalam kami perlu memintas pernyataan pertanyaan SQL dan menambahkan parameter LIMIT dan OFFSET secara dinamik untuk melaksanakan fungsi halaman.

Idea reka bentuk khusus adalah seperti berikut:

  1. Buat kelas Halaman untuk merangkum parameter pertanyaan halaman halaman yang berkaitan, seperti nombor halaman, saiz halaman, jumlah bilangan rekod, dsb.
  2. Sesuaikan Interceptor, laksanakan antara muka Interceptor MyBatis, tulis semula kaedah intercept(), memintas pernyataan pertanyaan SQL dalam kaedah ini dan tambah secara dinamik parameter LIMIT dan OFFSET mengikut objek Halaman.
  3. Konfigurasikan Pemintas dalam fail konfigurasi MyBatis untuk menjadikannya berkesan. . kaedah:
  4. public class Page {
        private int pageNo; // 当前页码
        private int pageSize; // 每页大小
        private int total; // 总记录数
    
        // 省略getter和setter方法
    }
    Salin selepas log masuk
Akhir sekali, kami mengkonfigurasi pemintas dalam fail konfigurasi MyBatis:

@Intercepts({
    @Signature(type = StatementHandler.class, method = "prepare", args = {Connection.class, Integer.class})
})
public class CustomPaginationInterceptor implements Interceptor {
    
    @Override
    public Object intercept(Invocation invocation) throws Throwable {
        if (invocation.getTarget() instanceof StatementHandler) {
            StatementHandler statementHandler = (StatementHandler) invocation.getTarget();
            MetaObject metaObject = SystemMetaObject.forObject(statementHandler);
            
            while (metaObject.hasGetter("h")) {
                Object obj = metaObject.getValue("h");
                metaObject = SystemMetaObject.forObject(obj);
            }
            
            MappedStatement mappedStatement = (MappedStatement) metaObject.getValue("delegate.mappedStatement");
            if ("SELECT".equals(mappedStatement.getSqlCommandType().name())) {
                BoundSql boundSql = (BoundSql) metaObject.getValue("delegate.boundSql");
                String originalSql = boundSql.getSql();
                Page page = PageHelper.getPage();

                if (page != null) {
                    String limitSql = String.format("%s LIMIT %s OFFSET %s",
                            originalSql, page.getPageSize(), (page.getPageNo() - 1) * page.getPageSize());
                    metaObject.setValue("delegate.boundSql.sql", limitSql);
                }
            }
        }
        
        return invocation.proceed();
    }

    @Override
    public Object plugin(Object target) {
        if (target instanceof StatementHandler) {
            return Plugin.wrap(target, this);
        }
        return target;
    }

    @Override
    public void setProperties(Properties properties) {
        // 空实现
    }
}
Salin selepas log masuk
3 Contoh penggunaan

Dalam antara muka Mapper yang memerlukan pertanyaan halaman, tentukan kaedah selectByPage yang sepadan:

<plugins>
    <plugin interceptor="com.example.CustomPaginationInterceptor">
</plugins>
Salin selepas log masuk
yang sepadan. kenyataan dalam fail XML:

public interface UserMapper {
    List<User> selectByPage(Page page);
}
Salin selepas log masuk

Dalam logik perniagaan, panggil kaedah selectByPage dan masukkan objek Halaman:

<select id="selectByPage" resultMap="userResultMap">
    SELECT * FROM user
</select>
Salin selepas log masuk

Melalui idea reka bentuk dan contoh kod di atas, kami berjaya melaksanakan pemalam halaman MyBatis yang mudah dan cekap. Pembangun boleh menyesuaikan dan mengoptimumkan mengikut keperluan projek sebenar untuk mencapai fungsi paging yang lebih fleksibel dan berkuasa. Saya harap artikel ini akan membantu anda memahami idea reka bentuk pemalam paging MyBatis.

Atas ialah kandungan terperinci Kaji konsep reka bentuk pemalam paging MyBatis. 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
3 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)

Cara menggunakan fungsi iif dalam excel Cara menggunakan fungsi iif dalam excel Mar 20, 2024 pm 06:10 PM

Kebanyakan pengguna menggunakan Excel untuk memproses data jadual Malah, Excel juga mempunyai program VBA fungsi fungsi adalah serupa. Biar saya perkenalkan kepada anda penggunaan fungsi iif. Terdapat fungsi iif dalam pernyataan SQL dan kod VBA dalam Excel. Fungsi iif adalah serupa dengan fungsi IF dalam lembaran kerja excel Ia melakukan pertimbangan nilai benar dan salah dan mengembalikan hasil yang berbeza berdasarkan nilai benar dan salah yang dikira secara logik. JIKA penggunaan fungsi adalah (syarat, ya, tidak). Penyataan IF dan fungsi IIF dalam VBA Penyataan IF dahulu ialah penyataan kawalan yang boleh melaksanakan penyataan yang berbeza mengikut syarat yang terakhir

Bagaimana untuk menanyakan log pangkalan data oracle Bagaimana untuk menanyakan log pangkalan data oracle Apr 07, 2024 pm 04:51 PM

Maklumat log pangkalan data Oracle boleh ditanya dengan kaedah berikut: Gunakan penyata SQL untuk membuat pertanyaan dari paparan v$log gunakan alat LogMiner untuk menganalisis fail log gunakan arahan ALTER SYSTEM untuk melihat status fail log semasa; Arahan TRACE untuk melihat maklumat tentang peristiwa tertentu menggunakan operasi Alat sistem melihat pada akhir fail log.

Bagaimana untuk menggunakan pernyataan sql untuk menanyakan struktur penyimpanan pangkalan data mysql Bagaimana untuk menggunakan pernyataan sql untuk menanyakan struktur penyimpanan pangkalan data mysql Apr 14, 2024 pm 07:45 PM

Untuk menanyakan struktur storan pangkalan data MySQL, anda boleh menggunakan pernyataan SQL berikut: SHOW CREATE TABLE table_name pernyataan ini akan mengembalikan definisi lajur dan maklumat pilihan jadual bagi jadual, termasuk nama lajur, jenis data, kekangan dan sifat umum jadual; , seperti enjin storan dan set aksara.

Bagaimana untuk mengeksport data yang ditanya dalam navicat Bagaimana untuk mengeksport data yang ditanya dalam navicat Apr 24, 2024 am 04:15 AM

Eksport hasil pertanyaan dalam Navicat: Laksanakan pertanyaan. Klik kanan hasil pertanyaan dan pilih Eksport Data. Pilih format eksport seperti yang diperlukan: CSV: Pemisah medan ialah koma. Excel: Termasuk pengepala jadual, menggunakan format Excel. Skrip SQL: Mengandungi pernyataan SQL yang digunakan untuk mencipta semula hasil pertanyaan. Pilih pilihan eksport (seperti pengekodan, pemisah baris). Pilih lokasi eksport dan nama fail. Klik "Eksport" untuk memulakan eksport.

Bagaimana untuk menyelesaikan kegagalan permulaan pangkalan data mysql Bagaimana untuk menyelesaikan kegagalan permulaan pangkalan data mysql Apr 14, 2024 pm 07:12 PM

Untuk menyelesaikan isu kegagalan permulaan pangkalan data MySQL, ikuti langkah berikut: Semak kebenaran dan pastikan anda menggunakan pengguna dengan kebenaran yang sesuai. Jika pangkalan data sudah wujud, padamkannya atau pilih nama lain. Jika jadual sudah wujud, padamkannya atau pilih nama lain. Semak pernyataan SQL untuk ralat sintaks. Sahkan bahawa pelayan MySQL sedang berjalan dan boleh disambungkan. Sahkan bahawa anda menggunakan nombor port yang betul. Semak fail log MySQL atau Pencari Kod Ralat untuk butiran ralat lain.

Bagaimana untuk melaksanakan pernyataan sql dalam pangkalan data mysql Bagaimana untuk melaksanakan pernyataan sql dalam pangkalan data mysql Apr 14, 2024 pm 07:48 PM

Penyata MySQL SQL boleh dilaksanakan dengan: Menggunakan MySQL CLI (Antaramuka Talian Perintah): Log masuk ke pangkalan data dan masukkan pernyataan SQL. Menggunakan MySQL Workbench: Mulakan aplikasi, sambung ke pangkalan data, dan laksanakan pernyataan. Gunakan bahasa pengaturcaraan: import perpustakaan sambungan MySQL, buat sambungan pangkalan data, dan laksanakan pernyataan. Gunakan alat lain seperti Pelayar DB untuk SQLite: muat turun dan pasang aplikasi, buka fail pangkalan data dan laksanakan penyata.

Cara terbaik untuk melaksanakan penomboran tatasusunan dalam PHP Cara terbaik untuk melaksanakan penomboran tatasusunan dalam PHP May 04, 2024 pm 02:39 PM

Terdapat dua cara paling biasa untuk menomborkan tatasusunan PHP: menggunakan fungsi array_slice(): hitung bilangan elemen untuk dilangkau, dan kemudian ekstrak julat elemen yang ditentukan. Gunakan iterator terbina dalam: laksanakan antara muka Iterator, dan kaedah rewind(), key(), current(), next(), dan valid() digunakan untuk melintasi elemen dalam julat yang ditentukan.

Cara menggunakan parameter dalam pencetus MySQL Cara menggunakan parameter dalam pencetus MySQL Mar 16, 2024 pm 12:21 PM

Cara menggunakan parameter dalam pencetus MySQL memerlukan contoh kod khusus MySQL ialah sistem pengurusan pangkalan data hubungan popular yang menyokong pencetus untuk memantau perubahan dalam data dalam jadual dan melaksanakan operasi yang sepadan. Pencetus boleh dicetuskan apabila operasi INSERT, UPDATE atau DELETE berlaku Ia adalah fungsi pangkalan data yang berkuasa yang boleh digunakan untuk melaksanakan kekangan data, pengelogan, penyegerakan data dan keperluan lain. Dalam MySQL, pencetus boleh menggunakan parameter untuk menghantar data, dan parameter boleh digunakan untuk menyesuaikan pencetus secara fleksibel.

See all articles