一,在已有类中添加新属性,需添加注解@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());