使用PageHelper进行分页,可以实现分页功能但PageInfo中没有分页信息的问题解决

最近在使用Mybatis的分页插件PageHelper进行分页时遇到了一个问题,能实现分页功能,但是创建的pageinfo中没有分页的信息。就是pagesize,pagenum,totals等都为0,获取不到这些字段值,看了代码和之前写的没有什么不同

使用情况就是下面代码中演示的这种,只是传入的参数是动态的传入的,可以查询实现分页功能,即返回的list中是10条数据,也是第二页的数据。

但创建的pageinfo中却获取不到分页信息,仔细查看代码后返现只有pojo类不同,其他都是相同的,后来经过测试,发现是因为该查询语句返回的pojo类中有几个字段的set方法中又对数据库进行了查询操作(这里又进行查询操作是因为这几个字段是外键,获取的是对应的记录的id,但我们需要的是名称,所以在set方法中又根据查询出的id获取该记录的名称,发现原因后把这个步骤改成直接用sql语句从数据库中查询出对应的名称也可以实现该功能),所以才导致了分页信息的丢失,把查询语句去掉就能获取到分页信息了。

 

分页类的使用演示

//分页代码演示
public Page selectList() {
        PageHelper.startPage(2, 10);
        Page list = basedataMapper.selectList(bean);
        PageInfo pageInfo = new PageInfo<>(list);
}

引发问题的pojo类
//对应的pojo类,删掉了多余字段,只留下了导致分页信息丢失的字段
@Component
public class B_propertiesBean {

    private static B_propertiesBean propbean;

    private int thesaurus; 
    private String thesaurusname = "";
    private int reference; 
    private String referencename = "";

    @Autowired
    private BasedataService basedataService;

    @PostConstruct //通过@PostConstruct实现初始化bean之前进行的操作
    public void init() {
        propbean = this;
        propbean.basedataService = this.basedataService;
        // 初使化时将已静态化的testService实例化
    }


    public B_propertiesBean() {

    }

    public int getThesaurus() {
        return thesaurus;
    }

    public void setThesaurus(int thesaurus) {
        this.thesaurus = thesaurus;
        //设置该外键字段id时获取到对应的名称,设置到对应的字段上
        //这里进行的查询语句导致上面分页信息的丢失
        if (thesaurus > 0) {
            String bdname = propbean.basedataService.selectbaseBdnameById(thesaurus);
            this.setThesaurusname(bdname == null ? "" : bdname);
        }
    }


    public int getReference() {
        return reference;
    }

    public void setReference(int reference) {
        this.reference = reference;
        if (reference > 0) {
            String bdname = propbean.basedataService.selectbaseBdnameById(reference);
            this.setReferencename(bdname == null ? "" : bdname);
        }
    }

    public String getThesaurusname() {
        return thesaurusname;
    }

    public void setThesaurusname(String thesaurusname) {
        this.thesaurusname = thesaurusname;
    }

    public String getReferencename() {
        return referencename;
    }

    public void setReferencename(String referencename) {
        this.referencename = referencename;
    }
}

 

你可能感兴趣的:(Java笔记)