超爽的自定義分頁
使用mybatis-plus單表操作十分方便,但是多表聯合查詢感覺又迴歸到xml時代了,當然也有註解@Select直接寫sql的方式,但是xml要更靈活,思路更加清晰一點
這種寫法對於後面看代碼的人來說有點災難,xml雖然複雜一點但思路清晰很多
接下來我們就開始解決以下問題:
- 1、多表多條件聯合查詢
- 2、時間段查詢
- 3、分頁查詢
其他代碼段採用mybatis-plus代碼生成器配合FreemarkerTemplateEngine完全一鍵生成,擺脫CRUD工程師的噩夢
關鍵配置:
allowMultiQueries=true,該語句作用如下:
1.可以在sql語句後攜帶分號,實現多語句執行。
2.可以執行批處理,同時發出多個SQL語句。
<code>spring: datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:${DATASOURCE_DBTYPE:mysql}://${DATASOURCE_HOST:*******}:${DATASOURCE_PORT:3306}/test?characterEncoding=UTF-8&useUnicode=true&useSSL=false&allowMultiQueries=true username: ${DATASOURCE_USERNAME:*****} password: ${DATASOURCE_PASSWORD:******} mybatis-plus: configuration: map-underscore-to-camel-case: true global-config: db-config: logic-delete-value: "Y" # 邏輯已刪除值(默認為 Y) logic-not-delete-value: "N" # 邏輯未刪除值(默認為 N) mapper-locations: classpath:xml/*.xml/<code>
Configuration配置類
<code>import com.baomidou.mybatisplus.core.injector.ISqlInjector; import com.baomidou.mybatisplus.extension.injector.LogicSqlInjector; import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; import org.mybatis.spring.annotation.MapperScan; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.transaction.annotation.EnableTransactionManagement; @EnableTransactionManagement @Configuration @MapperScan("com.springboot.mybatis.mapper") public class MybatisConfig { /** * 初使化Mybatis審計字段自動賦值的interceptor */ @Bean public ISqlInjector sqlInjector() { return new LogicSqlInjector(); } /** * 分頁插件 */ @Bean public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); } }/<code>
關鍵的mapper.xml文件
其中RecordsCount用來做計數使用即total
SQL_CALC_FOUND_ROWS得到分頁數據
resultMap="ResultMap,RecordsCount"結果為查詢列表和計數
<code> /<code>
mapper文件
<code>@Repository @Mapper public interface TestMapper extends BaseMapper { List> findResultByInfo(TestSelect select); }/<code>
查詢條件實體
<code>@Data public class TestSelect { private String name; private String classname; private String createdTimeStart; private String createdTimeEnd; private Integer current;//第幾頁 從1開始 private Integer size;//每頁幾個數據 }/<code>
關鍵字: xml DATASOURCE com