PageHelperを使用してページングを行うと、ページング機能を実現できますが、PageInfoにページング情報がないという問題解決

2774 ワード

最近MybatisのページングプラグインPageHelperを使ってページングを行う際に問題が発生し、ページング機能を実現できますが、作成したpageinfoにはページング情報がありません.つまりpagesize、pagenum、totalsなどはすべて0で、これらのフィールドの値を取得することができなくて、コードを見て前に書いたのと何の違いもありません
使用状況は、次のコードで示すように、入力されたパラメータが動的に入力されているだけで、返されたリストに10個のデータがあり、2ページ目のデータであるページ機能を実現することをクエリーすることができます.
しかし、作成された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;
    }
}