三个关联的对象查询
实体类
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}}]}