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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM