使用fastmybatis進(jìn)行聯(lián)表查詢

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);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容