`

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的集成。 首先,让我们来看一下“一对多”关系。在数据库设计中,一对多关系很常见,比如一个用户可以有多个订单。在Ibatis中,...

    ibatis demo,ibatis例子,ibatis示例

    Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责SQL映射,使得开发者能够将SQL语句与Java代码分离,从而更好地管理数据库操作。Ibatis的出现,解决了传统JDBC中手动编写SQL和结果集映射的繁琐工作,...

    Ibatis入门例子,Ibatis教程

    在本教程中,我们将通过一个简单的Ibatis入门例子,带你逐步了解并掌握这个强大的框架。 首先,我们需要在项目中引入Ibatis的依赖。通常,我们会在Maven的pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;org....

    ibatis小例子Demo

    5. **结果集映射**:通过`&lt;resultMap&gt;`标签,可以定义复杂的字段映射规则,包括一对一、一对多、多对多的关系映射,使得结果处理更便捷。 6. **事务管理**:Ibatis支持编程式和声明式的事务管理,可以根据项目需求...

    ibatis的一个小例子

    【标题】:“ibatis的一个小例子” 在Java Web开发领域,Ibatis(现已被更名为MyBatis)是一款广泛使用的持久层框架。它提供了一个灵活的SQL映射框架,使开发者可以将SQL语句与Java代码分离,从而实现数据访问层的...

    iBatis 例子(推荐学习)

    iBatis对多表查询的支持也非常出色。你可以利用`&lt;join&gt;`标签或者自定义的SQL片段来处理复杂的联查问题。此外,它还提供了动态SQL的功能,允许你在运行时根据条件动态构建SQL语句,这在处理各种复杂的业务逻辑时非常...

    ibatis多表查询

    在这个例子中,我们将探讨如何使用Ibatis进行一对多的多表查询,以`book`和`user`两个表为例。 首先,我们有两个表:`book`和`user`。`book`表存储书籍信息,包含`oid`(主键)和`name`字段。`user`表存储用户信息,...

    ibatis one to many mapping

    标题 "iBatis 一对多映射" 描述中提到的是关于 iBatis 框架下的一对多关系映射。iBatis 是一个基于 Java 的持久层框架,它允许程序员将 SQL 查询与 Java 代码相结合,以实现更灵活的数据访问。在数据库关系模型中,...

    Ibatis简单案例

    Ibatis,全称为MyBatis,是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。...通过深入学习和实践,开发者可以掌握更高级的特性,如缓存、一对一/一对多的关联映射等,提升数据访问的效率和灵活性。

    ibatis例子,解压就能用,快速理解使用ibatis

    解压后,你可以看到一个预配置好的 SqlMapConfig.xml 文件,一个或多个 Mapper XML 文件以及对应的 Mapper 接口。运行示例,观察如何通过 Ibatis 执行 SQL 查询、插入、更新和删除操作。 通过这个简单的例子,你将...

    ibatis完整实例

    - 结果映射定义了如何将查询结果映射到 Java 对象,包括一对一、一对多、自定义类型转换等。 8. **缓存(Caching)**: - Ibatis 提供了一级和二级缓存机制,可以提高数据读取速度,减少数据库访问。 9. **测试...

    Ibatis多表查询

    在这个例子中,我们将探讨如何在 Ibatis 中实现一对多的关系查询。 首先,我们创建了两个表:`book` 和 `user`。`book` 表存储书籍的信息,而 `user` 表记录作者信息,其中 `book_oid` 字段作为外键引用 `book` 表...

    ibatis例子代码

    在IT行业中,Ibatis是一个非常流行的持久层框架,它提供了SQL映射功能,将数据库...这个“ibatis例子代码”压缩包提供了一个学习和实践Ibatis的宝贵资源,通过研究和运行这些代码,你可以更好地掌握这一框架的精髓。

    ibatis2小例子(转)

    6. **结果映射**:当查询结果复杂时,可以定义结果映射来处理一对一、一对多、多对多等关系,确保数据正确地转换为Java对象。 7. **动态SQL**:iBatis允许在XML映射文件中使用if、choose、when、otherwise、where、...

    ibatis 多对多

    在Ibatis中,多对多关系通常通过`&lt;collection&gt;`标签来实现,它定义在一个实体类的映射文件中。这个标签通常包含`select`属性,用于指定一个查询子集的SQL语句。例如,如果有一个`Student`类和一个`Course`类,`...

    Ibatis.net学习例子以及使用教程书

    3. **结果映射**:使用定义结果集映射,可以将数据库查询结果自动转换为.NET对象,支持一对一、一对多、多对多等多种关系的映射。 4. **事务管理**:Ibatis.net提供了事务控制功能,可以在需要时开启或提交事务,...

    spring的mvc整合ibatis例子

    而iBatis,现在称为MyBatis,是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。 首先,我们来详细讲解Spring MVC的整合过程与iBatis的集成...

    ibatis 2 and spring 例子

    标题 "ibatis 2 and spring 例子" 指向的是一个关于如何集成并使用iBatis 2框架与Spring框架的示例教程。iBatis是一个轻量级的持久层框架,它...如果你对iBatis 2与Spring的集成感兴趣,建议查阅该博文以获取更多信息。

    最简单的iBatis入门例子

    此外,它也支持结果映射,能自动将查询结果转换为Java对象,甚至可以进行一对一、一对多、多对多等复杂关系的映射。 总之,iBatis作为一个强大的ORM框架,简化了Java应用中的数据库操作,提供了灵活的SQL控制和强大...

    最简单的iBatis入门例子.rar

    5. 映射结果集:通过标签,可以指定数据库查询结果如何映射到Java对象,包括一对一、一对多、多对一等复杂关系的映射。 在“最简单的iBatis入门例子”中,可能包含以下内容: - 一个简单的Java项目结构,包括src...

Global site tag (gtag.js) - Google Analytics