1 Star 0 Fork 0

丶ajax / mybatis-plus-tool

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

功能简介

img.png

先看上图,在很多后台管理系统的查询场景中,都会有很多条件的搜索的需求。当我们集成mybatis—plus之后。写法如下

@Test
public void lambdaQueryChainWrapper() {
        List<User> list = new LambdaQueryChainWrapper<>(userMapper)
        .eq(User::getName, "mck")
        .select(User::getEmail, User::getId)
        .list();
        log.info("list:{}", list);
        }

每次我们在做后台的时候都要去在中拼接条件。最繁琐的是,业务上增加了字段的一些骚操作。或者是条件太多。

要动前端动,后台就不改

如果条件搜索很多不仅仅前端需要发送请求的同时携带很多数据。后台也是同步增加很多搜索条件。哎希望这种问题前端改一下得了,后台就别动了。可以参考如下:

示例

get请求

http://localhost:8002/mpJson2?eq$userName=mck

post请求

{
    "eq$userName":"mck"
}

服务端:

服务端就是通过 HttpServletRequest request 即可进行取值,并进行条件的拼接操作,前端按照规则进行填充查询条件。这样以来增减查询条件后台就不用动。


@Slf4j
@RestController
public class MpController {

    @Resource
    private UserMapper userMapper;


    @GetMapping("page")
    public ApiResultPage<UserDTO> loadPageList(HttpServletRequest request) {
        return MpEasyTool.page(request, userMapper, userQueryWrapper -> userQueryWrapper.eq("user_name", "mck"), UserDTO.class);
    }


    @GetMapping("list")
    public ApiResult<List<UserDTO>> loadList(HttpServletRequest request) {
        return MpEasyTool.list(request, userMapper, UserDTO.class);
    }
    
    @GetMapping("mpJson4")
    public ApiResult<List<User>> loadList4(HttpServletRequest request) {

        List<User> list= userService.list(request);
        return ApiResult.ok(list);
    }
}

封装了如下方法 img_2.png

如下所示,自定义 xxxService extends IMpService。可以使用其增强方法。在原生mybatis-plus的方法基础上新增一些常用方方法。

public interface UserService extends IMpService<User> {

    
}
@Component
public class UserServiceImpl extends MpServiceImpl<UserMapper, User> implements UserService {

}

新增方法 img_1.png

查询拼接条件太多,真不想拼接。

其实mybatis-plus提供了相关注解的方式,标记查询条件,如下所示:他只提供了如下几种,其实也够用来了。

/**
 * SQL 比较条件常量定义类
 *
 * @author hubin
 * @since 2018-01-05
 */
public class SqlCondition {
    /**
     * 等于
     */
    public static final String EQUAL = "%s=#{%s}";
    /**
     * 不等于
     */
    public static final String NOT_EQUAL = "%s&lt;&gt;#{%s}";
    /**
     * % 两边 %
     */
    public static final String LIKE = "%s LIKE CONCAT('%%',#{%s},'%%')";

    /**
     * % 两边 % [oracle使用]
     */
    public static final String ORACLE_LIKE = "%s LIKE CONCAT(CONCAT('%%',#{%s}),'%%')";
    /**
     * % 左
     */
    public static final String LIKE_LEFT = "%s LIKE CONCAT('%%',#{%s})";
    /**
     * 右 %
     */
    public static final String LIKE_RIGHT = "%s LIKE CONCAT(#{%s},'%%')";
}

@Data
@Accessors(chain = true)
@TableName(value = "lc_user")
public class User {

    @TableId(value = "USER_ID", type = IdType.AUTO)
    private Long userId;

    @TableField(value = "USER_NAME",whereStrategy = FieldStrategy.NOT_EMPTY,condition = SqlCondition.EQUAL)
    private String userName;

    @TableField(value ="PASSWORD",whereStrategy = FieldStrategy.NOT_EMPTY,condition = SqlCondition.EQUAL)
    private Integer password;

    @TableField("STATUS")
    private String status;

}

如果嫌弃太少了,参考下面的。

@Data
@Accessors(chain = true)
@TableName(value = "lc_user")

@WrapperGroups(groups = {
        @Group(group = "group1", conditionType = ConditionType.OR, splicingType = ConditionType.AND),
        @Group(group = "group2", conditionType = ConditionType.AND, splicingType = ConditionType.AND)
})
public class User {

    @TableId(value = "USER_ID", type = IdType.AUTO)
    private Long userId;
    
    @Wrapper(value = WrapperType.LIKE, group = "group1")
    private String userName;
    
    @Wrapper(group = "group1")
    private Integer password;
    
    @Wrapper(group="group2")
    private String status;

}

上面拼接相当于执行:

SELECT USER_ID,user_name,password,status FROM lc_user WHERE ((user_name LIKE ? OR password = ?) AND (status = ?))
    @GetMapping("mpJson3")
    public ApiResult<List<User>> loadList3() {
        User user = new User();
        user.setUserName("mck")
                .setPassword(123)
                .setStatus("1");
       List<User> list =  MpEasyTool.list(userMapper, user);
        return ApiResult.ok(list);
    }

空文件

简介

基于mybatis-plus的mapper以及Iservice扩展. 展开 收起
Java
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/itmc/mybatis-plus-tool.git
git@gitee.com:itmc/mybatis-plus-tool.git
itmc
mybatis-plus-tool
mybatis-plus-tool
master

搜索帮助