一,在已有類中添加新屬性,需添加注解@TableField(exist = false),否則mybatis-plus封裝的方法會報錯
/** * 關聯 用戶角色菜單表查詢 * @param roleId * @return */ @Select({"<script> select urt.*,r.*,r.role_name roleName,m.name menuName,tr.tr_name trName,tr.right_descrip trDescrip,urt.tright_type " + " from user_role_tright urt " + " left join role r on urt.user_or_role_id=r.id " + " left join menu m on urt.menu_id=m.id " , " left join tright tr on urt.tright_id=tr.id " + " where urt.user_role_type = '0'" + //0:角色id "<when test='roleId!=null and roleId!=\"\" '>"+ " and urt.user_or_role_id = #{roleId} ", "</when>", "</script>" }) public List<UserRoleTright> dyRoleMenuPerssion(@Param("roleId") String roleId);
實體類屬性:
/*************************************** * 關聯查詢自定義字段,需要使用注解@TableField(exist=false),即該條屬性表示數據庫表中不存在的, * 即mybatis-plus封裝方法中sql語句不會使用此字段。自定義中可以使用 * *************************************************/ @TableField(exist = false)//重點:Mybatis-plus中默認操作忽略該字段 private String roleName;
也可使用foreach標簽
二,創建一個新類,將結果集封裝到此類中
@Select("select urt.*,r.role_name roleName,r.* from user_role_tright urt LEFT JOIN role r on urt.user_or_role_id=r.id" + " WHERE urt.user_role_type = '0'") public List<Map<String,Object>> testReturnListMap();//可以查詢將結果放到list<Map>中,自己封裝自定義entity。
如果包含特殊函數或特殊字符%,需要加.lambda()方法
Page<Map<String, Object>> selectMapsPage = douying2ActionMapper. selectMapsPage(new Page<Map<String, Object>>(1, 10),new QueryWrapper<Douying2Action>() .select("count(account) as countAccount ","FROM_UNIXTIME(savaTimer,'%Y-%m-%d')as day") .isNotNull("savaTimer").gt("FROM_UNIXTIME(savaTimer,'%Y-%m-%d')", "2021-04-05") .lt("FROM_UNIXTIME(savaTimer,'%Y-%m-%d')", "2021-04-22") .groupBy("FROM_UNIXTIME(savaTimer,'%Y-%m-%d')") .orderByDesc("savaTimer").lambda());