美文网首页
使用fastmybatis进行联表查询

使用fastmybatis进行联表查询

作者: 猿敲月下码 | 来源:发表于2018-09-29 10:43 被阅读0次

    fastmybatis介绍:https://www.jianshu.com/p/69aa4f435378

    假设有两张表

    用户表

    table user 
    (
        id int
        name varchar
    )
    

    用户城市表

    table city_info
    (
        id int
        user_id int
        city varchar
    )
    
    • 查询在杭州的用户
    Query query = new Query()
    // 关联城市表
    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()
    // 关联城市表
    query.join("inner join city_info t2 on t.id = t2.user_id")
        .eq("t2.city", "杭州")
        // 分页,第一页10条
        .page(1, 10);
    

    相关文章

      网友评论

          本文标题:使用fastmybatis进行联表查询

          本文链接:https://www.haomeiwen.com/subject/fyrvoftx.html