精华内容
下载资源
问答
  • Mybatis 子查询

    千次阅读 2021-04-07 21:26:19
    子查询: 同表中子查询直接在statement中写,和sql格式一样; 不同表间的子查询通过resultMap来实现: <resultMap type = "Book" id = "BookAndReader" autoMapping = "true"> <id colume = "id" property...

    子查询:

    同表中子查询直接在statement中写,和sql格式一样;

    不同表间的子查询通过resultMap来实现:

    <resultMap type = "Book" id = "BookAndReader" autoMapping = "true">
        <id colume = "id" property = "id"/>
        <association property = "reader" javaType = "Reader" autoMapping = "true" select = "queryReaderById" column = "reader_id">
            <!--select进行子查询声明,其参数为子查询语句ID-->
            <!--column为子查询参数,即从pojo类传过来的#{id}-->
        </association>
    </resultMap>
    <select id = "queryBookAll" resultMap = "BookAndReader">
        select * from book where book_number = #{number}
    </select>
    <select id = "queryReaderById" resultType = "Reader">
        <!--这里是子查询实体-->
        select * from reader where reader_id = #{id}
    </select>
    

    这里和SQL语句一样,先执行子查询,resuktMap在主查询执行之前就存在了,xml文件读取过程中不执行,全部读取完后在数据库中执行,其中子查询得到结果集reader,执行主查询后将结果集返回至resultMap,将其中的子对象与子查询结果集进行关联,排除对不上的,得到最终结果

    展开全文
  • mybatis子查询

    千次阅读 2019-03-21 10:57:13
    这种方式是把对关联表的查询单独拎出来, association的属性有property:查询结果存放的属性,javaType:查询结果返回的类型,select:拎出来的查询语句,而column:相当于是把参数赋给查询语句。 我在宁外的地方...

     

     如上:

    这种方式是把对关联表的查询单独拎出来, association的属性有property:查询结果存放的属性,javaType:查询结果返回的类型,select:拎出来的查询语句,而column:相当于是把参数赋给查询语句。

    我在宁外的地方看到别人把查询语句放在一起,查询结果单独处理的

    链接:https://blog.csdn.net/qq_36544760/article/details/79502206

    他这里是一个嵌套查询,相当于是对结果进行处理(其实把Role 的参数直接放进来也是可以的,这样做的好处就是不怕下次需要更多role里面的参数)

     

    第二种:分步查询

    就是分两个sql(这样写的话就需要维护两个sql跟对应的mapper了),在主mapper里面的子mapper(关联表)都有查询。

    在主表里面用association关联到子表

    主表:

    字表

     之所以能这样做的原因是:mybatis在mapperProxy里面生成mapper对应的sql时按照命名空间+sql的id形式作为相对应的key值。

    补充一下另一种用collection标签的写法

    这里unionId查出来是多条

     对应collection里面是多条。

    展开全文
  • MyBatis子查询+分组

    2020-06-10 09:11:41
    MyBatis子查询+分组 查询需求: 如图,传入一个uid,根据该uid返回与该uid同组的全部uid列表。 查询思路: 根据uid找到该uid对应的gname,对gname进行归并,得到唯一的gname,根据gname,返回符合条件的全部uid,并...

    MyBatis子查询+分组

    查询需求:
    在这里插入图片描述
    如图,传入一个uid,根据该uid返回与该uid同组的全部uid列表。

    查询思路:
    根据uid找到该uid对应的gname,对gname进行归并,得到唯一的gname,根据gname,返回符合条件的全部uid,并根据uid进行归并。

    接口编写

    //    根据用户id查询该用户对应组的全部用户id
        List<Integer> getGroupUidByUid(Integer uid);
    

    Mapper编写:

    <!--    根据用户id查询该用户对应组的全部用户id-->
        <select id="getGroupUidByUid" resultType="integer" parameterType="integer">
            select uid from user_perms where gname=(select gname from user_perms where uid=#{uid} group by gname) group by uid;
        </select>
    

    ** group by概述:**
    简单来说:将数据库的数据用’by’后面接的规则进行分组,即将一个大数据库分成一个个相同类型数据在一起的小区域。
    group by的语法:

    SELECT column_name, function(column_name)  //此处的function()函数是指SQL中的一些聚合函数,例如:MAX(),MIN(),SUM(),AVG(),COUNT()等等
    FROM table_name
    WHERE column_name operator value    //where条件语句
    GROUP BY column_name;    //以某一列分组
    
    展开全文
  • Mybatis子查询使用

    千次阅读 2019-08-01 14:18:51
    查询一年内的达标天数 <select id="getAllDistrictDayAqis" resultMap="AirDayReportMap"> SELECT district_code as "districtCode", aqi, aqi_grade as "aqiGrade", ...

    查询一年内的达标天数

      <select id="getAllDistrictDayAqis" resultMap="AirDayReportMap">
            SELECT
                district_code as "districtCode",
                aqi,
                aqi_grade as "aqiGrade",
                primary_pollutant as "primaryPollutant",
                report_time as "reportTime",
                pm2_5 as "pm2_5",
                o3 as "o3",
                no2 as "no2",
                so2 as "so2",
                pm10 as "pm10",
                co as "co",
                time,
            (select count(1) from aqi_district_day d where d.district_code = main.district_code and d.aqi_grade &lt; 2 and d.time >= #{firstDayOfYear} and d.time &lt;= #{day}) as good_days
            FROM aqi_district_day main
            WHERE time = #{day}
        </select>
    

    这里的亮点是where d.district_code = main.district_code 控制数据是当前行政区的数据,不会多

    展开全文
  • 目前的mybatis里是这样写的 ``` SELECT t.*, (SELECT count( s.un_sid ) FROM un_star s WHERE t.un_pid = s.un_pid AND s.un_uid = #{unUid,jdbcType=INTEGER)) AS 'skey', (SELECT count( l.un_...
  • 现在想通过父查询把参数start,end传到子查询中 父查询 ``` @Select("select * from tb_enterprise_watch where id = #{enterpriseWatchId}") @Results({ @Result(id=true,property = "id",column = "id"), @...
  • 1.使用子查询时,当子查询的sql的 parameterType=int,association的 column={} 时会报异常 Caused by: java.lang.NoSuchMethodException: java.lang.Integer.<init>() 2.原因:是因为{}被解析为map,...
  • 首先定义resultMap ...子查询传参在collection里column="{orderId = id}",这里的orderId是传到子查询中的变量名,id为主查询中的字段名, 要和数据库表中字段名一致,而不是和model层对象变量一致;  
  • Sql文中 加入连接Role表 可以查询出Role对象,但是用如下方法却查询不到 <association property="role" column="role_id" javaType="com.luxondata.entity.base.Role" select="getRoleByID"/> 是不是我什么地方写...
  • 多对一的查询处理 1.按照查询嵌套处理。将多表的数据分别查出来然后用resultMap对应起来 (复杂属性的字段使用association(对应对象)或者collection(对应集合)来映射) <?xml version="1.0" encoding="UTF-8...
  • mybatis 嵌套查询子查询column传多个参数如下: 1、图解 2、代码示例 备注:注意,相同颜色的单词都是有关联的。 <resultMap id="blogResult" type="Blog"> <association property="author" column="{id=...
  • 当需要将主查询的参数传递给子查询时可以加虚拟列映射 在sql 里 加上 case when (#{selectTagId} IS NULL) then NULL else #{selectTagId} end as selectTagId <resultMap type="KlbDocument" id=...
  • Mybatis框架(子查询

    2021-06-30 10:44:48
    Mybatis框架(子查询
  • 在我们的sql查询速度跟不上,过慢的时候,就要把子查询拆开。 可以用resultMap来实现 <resultMap id="airRoute" type="com.model.bo.Bean"> <result column="id" property="id"></result> <...
  • 今天做项目遇到了一个情况,在主查询中的结果当中,不存在子查询需要的条件参数的情况下,无法将代码中传入的参数传递给子查询。 例如下面的代码 selectAll对应的代码如下: <sql id="vipViceColumns"> ...
  • Mybatis查询递归查找菜单

    万次阅读 热门讨论 2017-05-25 11:37:10
    Mybatis查询递归查找菜单
  • mybatis 构造查询和联合子查询问题

    千次阅读 2017-10-20 15:44:22
    1.在关联查询 - 子查询的时候              column="userid" select="SelectUserByID" >          resultType="User">
  • 在有父、子查询的SQL语句时,希望子查询能够使用到父查询中的参数(如日期)。 实现 将参数作为数据库表返回值的某一列,进行传递。此时,可以在resultMap中获取到。示例如下。 Dao层 List <...
  • Mybatis 递归子查询遇见的问题

    千次阅读 2018-01-31 12:08:50
    在运用Springboot +springcloud+mybatis项目中,在菜单列表的三级查询中运用到mybatis递归子查询,然而在查询的时候,有好几次只执行了第一次查询,第二次子菜单不显示。 因为一直想着这个问题,做梦想到了这个问题...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • mybatis实现in子查询

    千次阅读 2019-09-26 11:37:54
    关于mybatis如何实现子查询 1、在接口中写子查询的方法 参数写一个integer类型的集合 2、在xml中实现方法 在in子查询中条件使用动态sql标签foreach open是执行开始时写一个( separator是每次循环完都会写一个逗号 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 34,419
精华内容 13,767
关键字:

mybatis子查询