1. [代码] mybatis 全局配置文件
<uccedins> <plugin interceptor = "com.has.core.page.paginationInterceptor" /> </splieve>
2. [文件] PaginationInterceptor.java
intercepts ({signatureatureatureature (type = ittupleHandler. class ، method = "prepared" ، args = {connect. stittleHandler.getBoundSql () ؛ metaObject MetastatementHandler = metaObject.foroBject (stitplehandler) ؛ rowbounds rowbounds = (rowbounds) metastateMentHandler.getValue ("depegate.Rowbounds") ؛ invocation.procede () ؛} تكوين التكوين = (التكوين) metastatementHandler.getValue ("depegate.configuration") ؛ dialect.type databasetype = null ؛ try {databaseType = exament.type.valueof (configuration.getVaria (). e) {} if (databaseType == null) {رمي new runTimeException ("لا يتم تعريف قيمة خاصية اللهجة في التكوين. ؛ الحالة oracle: Dialect = new oracledialect () ؛ break ؛} String OriginalsQl = (string) metastatementHandler.getValue ("depegate.boundsql.sql") rowbounds.getlimit ()))) ؛ metastatementHandler.setValue ("depegate.rowbounds.offset" ، rowbounds.no_row_offset) ؛ metastateMentHandler.setValue ("devited.rowbounds.limit" ، rowbounds.no_row_limit) ؛ الهدف) {return plugin.wrap (Target ، this) ؛}@Outridepublic void setProperties (خصائص الخصائص) {}}3. [文件] لهجة
/*:
4. [文件] mysql5dialect.java
/*** mysql 方言分页类*/public class mysql5dialect يمتد اللهجة {Static Static Final String SQL_END_DELIMITER = "؛" ؛ السلسلة العامة getLimitSstring (سلسلة SQL ، Boolean hasoffset) {return mysql5pageHepler.getLimitString (SQL ، - 1 ، - 1) ؛} السلسلة العامة getLimitString (String sql ، int ، int limit) supportslimit () {return true ؛}}5. [文件] oracledialect.java
package com.chyjr.has.core.page.dialect ؛/*** oracel 方言分页**/public class oracledialect يمتد اللهجة {public string getLimitString (String sql ، int roffset ، int limit) {// todo 未实现 return "؛}}}}6. [文件] mysql5pageHepler.java
استيراد java.util.regex.matcher ؛ استيراد java.util.regex.pattern ؛/*** mysql 分页工具类*/public class mysql5pageHepler {/*** 得到查询总数的 sql*/public static getCountString (String queryselect) {QuerySelect getLastorderInserToPpoint (QuerySelect) ؛ int formIndex = getAfterForminserToint (QuerySelect) ؛ String Select = QuerySelect.SubString (0 ، formIndex) ؛ // 如果 حدد 中包含 contectif (select.toLowerCase (). {إرجاع stringbuffer جديد (QuerySelect.Length ()). إلحاق ("تحديد العد (1) عدد من (") .append (queryselect.substring (0 ، orderIndex)). ) .append (QuerySelect.SubString (formIndex ، orderIndex)). || getLimitSstring (سلسلة QuerySelect ، إزاحة int ، الحد الأقصى) {QuerySelect = getLinesQl (QuerySelect) ؛ // String sql = queryselect.replaceall ("[^// s ،] + //. limit ؛ return sql ؛}/*** 将 sql 语句变成一条语句 , 并且每个单词的间隔都是 1 个空格 ** param sql* sql 语句* @return "// s {2 ،}" ، "") ؛}/*** 得到 sql 第一个正确的 من 的的插入点*/خاص static int getafterforminsertpoint (سلسلة queryselect) {string regex = "// s+from // s+" pattern pattern.compile (regex ، pattern.case_insensivitive) ؛ (matcher.find ()) {int fromStartIndex = matcher.start (0) ؛ string text = QuerySelect.SubString (0 ، fromStartIndex) ؛ if (isBracketCanpartnersnip如果匹配返回 صحيح ، 否则返回 false*/private static boolean isbracketcanpartnership (نص سلسلة) {if (text == null || (getIndexofCount (text ، '(')! = getIndexofCount (text ، '))) getIndexofCount (نص سلسلة ، char ch) {int count = 0 ؛ for (int i = 0 ؛ i <text.length () ؛ i ++) {count = (text.charat (i) == ch)؟ COUNT + 1: COUNT ؛} عدد الإرجاع ؛}}2. [图片] mybatis.jpg