• 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());
    源码,是痛苦的,又是快乐的,如果没有这痛苦,也就没有了这快乐!
  • 相关阅读:
    年终总结-致敬2014
    NCover的安装和使用-NUnit
    某大型银行深化系统之二:设计策略
    某大型银行深化系统之一:平台技术
    自己动手写Web容器之TomJetty之五:包装请求参数
    robot framework环境搭建
    解决从jenkins打开robot framework报告会提示‘Opening Robot Framework log failed ’的问题
    robotframework中文显示乱码
    RF常用快捷键
    抓包工具Fidder移动端HTTP请求抓包详解
  • 原文地址:https://www.cnblogs.com/erlongxizhu-03/p/12332151.html
Copyright © 2020-2023  润新知