博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IBatis.Net学习笔记(四)--再谈查询
阅读量:5275 次
发布时间:2019-06-14

本文共 1484 字,大约阅读时间需要 4 分钟。

在上一篇文章中我提到了三种方式,都是各有利弊:
第一种方式当数据关联很多的情况下,实体类会很复杂;
第二种方式比较灵活,但是不太符合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条的查询语句了。

转载于:https://www.cnblogs.com/gooddasenlin/archive/2011/04/06/2007143.html

你可能感兴趣的文章
vagrant 同时设置多个同步目录
查看>>
python接口自动化28-requests-html爬虫框架
查看>>
生成随机数的模板
查看>>
Mysql 数据库操作
查看>>
转:linux终端常用快捷键
查看>>
UVa 11059 最大乘积
查看>>
数组分割问题求两个子数组的和差值的小
查看>>
composer 报 zlib_decode(): data error
查看>>
hdu 3938 并查集
查看>>
《深入分析Java Web技术内幕》读书笔记之JVM内存管理
查看>>
python之GIL release (I/O open(file) socket time.sleep)
查看>>
软件开发与模型
查看>>
161017、SQL必备知识点
查看>>
kill新号专题
查看>>
MVC学习系列——Model验证扩展
查看>>
mysqladmin 修改和 初始化密码
查看>>
字符串
查看>>
vue2.x directive - 限制input只能输入正整数
查看>>
实现MyLinkedList类深入理解LinkedList
查看>>
自定义返回模型
查看>>