<?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中,...
Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责SQL映射,使得开发者能够将SQL语句与Java代码分离,从而更好地管理数据库操作。Ibatis的出现,解决了传统JDBC中手动编写SQL和结果集映射的繁琐工作,...
在本教程中,我们将通过一个简单的Ibatis入门例子,带你逐步了解并掌握这个强大的框架。 首先,我们需要在项目中引入Ibatis的依赖。通常,我们会在Maven的pom.xml文件中添加以下依赖: ```xml <groupId>org....
5. **结果集映射**:通过`<resultMap>`标签,可以定义复杂的字段映射规则,包括一对一、一对多、多对多的关系映射,使得结果处理更便捷。 6. **事务管理**:Ibatis支持编程式和声明式的事务管理,可以根据项目需求...
【标题】:“ibatis的一个小例子” 在Java Web开发领域,Ibatis(现已被更名为MyBatis)是一款广泛使用的持久层框架。它提供了一个灵活的SQL映射框架,使开发者可以将SQL语句与Java代码分离,从而实现数据访问层的...
iBatis对多表查询的支持也非常出色。你可以利用`<join>`标签或者自定义的SQL片段来处理复杂的联查问题。此外,它还提供了动态SQL的功能,允许你在运行时根据条件动态构建SQL语句,这在处理各种复杂的业务逻辑时非常...
在这个例子中,我们将探讨如何使用Ibatis进行一对多的多表查询,以`book`和`user`两个表为例。 首先,我们有两个表:`book`和`user`。`book`表存储书籍信息,包含`oid`(主键)和`name`字段。`user`表存储用户信息,...
标题 "iBatis 一对多映射" 描述中提到的是关于 iBatis 框架下的一对多关系映射。iBatis 是一个基于 Java 的持久层框架,它允许程序员将 SQL 查询与 Java 代码相结合,以实现更灵活的数据访问。在数据库关系模型中,...
Ibatis,全称为MyBatis,是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。...通过深入学习和实践,开发者可以掌握更高级的特性,如缓存、一对一/一对多的关联映射等,提升数据访问的效率和灵活性。
解压后,你可以看到一个预配置好的 SqlMapConfig.xml 文件,一个或多个 Mapper XML 文件以及对应的 Mapper 接口。运行示例,观察如何通过 Ibatis 执行 SQL 查询、插入、更新和删除操作。 通过这个简单的例子,你将...
- 结果映射定义了如何将查询结果映射到 Java 对象,包括一对一、一对多、自定义类型转换等。 8. **缓存(Caching)**: - Ibatis 提供了一级和二级缓存机制,可以提高数据读取速度,减少数据库访问。 9. **测试...
在这个例子中,我们将探讨如何在 Ibatis 中实现一对多的关系查询。 首先,我们创建了两个表:`book` 和 `user`。`book` 表存储书籍的信息,而 `user` 表记录作者信息,其中 `book_oid` 字段作为外键引用 `book` 表...
在IT行业中,Ibatis是一个非常流行的持久层框架,它提供了SQL映射功能,将数据库...这个“ibatis例子代码”压缩包提供了一个学习和实践Ibatis的宝贵资源,通过研究和运行这些代码,你可以更好地掌握这一框架的精髓。
6. **结果映射**:当查询结果复杂时,可以定义结果映射来处理一对一、一对多、多对多等关系,确保数据正确地转换为Java对象。 7. **动态SQL**:iBatis允许在XML映射文件中使用if、choose、when、otherwise、where、...
在Ibatis中,多对多关系通常通过`<collection>`标签来实现,它定义在一个实体类的映射文件中。这个标签通常包含`select`属性,用于指定一个查询子集的SQL语句。例如,如果有一个`Student`类和一个`Course`类,`...
3. **结果映射**:使用定义结果集映射,可以将数据库查询结果自动转换为.NET对象,支持一对一、一对多、多对多等多种关系的映射。 4. **事务管理**:Ibatis.net提供了事务控制功能,可以在需要时开启或提交事务,...
而iBatis,现在称为MyBatis,是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。 首先,我们来详细讲解Spring MVC的整合过程与iBatis的集成...
标题 "ibatis 2 and spring 例子" 指向的是一个关于如何集成并使用iBatis 2框架与Spring框架的示例教程。iBatis是一个轻量级的持久层框架,它...如果你对iBatis 2与Spring的集成感兴趣,建议查阅该博文以获取更多信息。
此外,它也支持结果映射,能自动将查询结果转换为Java对象,甚至可以进行一对一、一对多、多对多等复杂关系的映射。 总之,iBatis作为一个强大的ORM框架,简化了Java应用中的数据库操作,提供了灵活的SQL控制和强大...
5. 映射结果集:通过标签,可以指定数据库查询结果如何映射到Java对象,包括一对一、一对多、多对一等复杂关系的映射。 在“最简单的iBatis入门例子”中,可能包含以下内容: - 一个简单的Java项目结构,包括src...