`
junjie314
  • 浏览: 59321 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
文章分类
社区版块
存档分类
最新评论

iBatis小结

阅读更多
<?xml version="1.0" encoding="UTF-8" ?>   
<!DOCTYPE sqlMap         
    PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"         
    "http://ibatis.apache.org/dtd/sql-map-2.dtd">   
<sqlMap namespace="Account">   
  <typeAlias alias="Account" type="test.Account"/>   
  <!--列表查询,返回Account Object的List-->      
  <resultMap id="AccountResult" class="Account">   
    <result property="id" column="ID"/>   
    <result property="firstName" column="FIRST_NAME"/>   
    <result property="lastName" column="LAST_NAME"/>   
    <result property="emailAddress" column="EMAIL"/>   
  </resultMap>     
  <select id="selectAllAccounts" resultMap="AccountResult">   
    select * from ACCOUNT   
  </select>   
     
  <!--列表查询,返回HashMap的List -->    
  <!--resultMap无需再通过JDBC ResultSetMetaData 来动态获取字段信息,性能有提高-->   
  
  <resultMap id="mapResult" class="java.util.HashMap">   
    <result property="roleid" column="ROLEID"/>   
    <result property="rolename" column="ROLENAME"/>   
    <result property="id" column="ID"/>   
    <result property="firstName" column="FIRST_NAME"/>   
    <result property="lastName" column="LAST_NAME"/>   
    <result property="emailAddress" column="EMAIL"/>   
    <result property="dt" column="DT"/>   
  </resultMap>   
  <select id="selectAllAccountsWithMap" resultMap="mapResult">   
        select B.ROLEID, B.ROLENAME, A.ID, A.FIRST_NAME,A.LAST_NAME,A.EMAIL,A.DT   
        from ACCOUNT A left outer join ROLE B   on A.ROLEID = B.ROLEID   
        ORDER BY A.ID DESC   
  </select>   
     
<!--动态构造查询条件-->   
<select id="getUsers" parameterClass="user" resultMap="get-user-result">   
    Select id,name,sex from t_user   
    <dynamic prepend="WHERE">   
        <isNotEmpty prepend="AND" property="name">   
            (name like #name#)   
        </isNotEmpty>   
        <isNotEmpty prepend="AND" property="address">   
            (address like #address#)   
        </isNotEmpty>   
    </dynamic>   
</select>   
<isNotEmpty prepend="AND" property="name">   
    ( name=#name#   
        <isNotEmpty prepend="AND" property="address">   
            address=#address#   
        </isNotEmpty>   
    )   
</isNotEmpty>   
<select id="dynamicGetAccountList" resultMap="account-result" >   
    select * from ACCOUNT   
    <dynamic prepend="WHERE">   
        <isNotNull prepend="AND" property="firstName" open=”(“ close=”)”>   
            ACC_FIRST_NAME = #firstName#   
            <isNotNull prepend="OR" property="lastName">   
                ACC_LAST_NAME = #lastName#   
            </isNotNull>   
        </isNotNull>   
        <isNotNull prepend="AND" property="emailAddress">   
            ACC_EMAIL like #emailAddress#   
        </isNotNull>   
        <isGreaterThan prepend="AND" property="id" compareValue="0">   
            ACC_ID = #id#   
        </isGreaterThan>   
    </dynamic>   
    order by ACC_LAST_NAME   
</select>   
  
<isParameterPresent> <isNotParameterPresent> <isNull> <isNotNull> <isEmpty> <isNotEmpty>   
<isEqual> <isNotEqual> <isGreaterThan> <isGreaterEqual> <isLessThan> <isLessEqual>   
  
<!-- Sql片段的是用-->   
<sql id="selectItem_fragment">   
    FROM items WHERE parentid = 6  
</sql>   
<select id="selectItemCount" resultClass="int">   
    SELECT COUNT(*) AS total   
    <include refid="selectItem_fragment"/>   
</select>   
<select id="selectItems" resultClass="Item">   
    SELECT id, name   
    <include refid="selectItem_fragment"/>   
</select>   
  
<!--缓存-->   
<cacheModel id="product-cache" type="LRU">   
    <flushInterval hours="24"/>   
    <flushOnExecute statement="insertProduct"/>   
    <flushOnExecute statement="updateProduct"/>   
    <flushOnExecute statement="deleteProduct"/>   
    <property name=”size” value=”1000” />   
</cacheModel>   
<select id=”getProductList” parameterClass=”int” cacheModel=”product-cache”>   
    select * from PRODUCT where PRD_CAT_ID = #value#   
</select>   
  
<!—对XML支持 -->   
<select id="getPerson" parameterClass=”int” resultClass="xml" xmlResultName=”person”>   
    SELECT   
    PER_ID as id,   
    PER_FIRST_NAME as firstName,   
    PER_LAST_NAME as lastName,   
    PER_BIRTH_DATE as birthDate,   
    PER_WEIGHT_KG as weightInKilograms,   
    PER_HEIGHT_M as heightInMeters   
    FROM PERSON   
    WHERE PER_ID = #value#   
</select>   
<person>   
    <id>1</id>   
    <firstName>Clinton</firstName>   
    <lastName>Begin</lastName>   
    <birthDate>1900-01-01</birthDate>   
    <weightInKilograms>89</weightInKilograms>   
    <heightInMeters>1.77</heightInMeters>   
</person>   
  
<!—字符串替换   
select * from $tableName$   
Important Note 1: This support will only substitute Strings, so it is not appropriate for complex data types like Date or Timestamp.   
Important Note 2: If you use this support to alter a table name, or a column list, in an SQL select statement,then you should always specify remapResults=“true”   
-->.   
  
<!—关联查询方式,有1/N问题-->   
<sqlMap namespace="User">   
    <typeAlias alias="user" type="com.ibatis.sample.User"/>   
    <typeAlias alias="address" type="com.ibatis.sample.Address"/>   
    <resultMap id="get-user-result" class="user">   
        <result property="id" column="id"/>   
        <result property="name" column="name"/>   
        <result property="sex" column="sex"/>   
        <result property="addresses" column="id" select="User.getAddressByUserId"/>   
    </resultMap>   
    <select id="getUsers"    parameterClass="java.lang.String" resultMap="get-user-result">   
        <![CDATA[Select id,name,sex from t_user where id = #id#]]>   
    </select>   
    <select id="getAddressByUserId"  parameterClass="int" resultClass="address">   
        <![CDATA[select address,zipcode from t_address where user_id = #userid# ]]>   
    </select>   
</sqlMap>   
<resultMap id="get-user-result" class="user">   
    <result property="id" column="id"/>   
    <result property="name" column="name"/>   
    <result property="sex" column="sex"/>   
    <result property="address" column="t_address.address"/>   
    <result property="zipCode" column="t_address.zipcode"/>   
</resultMap>   
<select id="getUsers" parameterClass="java.lang.String" resultMap="get-user-result">   
    <![CDATA[select* from t_user,t_address where t_user.id=t_address.user_id]]>   
</select>   
保证User 类中包含address和zipCode两个String型属性。   
  
<!—关联查询,无1/N问题-->   
  <resultMap id="AccountResultWithRole" class="Account" groupBy="id">   
    <result property="id" column="ID"/>   
    <result property="firstName" column="FIRST_NAME"/>   
    <result property="lastName" column="LAST_NAME"/>   
    <result property="emailAddress" column="EMAIL"/>       
    <result property="role" resultMap="Account.roleResult"/>   
  </resultMap>   
  <resultMap id="roleResult" class="test.Role">   
    <result property="roleid" column="ROLEID"/>   
    <result property="rolename" column="ROLENAME"/>   
  </resultMap>   
  <select id="selectAccountByIdWithRole" parameterClass="int" resultMap="AccountResultWithRole">   
        select B.ROLEID, B.ROLENAME, A.ID, A.FIRST_NAME,A.LAST_NAME,A.EMAIL from ACCOUNT A left outer join ROLE B on A.ROLEID = B.ROLEID where A.ID = #id#   
  </select>   
     
  <!--查询-->      
  <select id="selectAccountById" parameterClass="int" resultClass="Account">   
    select ID as id,FIRST_NAME as firstName,LAST_NAME as lastName,       EMAIL as emailAddress from ACCOUNT where ID = #id#   
  </select>   
     
  <!--新增-->        
  <insert id="insertAccount" parameterClass="Account">   
    insert into ACCOUNT (FIRST_NAME,LAST_NAME,EMAIL,PID,DT)     
    values (#firstName:VARCHAR#, #lastName:VARCHAR#, #emailAddress:VARCHAR#,#pid:INTEGER:0#,#dt:TIME#)   
    <selectKey resultClass="int" type="post" keyProperty="id">   
        SELECT @@IDENTITY AS ID   
    </selectKey>       
  </insert>   
     
  <!--更新-->      
  <update id="updateAccount" parameterClass="Account">   
    update ACCOUNT set   
      FIRST_NAME = #firstName:VARCHAR#,   
      LAST_NAME = #lastName:VARCHAR#,   
      EMAIL = #emailAddress:VARCHAR#   
    where   
      ID = #id#   
  </update>   
  
  <!--删除-->   
  <delete id="deleteAccountById" parameterClass="int">   
    delete from ACCOUNT where ID = #id#   
  </delete>   
     
  <!--存储过程,如果没有返回列表,procTest的resultMap可以省略-->    
  <parameterMap id="procParamMap" class="java.util.HashMap" >   
    <parameter property="id" jdbcType="INTEGER" javaType="java.lang.Integer" mode="IN"/>   
    <parameter property="outid" jdbcType="INTEGER" javaType="java.lang.Integer" mode="OUT"/>   
    <parameter property="errMsg" jdbcType="VARCHAR" javaType="java.lang.String" mode="OUT"/>   
  </parameterMap>   
  <resultMap id="procResultMap" class="java.util.HashMap" >   
    <result property="a" column="AAA"/>   
    <result property="b" column="BBB"/>   
    <result property="c" column="CCC"/>       
  </resultMap>     
  <procedure id="procTest" parameterMap="procParamMap" resultMap="procResultMap">   
    {call test_sp_1 (?,?,?)}   
  </procedure>   
</sqlMap>  
 
2
0
分享到:
评论

相关推荐

    ibatis小结

    ibatis小结主要描述ibatis框架的一些基本使用。以及相关的配置,此demo可以运行

    IBATIS开发使用小结

    IBATIS开发使用小结,手把手教会您IBATIS的使用

    ibatis 学习小结笔记

    ibatis 组件 , 用于访问数据库 ibatis 基于O-R mapping 映射

    iBATIS实战

    1.5 小结 24 第2章 iBATIS是什么 26 2.1 映射SQL语句 27 2.2 iBATIS如何工作 29 2.2.1 iBATIS之于小型、简单系统 30 2.2.2 iBATIS之于大型、企业级系统 31 2.3 为何使用iBATIS 31 2.3.1 简单性 32 2.3.2 生产效率 ...

    Java数据库技术详解 DOC简版

    1.5 本章小结 第2章 SQL语句基础之DDL 2.1 DDL基础 2.2 DDL操作视图 2.3 本章小结 第3章 SQL语句基础之DML 3.1 SELECT语句基础 3.2 WHERE子句 3.3 ORDER BY子句 3.4 GROUP BY和HAVING子句 3.5 ...

    JAVA WEB典型模块与项目实战大全

    1.5 小结  第2章 myedipse开发工具对各种框架的支持  2.1 使用jsp的两种模式  2.2 struts框架的实现  2.3 hibernate框架的实现  2.4 jpa框架的实现  2.5 spring框架的实现  2.6 jsf框架的实现  2.7...

    Spring in Action(第2版)中文版

    目录 第一部分spring的核心 第1章开始spring之旅 1.1spring是什么 1.2开始spring之旅 1.3理解依赖注入 ...1.5小结 ...2.6小结 ...3.7小结 ...4.6小结 ...5.6spring和ibatis ...5.6.1配置ibatis客户模板 ...b.4小结

    Spring in Action(第二版 中文高清版).part2

    第一部分 Spring的核心 第1章 开始Spring之旅 1.1 Spring是什么 1.2 开始Spring之旅 1.3 理解依赖注入 1.3.1 依赖注入 1.3.2 DI应用 1.3.3 企业级应用中的依赖注入 1.4 应用AOP ...B.4 小结

    Spring in Action(第二版 中文高清版).part1

    第一部分 Spring的核心 第1章 开始Spring之旅 1.1 Spring是什么 1.2 开始Spring之旅 1.3 理解依赖注入 1.3.1 依赖注入 1.3.2 DI应用 1.3.3 企业级应用中的依赖注入 1.4 应用AOP ...B.4 小结

    MyBatis持久层框架的用法知识小结

    MyBatis 本是apache的一个开源项目iBatis,接下来通过本文给大家介绍MyBatis持久层框架的用法知识小结,非常不错,具有参考借鉴价值,感兴趣的朋友一起学习吧

    spring in action英文版

    第一部分 Spring基础  第1章 开始Spring之旅  1.1 为什么使用Spring  1.1.1 J2EE开发者的一天  1.1.2 Spring的承诺  1.2 Spring是什么 ... 1.7 小结 ... 2.5 小结 ... 3.7 小结 ... 11.6 小结

    面向对象设计 PPT

    主要讲的ssi框架,MVC对于我们来说,已经不陌生了,它起源于20世纪80年代针对smalltalk语言的一种软件设计模式,...由于最近用了一次SSI框架,因此本文主要是对Strtus2、Spring、iBatis三个开源的MVC框架进行一个小结。

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

    14.5.2. 小结 14.6. 文档视图(PDF/Excel) 14.6.1. 简介 14.6.2. 配置和安装 14.6.2.1. 文档视图定义 14.6.2.2. Controller 代码 14.6.2.3. Excel视图子类 14.6.2.4. PDF视图子类 14.7. JasperReports 14.7.1. 依赖...

    spring chm文档

    14.5.2. 小结 14.6. 文档视图(PDF/Excel) 14.6.1. 简介 14.6.2. 配置和安装 14.7. JasperReports 14.7.1. 依赖的资源 14.7.2. 配置 14.7.3. 构造ModelAndView 14.7.4. 使用子报表 14.7.5. 配置Exporter的...

    Spring 2.0 开发参考手册

    14.5.2. 小结 14.6. 文档视图(PDF/Excel) 14.6.1. 简介 14.6.2. 配置和安装 14.7. JasperReports 14.7.1. 依赖的资源 14.7.2. 配置 14.7.3. 构造ModelAndView 14.7.4. 使用子报表 14.7.5. 配置Exporter的...

    Spring中文帮助文档

    14.5.2. 小结 14.6. 文档视图(PDF/Excel) 14.6.1. 简介 14.6.2. 配置和安装 14.7. JasperReports 14.7.1. 依赖的资源 14.7.2. 配置 14.7.3. 构造ModelAndView 14.7.4. 使用子报表 14.7.5. 配置Exporter的...

    Spring API

    14.5.2. 小结 14.6. 文档视图(PDF/Excel) 14.6.1. 简介 14.6.2. 配置和安装 14.7. JasperReports 14.7.1. 依赖的资源 14.7.2. 配置 14.7.3. 构造ModelAndView 14.7.4. 使用子报表 14.7.5. 配置Exporter的...

Global site tag (gtag.js) - Google Analytics