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