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);