zoukankan      html  css  js  c++  java
  • 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());
    源码,是痛苦的,又是快乐的,如果没有这痛苦,也就没有了这快乐!
  • 相关阅读:
    从原理层面掌握@InitBinder的使用【享学Spring MVC】
    array详解
    forward_list详解
    list详解
    deque详解
    vector详讲(三)实例
    vector详讲(二)迭代器
    vector详讲(一)
    numeric_limits<>函数
    seek()和tell()在文件里转移
  • 原文地址:https://www.cnblogs.com/erlongxizhu-03/p/12332151.html
Copyright © 2011-2022 走看看