mybatis多表查询,@select,包括动态条件

 

一,在已有类中添加新属性,需添加注解@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());
源码,是痛苦的,又是快乐的,如果没有这痛苦,也就没有了这快乐!
原文地址:https://www.cnblogs.com/erlongxizhu-03/p/12332151.html