ibatis例子一对多

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "../dtd/sql-map-2.dtd">
<!--Contactbase:增删改查 
用户内码ID	User_Id	INT
姓名	Real_Name	VARCHAR(20)
全拼	PinYin_Name	VARCHAR(20)
别名	Alias_Name	VARCHAR(20)
姓别	Gender_Cd	CHAR(1)
生日	Birthdate	CHAR(8)
年龄	age	INT
民族	Nation_Cd	CHAR(2)
婚姻状况	Marital_Cd	CHAR(1)
血型	Blood_Cd	CHAR(1)
身高(CM)	Height	DECIMAL(3)
体重(公斤)	Weight	DECIMAL(5,1)
是否机主	Phone_Master_Flg	CHAR(1)
星座	Constellation	VARCHAR(20)
生肖	Twelve_Animals	VARCHAR(20)
同步内码ID	Sync_User_Id	INT
最近联系	Last_Time_Contacted	numeric(19)
联系次数	Times_Contacted	INT
头像	Head_Data	VARCHAR(100)
备注	Note	VARCHAR(100)
首字母	Last_Name_Py	VARCHAR(20)
全拼数字	Name_To_Number	VARCHAR(20)
首字母数字	Lastname_To_Number	VARCHAR(20)
首字符	Sur_Name	VARCHAR(20)
国家	Country	VARCHAR(20)
所属分组编码	groupCode	int
所属分组名	groupName	varchar(200)
-->
<sqlMap namespace="Contactbase">
<!-- 配置一对多 -->
<resultMap id="contactbaseMap" class="java.util.HashMap" groupBy="raw_contact_id">
<result property="raw_contact_id" column="RAW_CONTACT_ID"/>
<result property="realName" column="REAL_NAME"/>
<result property="surName" column="SUR_NAME"/>
<result property="LastNamePy" column="LAST_NAME_PY"/>
<result property="NamePy" column="NAME_PY"/>
<result property="LastNameToNumber" column="LASTNAME_TO_NUMBER"/>
<result property="NameToNumber" column="NAME_TO_NUMBER"/>
<result property="aliasName" column="ALIAS_NAME"/>
<result property="genderCd" column="GENDER_CD"/>
<result property="birthdate" column="BIRTHDATE"/>
<result property="age" column="AGE"/>
<result property="nationCd" column="NATION_CD"/>
<result property="country" column="COUNTRY"/>
<result property="maritalCd" column="MARITAL_CD"/>
<result property="bloodCd" column="BLOOD_CD"/>
<result property="height" column="HEIGHT"/>
<result property="weight" column="WEIGHT"/>
<result property="phoneMasterFlg" column="PHONE_MASTER_FLG"/>
<result property="constellation" column="CONSTELLATION"/>
<result property="twelveAnimals" column="TWELVE_ANIMALS"/>
<result property="lastTimeContacted" column="LAST_TIME_CONTACTED"/>
<result property="TimesContacted" column="TIMES_CONTACTED"/>
<result property="syncUserId" column="SYNC_USER_ID"/>
<result property="note" column="NOTE"/>
<result property="card" column="CARD"/>
<result property="contacts" resultMap="Contactbase.contactC"/>
</resultMap>

<!-- 备份与恢复一对多 -->
<resultMap id="contactBase" class="com.piend.rjtserver.domain.ContactBase" groupBy="raw_contact_id">
<result property="raw_contact_id" column="RAW_CONTACT_ID"/>
<result property="realName" column="REAL_NAME"/>
<result property="surName" column="SUR_NAME"/>
<result property="LastNamePy" column="LAST_NAME_PY"/>
<result property="NamePy" column="NAME_PY"/>
<result property="LastNameToNumber" column="LASTNAME_TO_NUMBER"/>
<result property="NameToNumber" column="NAME_TO_NUMBER"/>
<result property="aliasName" column="ALIAS_NAME"/>
<result property="genderCd" column="GENDER_CD"/>
<result property="birthdate" column="BIRTHDATE"/>
<result property="age" column="AGE"/>
<result property="nationCd" column="NATION_CD"/>
<result property="country" column="COUNTRY"/>
<result property="maritalCd" column="MARITAL_CD"/>
<result property="bloodCd" column="BLOOD_CD"/>
<result property="height" column="HEIGHT"/>
<result property="weight" column="WEIGHT"/>
<result property="phoneMasterFlg" column="PHONE_MASTER_FLG"/>
<result property="constellation" column="CONSTELLATION"/>
<result property="twelveAnimals" column="TWELVE_ANIMALS"/>
<result property="lastTimeContacted" column="LAST_TIME_CONTACTED"/>
<result property="TimesContacted" column="TIMES_CONTACTED"/>
<result property="syncUserId" column="SYNC_USER_ID"/>
<result property="note" column="NOTE"/>
<result property="card" column="CARD"/>
<result property="contacts" resultMap="Contactbase.contactC"/>
</resultMap>
<resultMap id="contactC" class="com.piend.rjtserver.domain.ContactC">
<result property="pkId" column="PK_ID"/>
<result property="type" column="TYPE"/>
<result property="typeSub" column="TYPE_SUB"/>
<result property="data" column="DATA"/>
<result property="lastTimeContacted" column="LAST_TIME_CONTACTED1"/>
<result property="timesContacted" column="TIMES_CONTACTED1"/>
</resultMap>

<!--Contactbase:动态查询条件 -->
<sql id="dynamicQuery">
<dynamic prepend="WHERE">
<!-- 首字母 -->
<isNotEmpty prepend=" AND " property="Name_Py">tb.NAME_PY like '$Name_Py$%'</isNotEmpty>
<!-- 关键词搜索 -->
<isNotEmpty prepend=" AND " property="searcheKey">(tb.REAL_NAME like '%$searcheKey$%' or item.DATA like '%$searcheKey$%')</isNotEmpty>
<!-- 用户id -->
<isNotEmpty prepend=" AND " property="uid">tb.U_ID=#uid#</isNotEmpty>
<!-- 是否删除 -->
<isNotEmpty prepend=" AND " property="isDelete">tb.IS_DELETE=#isDelete#</isNotEmpty>
<!-- 未分组 -->
<isEqual  prepend=" AND "  property="cgId" compareValue="-1">
tb.raw_contact_id not in (select c_id from cg_reship where u_id=#uid#)
</isEqual>
<!-- 传分组 -->
<isGreaterThan prepend=" AND "  property="cgId" compareValue="0">cg.cg_id=#cgId#</isGreaterThan>
</dynamic>
</sql>
<!--Contactbase:添加功能 -->
<insert id="insert">
INSERT INTO contactbase
(Real_Name,Name_Py,Alias_Name,Gender_Cd,Birthdate,age,Nation_Cd,Marital_Cd,Blood_Cd,Height,
Weight,Phone_Master_Flg,Constellation,Twelve_Animals,Sync_User_Id,Last_Time_Contacted,Times_Contacted,Head_Data,Note,Last_Name_Py,
Name_To_Number,Lastname_To_Number,Sur_Name,Country,groupCode,groupName,bKey,uid)
VALUES(#Real_Name#,#Name_Py#,#Alias_Name#,#Gender_Cd#,#Birthdate#,#age#,#Nation_Cd#,#Marital_Cd#,#Blood_Cd#,#Height#,
#Weight#,#Phone_Master_Flg#,#Constellation#,#Twelve_Animals#,#Sync_User_Id#,#Last_Time_Contacted#,#Times_Contacted#,#Head_Data#,#Note#,#Last_Name_Py#,
#Name_To_Number#,#Lastname_To_Number#,#Sur_Name#,#Country#,#groupCode#,#groupName#,#bKey#,#uid#)
</insert>
<!--Contactbase: 删除功能 -->
<delete id="delete">
DELETE FROM contactbase WHERE BKEY in($fkeyId$) and U_ID=#uid#
</delete>
<!--Contactbase:修改功能 -->
<update id="update">
UPDATE contactbase
<dynamic prepend="SET">
<isNotEmpty prepend="," property="Real_Name">Real_Name=#Real_Name#</isNotEmpty>
<isNotEmpty prepend="," property="Name_Py">Name_Py=#Name_Py#</isNotEmpty>
<isNotEmpty prepend="," property="Alias_Name">Alias_Name=#Alias_Name#</isNotEmpty>
<isNotEmpty prepend="," property="Gender_Cd">Gender_Cd=#Gender_Cd#</isNotEmpty>
<isNotEmpty prepend="," property="Birthdate">Birthdate=#Birthdate#</isNotEmpty>
<isNotEmpty prepend="," property="age">age=#age#</isNotEmpty>
<isNotEmpty prepend="," property="Nation_Cd">Nation_Cd=#Nation_Cd#</isNotEmpty>
<isNotEmpty prepend="," property="Marital_Cd">Marital_Cd=#Marital_Cd#</isNotEmpty>
<isNotEmpty prepend="," property="Blood_Cd">Blood_Cd=#Blood_Cd#</isNotEmpty>
<isNotEmpty prepend="," property="Height">Height=#Height#</isNotEmpty>
<isNotEmpty prepend="," property="Weight">Weight=#Weight#</isNotEmpty>
<isNotEmpty prepend="," property="Phone_Master_Flg">Phone_Master_Flg=#Phone_Master_Flg#</isNotEmpty>
<isNotEmpty prepend="," property="Constellation">Constellation=#Constellation#</isNotEmpty>
<isNotEmpty prepend="," property="Twelve_Animals">Twelve_Animals=#Twelve_Animals#</isNotEmpty>
<isNotEmpty prepend="," property="Sync_User_Id">Sync_User_Id=#Sync_User_Id#</isNotEmpty>
<isNotEmpty prepend="," property="Last_Time_Contacted">Last_Time_Contacted=#Last_Time_Contacted#</isNotEmpty>
<isNotEmpty prepend="," property="Times_Contacted">Times_Contacted=#Times_Contacted#</isNotEmpty>
<isNotEmpty prepend="," property="Head_Data">Head_Data=#Head_Data#</isNotEmpty>
<isNotEmpty prepend="," property="Note">Note=#Note#</isNotEmpty>
<isNotEmpty prepend="," property="Last_Name_Py">Last_Name_Py=#Last_Name_Py#</isNotEmpty>
<isNotEmpty prepend="," property="Name_To_Number">Name_To_Number=#Name_To_Number#</isNotEmpty>
<isNotEmpty prepend="," property="Lastname_To_Number">Lastname_To_Number=#Lastname_To_Number#</isNotEmpty>
<isNotEmpty prepend="," property="Sur_Name">Sur_Name=#Sur_Name#</isNotEmpty>
<isNotEmpty prepend="," property="Country">Country=#Country#</isNotEmpty>
<isNotEmpty prepend="," property="groupName">groupName=#groupName#</isNotEmpty>
<!-- 放入回收站 -->
<isNotEmpty prepend="," property="isDelete">IS_DELETE=#isDelete#</isNotEmpty>
</dynamic>
WHERE U_ID=#uid# and BKEY in($bkey$)
</update>
<!--Contactbase:通过主键查某一条记录 -->
<select id="findById" resultMap="contactbaseMap">
select ct.raw_contact_id,Real_Name,Sur_Name,Last_Name_Py,Name_Py,Lastname_To_Number,Name_To_Number,Alias_Name,Gender_Cd,Birthdate,Age,Nation_Cd,Country,
Marital_Cd,Blood_Cd,Height,Weight,Phone_Master_Flg,Constellation,Twelve_Animals,ct.Last_Time_Contacted,ct.Times_Contacted,Sync_User_Id,Note,Card,
PK_ID,Type,Type_Sub,Data,cc.Last_Time_Contacted as Last_Time_Contacted1,cc.Times_Contacted as Times_Contacted1
from contactbase ct LEFT JOIN contactc cc on (ct.raw_contact_id=cc.raw_contact_id and ct.u_id=cc.u_id)
where ct.u_id=#uid# and ct.raw_contact_id=#raw_contact_id#
</select>
<!--Contactbase:传sql字符串查询 -->
<select id="querySql" resultClass="hashmap">
$querySql$
</select>
<!--Contactbase:获取分页总条数 -->
<select  id="queryForListCount" resultClass="java.lang.Integer">
SELECT count(distinct tb.raw_contact_id) FROM contactbase tb 
LEFT JOIN contactc item on (tb.raw_contact_id=item.raw_contact_id and tb.u_id=item.u_id)
<!--传分组-->
<isGreaterThan property="cgId" compareValue="0">
LEFT JOIN cg_reship cg on (cg.c_id=tb.raw_contact_id and tb.u_id=cg.u_id)
</isGreaterThan>
<!-- 全部-->
<isEqual property="cgId" compareValue="-2">
LEFT JOIN cg_reship cg on (cg.c_id=tb.raw_contact_id and tb.u_id=cg.u_id)
</isEqual>

<include refid="dynamicQuery" />
</select>

<!--Contactbase:获取分页结果集 -->
<select id="queryForList" resultClass="hashmap">
SELECT * FROM ( SELECT TEMP.*, ROWNUM RN FROM (
<!-- sql部分开始 -->
SELECT distinct tb.* FROM contactbase tb
LEFT JOIN contactc item on (tb.raw_contact_id=item.raw_contact_id and tb.u_id=item.u_id)
<!--传分组-->
<isGreaterThan property="cgId" compareValue="0">
LEFT JOIN cg_reship cg on (cg.c_id=tb.raw_contact_id and tb.u_id=cg.u_id)
</isGreaterThan>
<!-- 全部-->
<isEqual property="cgId" compareValue="-2">
LEFT JOIN cg_reship cg on (cg.c_id=tb.raw_contact_id and tb.u_id=cg.u_id)
</isEqual>

<include refid="dynamicQuery" />
<isNotEmpty prepend=" ORDER BY " property="oderByKey">$oderByKey$</isNotEmpty>
<!-- sql结束 -->
) TEMP WHERE  #endNum#>= ROWNUM) WHERE RN >= #startNum#
</select>

<!-- 分页外键或者一对多外键 -->
<select id="findByFkId" resultClass="hashmap">
SELECT c.pk_id,c.type,c.type_sub,c.data,c.dataremarks,code.data typename,c.raw_contact_id 
FROM contactc c left join contactcsubcode code 
on (c.type=code.type and c.type_sub=code.type_sub)
WHERE c.raw_contact_id in ($fkid$) and c.u_id=#uid#
</select>

<!-- 分页外键或者一对多外键 -->
<select id="findByShipFkId" resultClass="hashmap">
SELECT cr.c_id,cg.groupname,cr.cg_id
FROM cg_reship cr left join contacts_groups cg on (cr.cg_id=cg.pk_id and cr.u_id=cg.u_id)
WHERE cr.c_id in ($fkid$) and cr.u_id=#uid#
</select>

<!-- 批量移至分组 -->
<update id="updateGroups">
 UPDATE contactbase SET groupCode=#groupCode#,groupName=#groupName# WHERE uid=#uid# and User_Id in($id$)
</update>

<select id="bakUpDownQuery"  resultMap="contactBase">
select ct.raw_contact_id,Real_Name,Sur_Name,Last_Name_Py,Name_Py,Lastname_To_Number,Name_To_Number,Alias_Name,Gender_Cd,Birthdate,Age,Nation_Cd,Country,
Marital_Cd,Blood_Cd,Height,Weight,Phone_Master_Flg,Constellation,Twelve_Animals,ct.Last_Time_Contacted,ct.Times_Contacted,Sync_User_Id,Note,Card,
PK_ID,Type,Type_Sub,Data,cc.Last_Time_Contacted as Last_Time_Contacted1,cc.Times_Contacted as Times_Contacted1
from contactbase ct LEFT JOIN contactc cc on (ct.raw_contact_id=cc.raw_contact_id and ct.u_id=cc.u_id) where ct.u_id=#uid# and ct.is_delete=1
</select>
<!-- 恢复查询 
<select id="bakUpDownQuery"  resultMap="contactBase">
select ct.bKey,Real_Name,Sur_Name,Last_Name_Py,Name_Py,Lastname_To_Number,Name_To_Number,Alias_Name,Gender_Cd,Birthdate,Age,Nation_Cd,Country,
Marital_Cd,Blood_Cd,Height,Weight,Phone_Master_Flg,Constellation,Twelve_Animals,ct.Last_Time_Contacted,ct.Times_Contacted,Sync_User_Id,Note,Card,
uniquekey,Type,Type_Sub,Data,cc.Last_Time_Contacted as Last_Time_Contacted1,cc.Times_Contacted as Times_Contacted1
from contactbase ct LEFT JOIN contactc cc on (ct.bKey=cc.bKey and ct.u_id=cc.u_id) where ct.u_id=#uid#
</select>
-->
<!-- 查询业务主键 -->
<select id="selectContactbaseMaxID" resultClass="hashmap">
select (select max(raw_contact_id)  from contactbase where u_id=#uid#) as ZID,
(select max(pk_id) from contactc where u_id=#uid#) as CID from dual
</select>


<!-- 获取用户的联系人 -->
<select id="queryContactbaseCount" resultClass="java.lang.Integer">
select count(*) from contactbase where u_id=#uid# and IS_DELETE=1
</select>
</sqlMap>

猜你喜欢

转载自tangguolong99.iteye.com/blog/2065542
今日推荐