`

ibatis表关联查询小记

    博客分类:
  • Tips
阅读更多
<sqlMap namespace="User">

	<typeAlias alias="User" type="com.zjapl.smsapp.domain.entity.User" />

	<resultMap class="User" id="UserResult">
		<result property="id" column="ID" jdbcType="DECIMAL" />
		<result property="loginId" column="LOGIN_ID" jdbcType="VARCHAR" />
		<result property="name" column="NAME" jdbcType="VARCHAR" />
		<result property="password" column="PASSWORD" jdbcType="VARCHAR" />
		<result property="gender" column="GENDER" jdbcType="DECIMAL" />
		<result property="phone" column="PHONE" jdbcType="VARCHAR" />
		<result property="status" column="STATUS" jdbcType="DECIMAL" />
		<result property="roleId" column="ROLE_ID" jdbcType="DECIMAL" />
		<result property="skin" column="SKIN" jdbcType="VARCHAR" />
		<result property="createDate" column="CREATE_DATE" jdbcType="TIMESTAMP" />
		<result property="updateDate" column="UPDATE_DATE" jdbcType="TIMESTAMP" />
		<result property="remark" column="REMARK" jdbcType="VARCHAR" />
	</resultMap>

	<resultMap class="User" id="UserWithRoleNameResult" extends="UserResult">
		<result property="roleName" column="ROLE_ID" select="Role.selectNameById"/>
	</resultMap>
	
	<!-- 判断条件:状态为(0为正常,1为不可用)以及模糊匹配用户名称 -->
	<sql id="whereByParam">
	<![CDATA[
		WHERE K.STATUS IN(0,1) AND K.ID <> 1
		]]>
		<isNotEmpty prepend="AND" property="param.searchloginId">
			<![CDATA[
			LOGIN_ID like '%$param.searchloginId$%' 
			]]>
		</isNotEmpty>
		<isNotEmpty prepend="AND" property="param.searName">
			<![CDATA[
				NAME LIKE '%$param.searName$%'
			]]>
		</isNotEmpty>
		<isNotEmpty prepend="AND" property="param.searRoleName">
			<![CDATA[
//---			ROLE_ID in (select id from mst_role where name LIKE '%$param.searRoleName$%')
			]]>
		</isNotEmpty>
	</sql>
	
	<!-- 用户列表 -->
	<select id="selectByParam" resultMap="UserWithRoleNameResult"
		parameterClass="DynamicQueryParam">
		<![CDATA[
			SELECT K.* FROM MST_USER K
		]]>
		<include refid="whereByParam" />
		<![CDATA[ ORDER BY K.UPDATE_DATE ASC ]]>
	</select>
</sqlMap>

---------------多表查询时

<!-- 			<tr> -->
<!-- 				<td align="right">角 色:</td> -->
<!-- 				<td><input name="user.searRoleName" type="text" class="search_text" value="${(user.searRoleName)!''}"/> -->
<!-- 				</td> -->
<!-- 			</tr> -->
		   <tr>
		    <td align="right">角色:</td>
		    <td>
		    	<select name="user.searRoleName"  class="search_text" >
		       		<option value="0" selected="selected">请选择角色</option>
		       		<#list roleList as role>
						<option value="${role.name}">${role.name}</option>
					</#list>
		        </select>
			</td>
		  </tr>

-----------------页面搜索框转换为下接列表框。

SQL LEFT JOIN 关键字
LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。
LEFT JOIN 关键字语法
SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2 
ON table_name1.column_name=table_name2.column_name

注释:在某些数据库中, LEFT JOIN 称为 LEFT OUTER JOIN。
分享到:
评论

相关推荐

    ibatis多表查询

    在Ibatis中,多表查询是一项重要的功能,它允许我们处理复杂的数据库操作,例如一对多、多对一或一对一的关系。在这个例子中,我们将探讨如何使用Ibatis进行一对多的多表查询,以`book`和`user`两个表为例。 首先,...

    Ibatis多表查询

    在多表查询中,Ibatis 提供了多种方式来处理复杂的关联查询,包括一对一、一对多、多对一和多对多等关系。在这个例子中,我们将探讨如何在 Ibatis 中实现一对多的关系查询。 首先,我们创建了两个表:`book` 和 `...

    主子表查询ibatis

    本文将深入探讨如何在iBATIS中进行主子表查询,以及涉及到的相关技术如一对多关系、日志管理库log4j等。 首先,主子表查询是数据库设计中常见的场景,通常涉及到一个“父”表(主表)和一个或多个“子”表(从表)...

    ibatis多表查询过程

    当我们需要进行多表查询时,iBatis提供了一种高效且易于管理的方式。本文将深入探讨iBatis在处理多表查询时的具体步骤和技巧。 ### 1. iBatis简介 iBatis 是一个基于Java的持久层框架,它简化了数据库访问,并避免...

    Ibatis查询语句里,可以使用多表查询

    多表查询通常涉及到 JOIN 操作,例如内连接(INNER JOIN)、左连接(LEFT JOIN)等,这些操作可以帮助我们从多个相关联的表中获取所需的数据。 #### 三、多表查询示例分析 根据提供的部分代码,我们可以看到一个多...

    ibatis配置多表关联(一对一、一对多、多对多

    ibatis配置多表关联(一对一、一对多、多对多

    操作数据库 iBATIS查询

    ### 操作数据库iBATIS查询详解 #### 一、iBATIS中的LIKE查询技巧 iBATIS是一款优秀的Java持久层框架,它简化了基于SQL的程序编写,避免了程序员手动处理结果集和手工编写SQL语句。在进行数据库查询时,LIKE查询是...

    Ibatis的简单例子(增删改查,联合查询等)

    在XML映射文件中,你可以使用标签或在标签内直接编写JOIN语句,以实现多个表的数据联合查询。记得在Mapper接口中定义对应的方法。 6. **Service层和DAO层**: 在实际项目中,我们通常会创建Service层来封装业务...

    ibatis做连接查询 .doc

    这里使用了LEFT JOIN来连接`t_depart`和`t_class`表,获取所有部门及其关联的班级信息。 4. **Mapper接口方法**: 在`DepartMapper`接口中,对应上述XML中的`selectDepartWithClasses`,定义一个方法,例如: `...

    ibatis_动态查询条件

    iBatis 动态查询条件详解 iBatis 是一个基于 Java 的持久层框架,它提供了动态查询条件的功能,可以根据不同的条件生成不同的 SQL 语句。在 iBatis 中,动态查询条件是通过 `&lt;dynamic&gt;` 元素来实现的,该元素可以...

    ibatis的动态查询

    ### ibatis的动态查询知识点详解 #### 一、模糊查询 **知识点1:** 在进行模糊查询时,ibatis支持两种不同的语法标记:`#` 和 `$`。 1. **使用 `$value$` 进行模糊查询:** - 在进行模糊查询时,使用 `$value$` ...

    ibatis 单表查询 一对多查询

    Source Database : ibatis_db Target Server Type : MYSQL Target Server Version : 50022 File Encoding : 65001 Date: 2013-05-02 22:49:28 */ SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- --...

    Ibatis复杂查询语句.doc

    在Ibatis中,复杂查询通常涉及到多个表的联接、条件动态拼接、子查询以及各种数据类型的处理。文档"Ibatis复杂查询语句.doc"所展示的查询语句就是一个很好的例子,展示了Ibatis如何处理复杂的数据库操作。接下来,...

    ibatis下oracle树查询

    例如,假设我们有一个部门表DEPARTMENTS,包含ID(主键)、PARENT_ID(父ID)和NAME(部门名称)字段,可以使用以下SQL语句进行树形查询: ```sql SELECT level, connect_by_root id AS root_id, id, name FROM ...

    ibatis and和or联合查询 .doc

    ### ibatis and和or联合查询知识点 #### 一、ibatis简介 ibatis是一个支持普通SQL查询、存储过程以及高级映射的优秀开源数据访问框架。ibatis消除了几乎所有的JDBC对象操作,提供了一个简单的基本API,它通过XML或...

    ibatis教程_查询指定id的单个对象

    本教程聚焦于如何使用Ibatis查询指定ID的单个对象,这对于日常的数据检索工作尤为重要。 首先,理解Ibatis的基本架构。Ibatis不是一个完整的ORM(对象关系映射)框架,而是介于SQL和Java之间的桥梁,允许开发者编写...

    ibatis 文档查询

    【标题】:深入理解iBATIS的查询机制 【描述】:本文将详细解析iBATIS框架中的查询功能,包括处理复杂对象关系、XML映射和数据集操作,旨在帮助开发者充分利用iBATIS进行高效数据库操作。 【标签】:iBATIS、查询...

    使用ibatis操作两个有关系的表

    在Ibatis中,我们可以通过`&lt;resultMap&gt;`标签定义映射关系,然后在SQL查询中使用`&lt;association&gt;`标签来获取关联的数据。 2. **一对多映射**:如果一个表的数据对应另一个表的多条记录,例如订单表和订单详情表,一个...

    iBatis条件查询

    在本资源中,"iBatis条件查询"着重展示了如何根据业务需求定制SQL语句进行数据检索,尤其在不涉及复杂关联查询的情况下,iBatis可以提供高效且简单的解决方案。 首先,iBatis的核心概念是SQL Map,它是一个XML配置...

Global site tag (gtag.js) - Google Analytics