Pre Merge pull request !123 from Sor1e/master
commit
510da15fae
@ -0,0 +1,28 @@
|
|||||||
|
package com.ruoyi.common.core.annotation.order;
|
||||||
|
|
||||||
|
import java.lang.annotation.ElementType;
|
||||||
|
import java.lang.annotation.Repeatable;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自定义排序
|
||||||
|
* 如何使用:
|
||||||
|
* @DefaultOrder(column="createTime", orderType="desc", tableName="user")
|
||||||
|
* class UserVO {
|
||||||
|
* ...
|
||||||
|
* }
|
||||||
|
* startPage(UserVO.class)
|
||||||
|
* @author ruoyi
|
||||||
|
*/
|
||||||
|
@Target(ElementType.TYPE)
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
@Repeatable(CustomOrders.class)
|
||||||
|
public @interface CustomOrder {
|
||||||
|
// 列名 驼峰最终会转换为下划线命名法作为最终排序列名。
|
||||||
|
String column() default "";
|
||||||
|
|
||||||
|
// 列对应的表名
|
||||||
|
String tableName() default "";
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package com.ruoyi.common.core.annotation.order;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.lang.annotation.ElementType;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自定义排序组合注解
|
||||||
|
* @author ruoyi
|
||||||
|
*/
|
||||||
|
@Target({ElementType.TYPE})
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
@Component
|
||||||
|
public @interface CustomOrders {
|
||||||
|
CustomOrder[] value();
|
||||||
|
}
|
@ -0,0 +1,27 @@
|
|||||||
|
package com.ruoyi.common.core.annotation.order;
|
||||||
|
|
||||||
|
import java.lang.annotation.ElementType;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 默认排序
|
||||||
|
* 如何使用:
|
||||||
|
* @DefaultOrder(column="createTime", orderType="desc", tableName="user")
|
||||||
|
* class UserVO {
|
||||||
|
* ...
|
||||||
|
* }
|
||||||
|
* startPage(UserVO.class)
|
||||||
|
* @author ruoyi
|
||||||
|
*/
|
||||||
|
@Target(ElementType.TYPE)
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
public @interface DefaultOrder {
|
||||||
|
// 默认排序列 驼峰最终会转换为下划线命名法作为最终排序列名。
|
||||||
|
String column() default "";
|
||||||
|
// 排序类型, desc/asc
|
||||||
|
String orderType() default "asc";
|
||||||
|
// 表名, 可不指定
|
||||||
|
String tableName() default "";
|
||||||
|
}
|
@ -0,0 +1,25 @@
|
|||||||
|
package com.ruoyi.common.core.annotation.order;
|
||||||
|
|
||||||
|
import java.lang.annotation.ElementType;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 字段表别名
|
||||||
|
* 如何使用:
|
||||||
|
* class UserVO {
|
||||||
|
* ...
|
||||||
|
* @TableAlias("dept")
|
||||||
|
* private String deptName;
|
||||||
|
* ...
|
||||||
|
* }
|
||||||
|
* startPage(UserVO.class)
|
||||||
|
* 查询多表关联时, 指定表别名, 即可简单实现完成对应的字段排序。
|
||||||
|
* @author ruoyi
|
||||||
|
*/
|
||||||
|
@Target(ElementType.FIELD)
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
public @interface TableAlias {
|
||||||
|
String value() default "";
|
||||||
|
}
|
@ -0,0 +1,125 @@
|
|||||||
|
package com.ruoyi.common.core.web.controller;
|
||||||
|
|
||||||
|
import com.github.pagehelper.Page;
|
||||||
|
import com.github.pagehelper.PageHelper;
|
||||||
|
import com.ruoyi.common.core.annotation.order.CustomOrder;
|
||||||
|
import com.ruoyi.common.core.annotation.order.DefaultOrder;
|
||||||
|
import com.ruoyi.common.core.annotation.order.TableAlias;
|
||||||
|
import com.ruoyi.common.core.web.domain.BaseEntity;
|
||||||
|
import com.ruoyi.common.core.web.page.PageDomain;
|
||||||
|
import com.ruoyi.common.core.web.page.TableSupport;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.mockito.MockedStatic;
|
||||||
|
import org.mockito.Mockito;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
|
class BaseControllerTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testStartPageByDefaultOrder()
|
||||||
|
{
|
||||||
|
@DefaultOrder(tableName = "user", column = "userName")
|
||||||
|
class UserVO {
|
||||||
|
private String userName;
|
||||||
|
}
|
||||||
|
PageDomain pageDomain = new PageDomain();
|
||||||
|
pageDomain.setPageNum(10);
|
||||||
|
pageDomain.setPageSize(20);
|
||||||
|
|
||||||
|
MockedStatic<TableSupport> mocked = Mockito.mockStatic(TableSupport.class);
|
||||||
|
mocked.when(TableSupport::buildPageRequest).thenReturn(
|
||||||
|
pageDomain
|
||||||
|
);
|
||||||
|
new BaseController().startPage(UserVO.class);
|
||||||
|
Page<Object> localPage = PageHelper.getLocalPage();
|
||||||
|
String orderBy = localPage.getOrderBy();
|
||||||
|
assertEquals("user.user_name asc", orderBy);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testStartPageByDefaultOrder2()
|
||||||
|
{
|
||||||
|
@DefaultOrder(tableName = "user", column = "user_name")
|
||||||
|
class UserVO {
|
||||||
|
private String userName;
|
||||||
|
}
|
||||||
|
PageDomain pageDomain = new PageDomain();
|
||||||
|
pageDomain.setPageNum(10);
|
||||||
|
pageDomain.setPageSize(20);
|
||||||
|
|
||||||
|
MockedStatic<TableSupport> mocked = Mockito.mockStatic(TableSupport.class);
|
||||||
|
mocked.when(TableSupport::buildPageRequest).thenReturn(
|
||||||
|
pageDomain
|
||||||
|
);
|
||||||
|
new BaseController().startPage(UserVO.class);
|
||||||
|
Page<Object> localPage = PageHelper.getLocalPage();
|
||||||
|
String orderBy = localPage.getOrderBy();
|
||||||
|
assertEquals("user.user_name asc", orderBy);
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
void testStartPageByTableAlias()
|
||||||
|
{
|
||||||
|
class UserVO {
|
||||||
|
@TableAlias("user")
|
||||||
|
private String userName;
|
||||||
|
}
|
||||||
|
PageDomain pageDomain = new PageDomain();
|
||||||
|
pageDomain.setPageNum(10);
|
||||||
|
pageDomain.setPageSize(20);
|
||||||
|
pageDomain.setOrderByColumn("userName");
|
||||||
|
MockedStatic<TableSupport> mocked = Mockito.mockStatic(TableSupport.class);
|
||||||
|
mocked.when(TableSupport::buildPageRequest).thenReturn(
|
||||||
|
pageDomain
|
||||||
|
);
|
||||||
|
new BaseController().startPage(UserVO.class);
|
||||||
|
Page<Object> localPage = PageHelper.getLocalPage();
|
||||||
|
String orderBy = localPage.getOrderBy();
|
||||||
|
assertEquals("user.user_name asc", orderBy);
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
void testStartPageByCustomOrder()
|
||||||
|
{
|
||||||
|
@CustomOrder(tableName = "user", column = "createTime")
|
||||||
|
class UserVO extends BaseEntity {
|
||||||
|
private String userName;
|
||||||
|
}
|
||||||
|
PageDomain pageDomain = new PageDomain();
|
||||||
|
pageDomain.setPageNum(10);
|
||||||
|
pageDomain.setPageSize(20);
|
||||||
|
pageDomain.setOrderByColumn("createTime");
|
||||||
|
pageDomain.setIsAsc("desc");
|
||||||
|
|
||||||
|
MockedStatic<TableSupport> mocked = Mockito.mockStatic(TableSupport.class);
|
||||||
|
mocked.when(TableSupport::buildPageRequest).thenReturn(
|
||||||
|
pageDomain
|
||||||
|
);
|
||||||
|
new BaseController().startPage(UserVO.class);
|
||||||
|
Page<Object> localPage = PageHelper.getLocalPage();
|
||||||
|
String orderBy = localPage.getOrderBy();
|
||||||
|
assertEquals("user.create_time desc", orderBy);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testStartPageByCustomOrder2()
|
||||||
|
{
|
||||||
|
@CustomOrder(tableName = "user", column = "create_time")
|
||||||
|
class UserVO extends BaseEntity {
|
||||||
|
private String userName;
|
||||||
|
}
|
||||||
|
PageDomain pageDomain = new PageDomain();
|
||||||
|
pageDomain.setPageNum(10);
|
||||||
|
pageDomain.setPageSize(20);
|
||||||
|
pageDomain.setOrderByColumn("createTime");
|
||||||
|
pageDomain.setIsAsc("desc");
|
||||||
|
|
||||||
|
MockedStatic<TableSupport> mocked = Mockito.mockStatic(TableSupport.class);
|
||||||
|
mocked.when(TableSupport::buildPageRequest).thenReturn(
|
||||||
|
pageDomain
|
||||||
|
);
|
||||||
|
new BaseController().startPage(UserVO.class);
|
||||||
|
Page<Object> localPage = PageHelper.getLocalPage();
|
||||||
|
String orderBy = localPage.getOrderBy();
|
||||||
|
assertEquals("user.create_time desc", orderBy);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue