Ibatis小结

Xml代码 复制代码
  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>    
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值