IBatis.Net学习笔记六--再谈查询

转载 2007年09月19日 09:40:00
IBatis.Net学习笔记五--常用的查询方式 中我提到了一些IBatis.Net中的查询,特别是配置文件的写法。

后来通过大家的讨论,特别是Anders Cui 的提醒,又发现了其他的多表查询的方式。
在上一篇文章中我提到了三种方式,都是各有利弊:
第一种方式当数据关联很多的情况下,实体类会很复杂;
第二种方式比较灵活,但是不太符合OO的思想(不过,可以适当使用);
第三种方式最主要的问题就是性能不太理想,配置比较麻烦。

下面是第四种多表查询的方式,相对第二种多了一点配置,但是其他方面都很好
(当然可能还有其他更好地解决方法,希望能多提宝贵意见-_-)
例子还是一样:两张表Account和Degree,使用Account_ID关联,需要查出两张表的所有纪录

首先:修改实体类,增加以下属性:
        private Degree _degree;
        
public Degree Degree
        
{
            
get
            
{
                
return _degree;
            }

            
set
            
{
                _degree 
= value;
            }

        }
(和第三种方法一样)

然后:修改配置文件,这也是最重要的地方(PS:IBatis.Net中的配置文件真的很强)
resultMaps节加入:
    <resultMap id="com2result"  class="Account" >
      
<result property="Id"           column="Account_ID"/>
      
<result property="FirstName"    column="Account_FirstName"/>
      
<result property="LastName"     column="Account_LastName"/>
      
<result property="EmailAddress" column="Account_Email" nullValue="no_email@provided.com"/>
      
<result property="Degree"  resultMapping="Account.Degree-result"/>
    
</resultMap>

    
<resultMap id="Degree-result"  class="Degree">
      
<result property="Id"           column="Account_ID"/>
      
<result property="DegreeName"    column="DegreeName"/>
    
</resultMap>
这里最主要的就是使用了resultMapping属性,resultMapping="Account.Degree-result",其中Account是当前配置文件的namespace:
<sqlMap namespace="Account"  ......


statements节加入:
    <select id="GetCom2Tables"
     resultMap
="com2result">
      select Accounts.
*, Degree.*
      from Accounts,Degree
      where Accounts.Account_ID 
= Degree.Account_ID
    
</select>
这样就可以随心所欲的写自己需要的sql,性能也很好,不会出现第三种方法中的1+n条的查询语句了。 

相关文章推荐

Java分布式应用学习笔记02再谈JVM

  • 2012年05月30日 14:25
  • 166KB
  • 下载

Java分布式应用学习笔记02再谈JVM

  • 2011年09月28日 17:17
  • 323KB
  • 下载

Python学习笔记(六)再谈Python模块

Python程序包含多个模块文件,一个主体、顶层文件实现主要控制流程、调用组件和工具,其他模块文件则提供组件和工具,python自带了许多实用的模块称为标准链接库。模块是python中最高级别的程序组...

ASP.Net MVC开发基础学习笔记(7):数据查询页面

 前言 前面铺垫了那么多,今天我们就用MVC5 + EF6 + Bootstrap3来正式创建一个基本查询页面。 为什么从查询页面开始?嘿嘿,因为小弟的.Net生涯就是从查询页面开始的,记得...

ASP.NET学习笔记---- 数据查询与展示GridView

数据查询与展示GridView   GridView连接数据源 编码指定数据源 this.GridView1.DataSource = 返回值为集合的方法; this.GridView1...
  • tearsmo
  • tearsmo
  • 2011年11月22日 10:57
  • 1281

WMI007-WMI学习笔记(七)——Queries(查询(.NET))

原文地址链接:http://msdn.microsoft.com/en-us/library/aa720447(v=vs.71).aspx Queries .NET Framewo...

Android学习笔记(三四):再谈Intent(上)-一些知识

在Android学习笔记(七):多个Activity和Intent中,我们先在学会了如何使用intent在代码中唤起activity。此处作深一步地学习。 什么是Intent intent是对一个...

C++ Primer 学习笔记_32_STL实践与分析(6) --再谈string类型(下)

 STL实践与分析 --再谈string类型(下) 四、string类型的查找操作     string类型提供了6种查找函数,每种函数以不同形式的find命名。这些操...

C++ Primer 学习笔记_31_STL实践与分析(5) --再谈string类型(上)

 STL实践与分析 --再谈string类型(上) 引: 复习3.2节介绍的string类型: 曾经介绍过的string操作 ...

unity3D学习笔记之四:再谈全局光照

全局照明(GI)是一种系统,用于模拟光如何从表面反射到其他表面(间接光),而不仅限于直接从光源(直接光)击中表面的光。 建模间接照明允许使虚拟世界看起来更逼真和连接的效果,因为对象影响对方的外观。 一...
  • yhhwatl
  • yhhwatl
  • 2017年06月07日 18:07
  • 320
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IBatis.Net学习笔记六--再谈查询
举报原因:
原因补充:

(最多只允许输入30个字)