美文网首页
MyBatis中的@Provider

MyBatis中的@Provider

作者: 程序员小白成长记 | 来源:发表于2020-05-23 17:21 被阅读0次

    mybatis3中几个@Provider的使用方式
    其中
    @SelectProvider
    type指定类
    method指定方法
    参数会在mapper接口的调用中自动传入

    下面为构造ListFilter的SQL的一种写法(关键字,排序,分页)

    /**
     * 根据条件查询所有的知识库
     *
     * @param listRequest
     * @return
     */
    @SelectProvider(type = KbaseDirMapper.getAllKbaseListProvider.class, method = "getAllKbaseList")
    List<KbaseDir> getAllKbaseList(ListRequest listRequest);
    
    class getAllKbaseListProvider {
        public String getAllKbaseList(ListRequest listRequest) {
            String sql = "select * from t_kbase_dir where res_type = 0";
            // 拼接关键字
            if (!CollectionUtils.isEmpty(listRequest.getFilters())) {
                for (ListFilter filter : listRequest.getFilters()) {
                    if (StringUtils.isNotEmpty(filter.getKeywordType()) && filter.getKeyword() != null) {
                        sql += " and " + filter.getKeywordType() + "='" + filter.getKeyword() + "' ";
                    }
                }
            }
            // 拼接排序
            if (StringUtils.isNotEmpty(listRequest.getOrderBy()) && StringUtils.isNotEmpty(listRequest.getOrder())) {
                sql += " order by " + listRequest.getOrderBy() + " " + listRequest.getOrder();
            }
           // 拼接分页
            sql += " limit "+listRequest.getPageNo()+","+listRequest.getPageSize();
    
            return sql;
        }
    }
    

    查询语句为:
    select * from t_kbase_dir where res_type = 0 order by create_date asc limit 1,10

    相关文章

      网友评论

          本文标题:MyBatis中的@Provider

          本文链接:https://www.haomeiwen.com/subject/nrjjahtx.html