fastmybatis介紹:http://www.reibang.com/p/69aa4f435378
假設有兩張表
用戶表
table user
(
id int
name varchar
)
用戶城市表
table city_info
(
id int
user_id int
city varchar
)
- 查詢在杭州的用戶
Query query = new Query()
// 關聯(lián)城市表
query.join("inner join city_info t2 on t.id = t2.user_id")
.eq("t2.city", "杭州");
// 查詢結果
List<User> users = userMapper.list(query);
如果想要獲取兩張表的內容文虏,可以使用listMap
方法
listMap定義在SchMapper
接口中
/**
* 查詢指定字段結果常空,Map里面key對應字段名,value對應值
* @param columns 返回的字段
* @param query 查詢條件
* @return 返回結果集,沒有返回空list
*/
List<Map<String, Object>> listMap(@Param("columns") List<String> columns, @Param("query") Query query);
- 第一個參數指定需要返回的列名菌湃,如:"username","add_time as addTime"
- 第二個參數是查詢條件
// 返回用戶id,姓名锥忿,城市
List<Map<String, Object>> listMap = userMapper.listMap(Arrays.asList(
"t.id"
, "t.name"
, "t2.city"
), query);
// List<Map<String, Object>>類型可讀性不好季惩,可以做下轉換
List<UserVo> retList = MyBeanUtil.mapListToObjList(listMap, UserVo.class);
UserVo
public class UserVo {
private int id;
private String name;
private String city;
// GET SET
}
如果要做分頁的話也簡單,query追加一個方法即可
Query query = new Query()
// 關聯(lián)城市表
query.join("inner join city_info t2 on t.id = t2.user_id")
.eq("t2.city", "杭州")
// 分頁衣赶,第一頁10條
.page(1, 10);