`

IBATIS学习小结

阅读更多

sqlMap文件

Java代码 复制代码 收藏代码
  1. <?xml version="1.0" encoding="UTF-8" ?>   
  2. <!DOCTYPE sqlMap         
  3.     PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"         
  4.     "http://ibatis.apache.org/dtd/sql-map-2.dtd">   
  5. <sqlMap namespace="Account">   
  6.   <typeAlias alias="Account" type="test.Account"/>   
  7.   <!--列表查询,返回Account Object的List-->      
  8.   <resultMap id="AccountResult" class="Account">   
  9.     <result property="id" column="ID"/>   
  10.     <result property="firstName" column="FIRST_NAME"/>   
  11.     <result property="lastName" column="LAST_NAME"/>   
  12.     <result property="emailAddress" column="EMAIL"/>   
  13.   </resultMap>     
  14.   <select id="selectAllAccounts" resultMap="AccountResult">   
  15.     select * from ACCOUNT   
  16.   </select>   
  17.      
  18.   <!--列表查询,返回HashMap的List -->    
  19.   <!--resultMap无需再通过JDBC ResultSetMetaData 来动态获取字段信息,性能有提高-->   
  20.   
  21.   <resultMap id="mapResult" class="java.util.HashMap">   
  22.     <result property="roleid" column="ROLEID"/>   
  23.     <result property="rolename" column="ROLENAME"/>   
  24.     <result property="id" column="ID"/>   
  25.     <result property="firstName" column="FIRST_NAME"/>   
  26.     <result property="lastName" column="LAST_NAME"/>   
  27.     <result property="emailAddress" column="EMAIL"/>   
  28.     <result property="dt" column="DT"/>   
  29.   </resultMap>   
  30.   <select id="selectAllAccountsWithMap" resultMap="mapResult">   
  31.         select B.ROLEID, B.ROLENAME, A.ID, A.FIRST_NAME,A.LAST_NAME,A.EMAIL,A.DT   
  32.         from ACCOUNT A left outer join ROLE B   on A.ROLEID = B.ROLEID   
  33.         ORDER BY A.ID DESC   
  34.   </select>   
  35.      
  36. <!--动态构造查询条件-->   
  37. <select id="getUsers" parameterClass="user" resultMap="get-user-result">   
  38.     Select id,name,sex from t_user   
  39.     <dynamic prepend="WHERE">   
  40.         <isNotEmpty prepend="AND" property="name">   
  41.             (name like #name#)   
  42.         </isNotEmpty>   
  43.         <isNotEmpty prepend="AND" property="address">   
  44.             (address like #address#)   
  45.         </isNotEmpty>   
  46.     </dynamic>   
  47. </select>   
  48. <isNotEmpty prepend="AND" property="name">   
  49.     ( name=#name#   
  50.         <isNotEmpty prepend="AND" property="address">   
  51.             address=#address#   
  52.         </isNotEmpty>   
  53.     )   
  54. </isNotEmpty>   
  55. <select id="dynamicGetAccountList" resultMap="account-result" >   
  56.     select * from ACCOUNT   
  57.     <dynamic prepend="WHERE">   
  58.         <isNotNull prepend="AND" property="firstName" open=”(“ close=”)”>   
  59.             ACC_FIRST_NAME = #firstName#   
  60.             <isNotNull prepend="OR" property="lastName">   
  61.                 ACC_LAST_NAME = #lastName#   
  62.             </isNotNull>   
  63.         </isNotNull>   
  64.         <isNotNull prepend="AND" property="emailAddress">   
  65.             ACC_EMAIL like #emailAddress#   
  66.         </isNotNull>   
  67.         <isGreaterThan prepend="AND" property="id" compareValue="0">   
  68.             ACC_ID = #id#   
  69.         </isGreaterThan>   
  70.     </dynamic>   
  71.     order by ACC_LAST_NAME   
  72. </select>   
  73.   
  74. <isParameterPresent> <isNotParameterPresent> <isNull> <isNotNull> <isEmpty> <isNotEmpty>   
  75. <isEqual> <isNotEqual> <isGreaterThan> <isGreaterEqual> <isLessThan> <isLessEqual>   
  76.   
  77. <!-- Sql片段的是用-->   
  78. <sql id="selectItem_fragment">   
  79.     FROM items WHERE parentid = 6  
  80. </sql>   
  81. <select id="selectItemCount" resultClass="int">   
  82.     SELECT COUNT(*) AS total   
  83.     <include refid="selectItem_fragment"/>   
  84. </select>   
  85. <select id="selectItems" resultClass="Item">   
  86.     SELECT id, name   
  87.     <include refid="selectItem_fragment"/>   
  88. </select>   
  89.   
  90. <!--缓存-->   
  91. <cacheModel id="product-cache" type="LRU">   
  92.     <flushInterval hours="24"/>   
  93.     <flushOnExecute statement="insertProduct"/>   
  94.     <flushOnExecute statement="updateProduct"/>   
  95.     <flushOnExecute statement="deleteProduct"/>   
  96.     <property name=”size” value=”1000” />   
  97. </cacheModel>   
  98. <select id=”getProductList” parameterClass=”int” cacheModel=”product-cache”>   
  99.     select * from PRODUCT where PRD_CAT_ID = #value#   
  100. </select>   
  101.   
  102. <!—对XML支持 -->   
  103. <select id="getPerson" parameterClass=”int” resultClass="xml" xmlResultName=”person”>   
  104.     SELECT   
  105.     PER_ID as id,   
  106.     PER_FIRST_NAME as firstName,   
  107.     PER_LAST_NAME as lastName,   
  108.     PER_BIRTH_DATE as birthDate,   
  109.     PER_WEIGHT_KG as weightInKilograms,   
  110.     PER_HEIGHT_M as heightInMeters   
  111.     FROM PERSON   
  112.     WHERE PER_ID = #value#   
  113. </select>   
  114. <person>   
  115.     <id>1</id>   
  116.     <firstName>Clinton</firstName>   
  117.     <lastName>Begin</lastName>   
  118.     <birthDate>1900-01-01</birthDate>   
  119.     <weightInKilograms>89</weightInKilograms>   
  120.     <heightInMeters>1.77</heightInMeters>   
  121. </person>   
  122.   
  123. <!—字符串替换   
  124. select * from $tableName$   
  125. Important Note 1: This support will only substitute Strings, so it is not appropriate for complex data types like Date or Timestamp.   
  126. 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”   
  127. -->.   
  128.   
  129. <!—关联查询方式,有1/N问题-->   
  130. <sqlMap namespace="User">   
  131.     <typeAlias alias="user" type="com.ibatis.sample.User"/>   
  132.     <typeAlias alias="address" type="com.ibatis.sample.Address"/>   
  133.     <resultMap id="get-user-result" class="user">   
  134.         <result property="id" column="id"/>   
  135.         <result property="name" column="name"/>   
  136.         <result property="sex" column="sex"/>   
  137.         <result property="addresses" column="id" select="User.getAddressByUserId"/>   
  138.     </resultMap>   
  139.     <select id="getUsers"    parameterClass="java.lang.String" resultMap="get-user-result">   
  140.         <![CDATA[Select id,name,sex from t_user where id = #id#]]>   
  141.     </select>   
  142.     <select id="getAddressByUserId"  parameterClass="int" resultClass="address">   
  143.         <![CDATA[select address,zipcode from t_address where user_id = #userid# ]]>   
  144.     </select>   
  145. </sqlMap>   
  146. <resultMap id="get-user-result" class="user">   
  147.     <result property="id" column="id"/>   
  148.     <result property="name" column="name"/>   
  149.     <result property="sex" column="sex"/>   
  150.     <result property="address" column="t_address.address"/>   
  151.     <result property="zipCode" column="t_address.zipcode"/>   
  152. </resultMap>   
  153. <select id="getUsers" parameterClass="java.lang.String" resultMap="get-user-result">   
  154.     <![CDATA[select* from t_user,t_address where t_user.id=t_address.user_id]]>   
  155. </select>   
  156. 保证User 类中包含address和zipCode两个String型属性。   
  157.   
  158. <!—关联查询,无1/N问题-->   
  159.   <resultMap id="AccountResultWithRole" class="Account" groupBy="id">   
  160.     <result property="id" column="ID"/>   
  161.     <result property="firstName" column="FIRST_NAME"/>   
  162.     <result property="lastName" column="LAST_NAME"/>   
  163.     <result property="emailAddress" column="EMAIL"/>       
  164.     <result property="role" resultMap="Account.roleResult"/>   
  165.   </resultMap>   
  166.   <resultMap id="roleResult" class="test.Role">   
  167.     <result property="roleid" column="ROLEID"/>   
  168.     <result property="rolename" column="ROLENAME"/>   
  169.   </resultMap>   
  170.   <select id="selectAccountByIdWithRole" parameterClass="int" resultMap="AccountResultWithRole">   
  171.         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#   
  172.   </select>   
  173.      
  174.   <!--查询-->      
  175.   <select id="selectAccountById" parameterClass="int" resultClass="Account">   
  176.     select ID as id,FIRST_NAME as firstName,LAST_NAME as lastName,       EMAIL as emailAddress from ACCOUNT where ID = #id#   
  177.   </select>   
  178.      
  179.   <!--新增-->        
  180.   <insert id="insertAccount" parameterClass="Account">   
  181.     insert into ACCOUNT (FIRST_NAME,LAST_NAME,EMAIL,PID,DT)     
  182.     values (#firstName:VARCHAR#, #lastName:VARCHAR#, #emailAddress:VARCHAR#,#pid:INTEGER:0#,#dt:TIME#)   
  183.     <selectKey resultClass="int" type="post" keyProperty="id">   
  184.         SELECT @@IDENTITY AS ID   
  185.     </selectKey>       
  186.   </insert>   
  187.      
  188.   <!--更新-->      
  189.   <update id="updateAccount" parameterClass="Account">   
  190.     update ACCOUNT set   
  191.       FIRST_NAME = #firstName:VARCHAR#,   
  192.       LAST_NAME = #lastName:VARCHAR#,   
  193.       EMAIL = #emailAddress:VARCHAR#   
  194.     where   
  195.       ID = #id#   
  196.   </update>   
  197.   
  198.   <!--删除-->   
  199.   <delete id="deleteAccountById" parameterClass="int">   
  200.     delete from ACCOUNT where ID = #id#   
  201.   </delete>   
  202.      
  203.   <!--存储过程,如果没有返回列表,procTest的resultMap可以省略-->    
  204.   <parameterMap id="procParamMap" class="java.util.HashMap" >   
  205.     <parameter property="id" jdbcType="INTEGER" javaType="java.lang.Integer" mode="IN"/>   
  206.     <parameter property="outid" jdbcType="INTEGER" javaType="java.lang.Integer" mode="OUT"/>   
  207.     <parameter property="errMsg" jdbcType="VARCHAR" javaType="java.lang.String" mode="OUT"/>   
  208.   </parameterMap>   
  209.   <resultMap id="procResultMap" class="java.util.HashMap" >   
  210.     <result property="a" column="AAA"/>   
  211.     <result property="b" column="BBB"/>   
  212.     <result property="c" column="CCC"/>       
  213.   </resultMap>     
  214.   <procedure id="procTest" parameterMap="procParamMap" resultMap="procResultMap">   
  215.     {call test_sp_1 (?,?,?)}   
  216.   </procedure>   
  217. </sqlMap>  



java 代码

Java代码 复制代码 收藏代码
  1. public class TestDao extends SqlMapClientDaoSupport {   
  2.     public List selectAllAccounts() throws SQLException {   
  3.         return getSqlMapClientTemplate().queryForList("selectAllAccounts");   
  4.     }   
  5.   
  6.     public List selectAllAccountsWithMap() throws SQLException {   
  7.         return getSqlMapClientTemplate().queryForList(   
  8.                 "selectAllAccountsWithMap");   
  9.     }      
  10.        
  11.     public Account selectAccountById(int id) throws SQLException {   
  12.         return (Account) getSqlMapClientTemplate().queryForObject(   
  13.                 "selectAccountById"new Integer(id));   
  14.     }   
  15.     public List procTest(Map params) throws Exception {   
  16.         List ret = (List) getSqlMapClientTemplate().queryForList("procTest",params);   
  17.         return ret;   
  18.     }   
  19.     public Account selectAccountByIdWithRole(int id) throws SQLException {   
  20.         return (Account) getSqlMapClientTemplate().queryForObject(   
  21.                 "selectAccountByIdWithRole"new Integer(id));   
  22.     }      
  23.        
  24.     public void insertAccount(Account account) throws SQLException {   
  25.         getSqlMapClientTemplate().insert("insertAccount", account);   
  26.     }   
  27.   
  28.     public int updateAccount(Account account) throws SQLException {   
  29.         return getSqlMapClientTemplate().update("updateAccount", account);   
  30.     }   
  31.   
  32.     public int deleteAccount(int id) throws SQLException {   
  33.         return getSqlMapClientTemplate().delete("deleteAccountById"new Integer(id));   
  34.     }   
  35. }  



SqlServer存储过程

Java代码 复制代码 收藏代码
  1. CREATE procedure test_sp_1 @id int,@outid int output,@errMsg varchar(255) output   
  2.   
  3. AS   
  4.   
  5. update ACCOUNT set pid=@id  
  6. select @outid=isnull(@id,0)+1  
  7. select @errMsg='测试'  
  8. select AAA='AAAAAAA',BBB='BBBBBBB',CCC='CCCCCCC'  
  9. GO  
分享到:
评论

相关推荐

    ibatis学习总结

    【ibatis学习总结】 在Java应用中,ORM(对象关系映射)框架是连接数据库与业务逻辑的关键。相比像Hibernate和Apache OJB这样的"一站式"ORM解决方案,iBATIS提供了一种更为灵活的"半自动化"策略。iBATIS允许开发者...

    ibatis 学习小结笔记

    ### ibatis 学习小结笔记 #### 一、ibatis 概述 ibatis 是一个基于 Java 的持久层框架,它提供了一种简便的方式来处理关系型数据库与 Java 对象之间的映射(O/R Mapping)。ibatis 在设计上强调的是 SQL 语句的...

    ibatis学习总结,oracle , 敏捷开发,

    在IT行业中,Ibatis、Oracle...希望这篇总结能为你的学习之路提供有价值的指导,进一步深化你对Ibatis、Oracle和敏捷开发的理解。在IT世界中,持续学习和实践是提升自身能力的关键,祝你在技术探索的道路上越走越远。

    ibatis学习总结文档

    本文档旨在对iBATIS的学习进行深入的总结,帮助初学者快速上手。 一、iBATIS概述 iBATIS的核心理念是“SQL Map”,它将SQL与Java代码分离,通过XML配置文件或注解来定义SQL语句,实现了数据访问层的灵活定制。这...

    iBatis学习总结

    《iBatis学习总结——深入理解SQLServer驱动与工具应用》 在软件开发领域,数据库操作是不可或缺的一部分,而iBatis作为一个优秀的持久层框架,为开发者提供了灵活的SQL映射功能,使得Java应用程序能够更好地与...

    ibatis学习资料汇总

    《iBatis学习资料汇总》 iBatis,作为一个轻量级的持久层框架,它在Java开发领域中扮演着重要的角色。这个框架允许开发者将SQL语句与Java代码分离,提高了开发效率并降低了维护成本。本文将深入探讨iBatis的核心...

    ibatis2.rar

    "iBATIS学习总结 - 郭睿的专栏 - CSDN.NET_files"和"iBATIS与Spring集成及环境搭建 - 振华 - ITeye技术网站_files"可能是相关文章的图片或辅助资源。 通过这些资料,开发者可以系统地学习和掌握iBATIS 2.x版本的...

    iBATIS2.0学习总结

    iBATIS2.0是一个基于Java的持久层框架,它主要负责将SQL查询与应用程序的业务逻辑解耦,使得开发者可以更加专注于SQL的编写和优化,而无需关心数据访问的底层细节。iBATIS并不像Hibernate那样是完全的对象关系映射...

    iBatis2学习笔记

    4.iBatis2学习笔记:SqlMap的配置总结(18条).doc 5.iBatis2学习笔记:入参和返回值的问题.doc 6.iBatis2学习笔记:一对多映射(双向).doc 7.iBatis2学习笔记:多对多映射(双向) .doc 8.iBatis2学习笔记:总结与...

    J2EE学习 Ibatis开发资料共享 Ibatis开发资料 Ibatis学习框架 Ibatis开发概要

    ### J2EE学习:Ibatis开发资料概要 #### 一、Ibatis简介与特点 Ibatis是一款半自动化的ORM(Object Relational Mapping)框架,它不像Hibernate等其他ORM工具那样提供完全自动化的数据库操作,而是更侧重于SQL语句...

    传智播客ibatis教程_ibatis优点总结

    本文将深入探讨其中一个流行的选择——iBATIS,以及其在传智播客教程中的优点总结。 iBATIS,全称为“互联网应用程序基础工具包”(Internet Basics for Architecture with Transactions and SQL),是由Apache ...

    Ibatis.net学习和实例~

    通过提供的文件《IBatisNet开发使用小结.docx》和《iBatis[1].Net详细使用手册.docx》,你将能够找到具体的步骤和示例代码,这些实例将涵盖基本的CRUD操作(创建、读取、更新和删除),以及更高级的功能如存储过程...

    ibatis学习笔记.txt

    ### iBatis 学习笔记知识点总结 #### 一、iBatis 概念与特点 **1.1 iBatis 定义** - **iBatis** 是一个基于 Java 的开源持久层框架,它专注于 SQL 映射,提供了一种将对象与数据库交互过程中的 SQL 语句进行分离的...

Global site tag (gtag.js) - Google Analytics