`

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>

 

分享到:
评论

相关推荐

    ibatis 完美例子 一对多 批处理 事务 和 spring struts2集成

    ibatis 完美例子 一对多 批处理 事务 和 spring struts2集成 ,一朵多 插入1万条数据,不到2秒,备注不包含类库

    iBatis2学习笔记

    6.iBatis2学习笔记:一对多映射(双向).doc 7.iBatis2学习笔记:多对多映射(双向) .doc 8.iBatis2学习笔记:总结与思考.doc 9.iBatis2实体状态图解.doc 10.iBatis insert操作陷阱.doc 每章都有小例子。 呵呵,希望...

    ibatis解决多对一n+1问题(更新上传例子(mybatis)代码)

    NULL 博文链接:https://liu400liu.iteye.com/blog/1187995

    Ibatis学习指南,适合于初学者参考

    看了Ibatis很多的书,说了很多很多,过于复杂,本人先把Ibatis的增删改查所有的例子总结了一下,写了一个简单易懂的例子,对初学者入门学习有很大的帮助.简单易懂,下载解压后即可运行.

    mybatis3_spring3整合

    该例子采用mybatis3.0.2 和spring3.0.4进行整合,其中讲到怎么配置mybatis一对一关系,一对多关系。

    Appfuse教程Appfuse开发.pdf

    Appfuse是由Matt Raible开发的一个指导性的入门级J2EE框架,它对如何集成流行的Spring、Hibernate、iBatis、struts、Xdoclet、junit 等基础框架给出了示范。提供了对Taperstry和JSF的支持。  AppFuse是一个集成了...

    springmybatis

    查询出列表,也就是返回list, 在我们这个例子中也就是 List&lt;User&gt; , 这种方式返回数据,需要在User.xml 里面配置返回的类型 resultMap, 注意不是 resultType, 而这个resultMap 所对应的应该是我们自己配置的 ...

    Spring-Reference_zh_CN(Spring中文参考手册)

    9.9.1. 对一个特定的 DataSource 使用错误的事务管理器 9.10. 更多的资源 10. DAO支持 10.1. 简介 10.2. 一致的异常层次 10.3. 一致的DAO支持抽象类 11. 使用JDBC进行数据访问 11.1. 简介 11.1.1. Spring JDBC包结构...

    spring chm文档

    9.9.1. 对一个特定的 DataSource 使用错误的事务管理器 9.10. 更多的资源 10. DAO支持 10.1. 简介 10.2. 一致的异常层次 10.3. 一致的DAO支持抽象类 11. 使用JDBC进行数据访问 11.1. 简介 11.1.1. Spring ...

    Spring 2.0 开发参考手册

    9.9.1. 对一个特定的 DataSource 使用错误的事务管理器 9.10. 更多的资源 10. DAO支持 10.1. 简介 10.2. 一致的异常层次 10.3. 一致的DAO支持抽象类 11. 使用JDBC进行数据访问 11.1. 简介 11.1.1. Spring ...

    Spring中文帮助文档

    9.9.1. 对一个特定的 DataSource 使用了错误的事务管理器 9.10. 更多的资源 10. DAO支持 10.1. 简介 10.2. 一致的异常层次 10.3. 一致的DAO支持抽象类 11. 使用JDBC进行数据访问 11.1. 简介 11.1.1. 选择一...

    Spring API

    9.9.1. 对一个特定的 DataSource 使用了错误的事务管理器 9.10. 更多的资源 10. DAO支持 10.1. 简介 10.2. 一致的异常层次 10.3. 一致的DAO支持抽象类 11. 使用JDBC进行数据访问 11.1. 简介 11.1.1. 选择一种...

    阿里巴巴编码规范 基础技能认证 考题分析(考题+答案).docx

    B .iBATIS自带的queryForList(String statementName,int start,int size)分页接口有性能隐患,不允许使用。 C .定义明确的sql查询语句,通过传入参数start和size来实现分页逻辑。 D .可使用存储过程写分页逻辑...

    JdbcTemplateTool.zip

    可以直接把一个PO类存到数据库通过PO类和一个id可以获取到该对象通过PO类可以直接update数据库记录不需要实现 BatchPreparedStatementSetter, 就可以批量update通过一个对PO对象删除对应的数据库记录依然可以使用...

Global site tag (gtag.js) - Google Analytics