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

 

本文作者:好Wu赖

本文链接:https://www.cnblogs.com/erlongxizhu-03/p/12332151.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   好Wu赖  阅读(9411)  评论(2编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2019-02-19 正则表达式基础
2019-02-19 spring+springmvc+hibernate 框架搭建
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起