`
y806839048
  • 浏览: 1126820 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

mybaits两种关联查询

 
阅读更多

关联查询分两种:

1,用一个总的sql搞定

这种关联体现在collect用的是标签,sql中查询主实体,被关联实体(由于在一个sql中,注意两个实体(查询结果集)中字段名不能一样

,一样的化会在用pagehelper等自动装配的语句出问题(未明确定义列),还有就是如果id一样会导致多方只查到一个)

 

此方法看上篇文章,关联查询同名字段问题

 

2,用子查询,collection中用的是sql子查询代替标签,另外一个总的查询只查询主体,他们的关联体现在子查询的sql中

  1,连接,2条件列压入

<resultMap id="BaseResultMapr" type="com.esteel.system.bean.OpmRole" >

    <!--

      WARNING - @mbggenerated

    -->

    <id column="ID" property="id" jdbcType="VARCHAR" />

    <result column="NAME" property="name" jdbcType="VARCHAR" />

    <result column="ORGANID" property="organid" jdbcType="VARCHAR" />

    <result column="VALID" property="valid" jdbcType="VARCHAR" />

    <result column="MEMO" property="memo" jdbcType="VARCHAR" />

    <result column="LEVEL1" property="level1" jdbcType="DECIMAL" />

    <result column="SUBSYSTEM" property="subsystem" jdbcType="VARCHAR" />

  </resultMap>

  

  <resultMap id="BaseResultMapVo" type="com.esteel.system.beanVo.OpmUserVo" >

    <id column="ID" property="id" jdbcType="VARCHAR" />

    <result column="CODE" property="code" jdbcType="VARCHAR" />

    <result column="PASSWORD" property="password" jdbcType="VARCHAR" />

    <result column="NAME" property="name" jdbcType="VARCHAR" />

    <result column="TELEPHONE" property="telephone" jdbcType="VARCHAR" />

    <result column="EMAIL" property="email" jdbcType="VARCHAR" />

    <result column="ORGANID" property="organid" jdbcType="VARCHAR" />

    <result column="VALID" property="valid" jdbcType="VARCHAR" />

    <result column="MEMO" property="memo" jdbcType="VARCHAR" />

    <result column="LEVEL1" property="level1" jdbcType="DECIMAL" />

    <result column="LAST_LOGIN_DATE" property="lastLoginDate" jdbcType="VARCHAR" />

    <result column="LAST_LOGIN_TIME" property="lastLoginTime" jdbcType="TIMESTAMP" />

    <result column="ONLINE_MARK" property="onlineMark" jdbcType="VARCHAR" />

    <result column="ONLINE_IP" property="onlineIp" jdbcType="VARCHAR" />

    <result column="SESSIONID" property="sessionid" jdbcType="VARCHAR" />

    <collection property="opmRole" ofType="com.esteel.system.bean.OpmRole" select="getr" column="{uId=ID}">

    </collection>

  </resultMap>

   <select id="getr" resultMap="BaseResultMapr">

  select r.* from opm_role r join opm_user_role ur on ur.roleid = r.id  join opm_User o on o.id = ur.userid  

  and o.id=#{uId}

  </select>

  

  <select id="getUserByMarkId" parameterType="map" resultMap="BaseResultMapVo">

 select o.*

       from opm_User o 

      where 1 = 1

 <if test="organid!=null and organid!=''"> 

      and o.organId=#{organid} 

 </if>

 <if test="valid!=null and valid!=''"> 

       and o.valid=#{valid} 

 </if>

 <if test="level1!=null and level1!=''"> 

      and o.LEVEL1=#{level1}

 </if>

  order by o.code

  </select>

分享到:
评论

相关推荐

    mybaits实例项目

    6. **参数映射**: MyBatis支持两种参数映射方式:#{}和${}。#{}是预编译的,可以防止SQL注入;${}则会原样替换,通常用于动态SQL。 7. **事务管理**: 在MyBatis中,事务可以通过编程式或声明式方式进行管理。编程式...

    mybaits demo程序

    - MyBatis提供了本地缓存和二级缓存两种机制,可以在一定程度上提高性能。开发者可以根据需求配置缓存策略。 7. **插件支持**: - MyBatis允许自定义插件,可以拦截Executor、StatementHandler、ParameterHandler...

    mybatis系列三:一对多双向关联

    在MyBatis中,实现一对多关联有两种方式:集合映射和关联映射。集合映射通常用于一个实体包含一个列表或集合的子实体,而关联映射则允许更复杂的导航结构。在这个系列的第三部分,我们将重点讨论双向关联,这意味着...

    MyBaits配置详解

    - `transactionManager`元素:定义事务管理器,常见的有JDBC和MANAGED两种。JDBC适用于手动管理事务,而MANAGED则适用于容器管理的事务。 5. **映射器(Mappers)**: - `mappers`元素:配置映射文件的位置,可以...

    解决mybatis使用char类型字段查询oracle数据库时结果返回null问题

    另一种方法是将char类型字段改为varchar2类型。在大多数情况下,varchar2类型是更好的选择,因为它可以存储变长字符串,而char类型只能存储固定长度的字符串。 在使用jdbc查询时,也需要注意char类型字段的特殊性。...

    mybaits使用例子

    MyBatis提供了两种参数映射方式:自动映射和手动映射。自动映射时,MyBatis会尝试将传入的参数值与SQL中的参数匹配;手动映射则需要使用`@Param`注解指定参数名。 7. **缓存机制** MyBatis内置了一级缓存和二级...

    Mysql跨表更新 多表update sql语句总结

    这个查询会在`ProductPrice`中找不到匹配的`productId`时,更新`Product`表的`deleted`字段。 最后,我们也可以同时更新两表中的字段。假设需要在更新`ProductPrice`表的价格的同时,将`Product`表的`dateUpdate`...

    mybatis的config和mapper-dtd

    - **`transactionManager`**: 配置事务管理器,常见的有JDBC和Managed两种类型。 - **`dataSource`**: 配置数据源,可以是基本的数据源或连接池,例如Druid、HikariCP等。 - **`mappers`**: 指定Mapper配置文件的...

    mybatis一对一与一对多

    在实际开发中,我们常常会遇到一对一(One-to-One)和一对多(One-to-Many)的关系映射,这两种关系在数据库设计中非常常见。本篇文章将详细探讨 MyBatis 如何处理一对一和一对多的映射,以及在 Oracle 数据库中如何...

    mybatis实现多对一的实例

    在MyBatis中,"多对一"关系映射是一种常见的数据库设计模式,它表示一个实体(如订单)可以与多个相关实体(如订单详情)关联,而另一个实体(订单详情)只对应一个实体(订单)。这个实例展示了如何在MyBatis中配置...

    MyBatis实现Mysql数据库分库分表操作和总结(推荐)

    数据库分库分表有两种方式:水平切分和垂直切分。 水平切分是指将一个大型表分割成多个小型表,每个表的结构相同。这种方式适合于解决大规模数据所带来的性能问题。 垂直切分是指将不同的业务模块分离到不同的...

    Mybatis文档(中英)

    Mybatis提供了本地缓存和二级缓存两种机制。本地缓存是线程级别的,可以避免重复查询;二级缓存是全局的,可以在多个SqlSession之间共享数据,提高性能。 10. **Mybatis Plus扩展** Mybatis Plus是Mybatis的一个...

    spring+mybatis 简单实例图书管理系统

    MyBatis则是一个轻量级的持久层框架,它将SQL语句与Java代码分离,提供了一种更加灵活的数据库操作方式。相比于传统的JDBC,MyBatis更易于维护和调试,因为它允许开发者直接编写SQL,同时可以通过映射文件或注解将...

    derby+myBatis 入门

    通过MyBatis的扫描机制,这两个部分会被关联起来,使得在Java代码中调用接口方法时,实际上执行的是XML文件中定义的SQL语句。 8. **Spring整合MyBatis**:如果项目使用Spring框架,那么还需要配置Spring的...

    myBatis中文文档

    3. **XML配置与注解**:MyBatis支持通过XML配置文件和注解两种方式来定义映射关系。XML配置文件中包含Mapper接口、SQL语句和结果映射等信息,注解则更方便地在Mapper接口和实体类上直接标注。 4. **Mapper接口和XML...

    websocket实例

    WebSocket是一种在客户端与服务器之间建立持久连接的协议,它允许双方进行全双工通信,即数据可以在两个方向上同时传输,极大地提高了实时性。在"websocket_springmvc+mybaits"这个实例中,我们将探讨如何结合Spring...

    SpringMVC+Mybatis所需JAR包

    SpringMVC和Mybatis是Java Web开发中的两个关键框架,它们在构建现代企业级应用程序时起着核心作用。SpringMVC作为Spring框架的一部分,负责处理HTTP请求和响应,而Mybatis则是一个轻量级的持久层框架,简化了数据库...

    CXF Mybatis Spring 集成配置

    CXF 是一款用于构建和服务消费的开源框架,它支持 SOAP 和 RESTful 两种类型的 Web 服务。通过 CXF,我们可以方便地创建服务提供者和服务消费者,同时提供了丰富的功能,如数据绑定、WS-Security 等。 MyBatis 是一...

    mybatis图形教学大全

    7. **Executor执行器**:MyBatis提供了两种执行器,SimpleExecutor和BatchExecutor,分别对应简单的SQL执行和批处理操作。CachingExecutor则在前两者的基础上增加了缓存功能。 8. **一级缓存和二级缓存**:MyBatis...

    case-demo.zip

    项目不仅使用了MyBatis作为数据访问层的框架,还涉及到了JDBC和JPA(Java Persistence API)两种不同的数据库查询方式,为开发者提供了多种选择。 【描述】中的关键知识点如下: 1. **SpringBoot**: SpringBoot是...

Global site tag (gtag.js) - Google Analytics