三個關聯的對象查詢
實體類
public class SchoolEntity {
private SchoolDbEntity db;
public SchoolDbEntity getDb() {return db; }
public void setDb(SchoolDbEntity db) { this.db = db; }
}
public class SchoolDbEntity{
private DbServerEntity dbSvr;
public DbServerEntity getDbSvr() { return dbSvr; }
public void setDbSvr(DbServerEntity dbSvr) { this.dbSvr = dbSvr; }
}
public class DbServerEntity {
}
映射類:
public interface SchoolMapper {
@SelectProvider(type= SchoolProvider.class,method = "listSql")
@Results({
@Result(property = "db",column = "schoolid",
one=@One(select = "com.jiapeng.mainsvr.mapper.SchoolDbMapper.getDbByScId"))
})
List<SchoolEntity> list(String name, String typeId, int stop, int rows, int page);
}
public interface SchoolDbMapper {
@Select("select * from sc_db where scId=#{scId}")
@Results({
@Result(property = "dbSvr",column="dbSvrId",
one=@One(select = "com.jiapeng.mainsvr.mapper.DbServerMapper.getById"))
})
SchoolDbEntity getDbByScId(String scId);
}
public interface DbServerMapper {
@Select("select * from db_server where id=#{id}")
DbServerEntity getById(String id);
}
通過@Result來實現,及使用join 關聯兩個表查詢,使用@Result來給實體類的對象中的屬性賦值
實體類: (節省代碼,沒複製get,set)
public class RoomTypeEntity {
private String id;
private String name;
private CodeEntity code;
}
public class CodeEntity {
private String code;
private String name;
private int type;
}
mapper:(查詢方法,sql中的codeid,codename 只是示例)
@Select("select *,codeid='t1',codename='n1' from sc_classRoomType order by id")
@Results({
@Result(property = "code.code",column = "codeid"),
@Result(property = "code.name",column = "codename")
})
List<RoomTypeEntity> list();
查詢結果:
{"code":200,"msg":null,"content":[{"id":"100","name":"普通","code":{"code":"t1","name":"n1","type":0}},{"id":"101","name":"多媒體","code":{"code":"t1","name":"n1","type":0}},{"id":"102","name":"機房","code":{"code":"t1","name":"n1","type":0}},{"id":"103","name":"實驗室","code":{"code":"t1","name":"n1","type":0}}]}