当前位置:编程学习 > JAVA >>

ibatis <dynamic> 标签 update 的相关问题总结

1.为了使用<dynamic >中 <isNotNull>和其他地方出现不必要的bug  我们在定义map 或者 TO时 将所有的类型都定义为原生态的类型,比如定义INTEGER。

2.在写语句时很容易引入很难察觉的错误 比如“ : ” ,和“ : ” .这两个字符在.java 文件里面会区别非常明显,但是在xml中,肉眼是看不出来的。所以尽量统一,将标点用半角英文。

3.所有出现字段的地方,尽可能精确的制定类型,虽然有些地方看起来写或者不写都可以正常运行,这样做可以减少出错的几率,减少后顾之忧。

4.贴出一段做范例。

TOMap:
[html] 
<resultMap id="userTO" class="UserTO"> 
   <!--设置需要的数据表项与UserTO成员变量之间的对应关系  --> 
   <result column="ID" jdbcType="int" javaType="java.lang.Integer" property="id"/> 
   <result column="USERNAME" jdbcType="varchar" javaType="java.lang.String" property="username" /> 
   <result column="PASSWORD" jdbcType="varchar" javaType="java.lang.String" property="password"/> 
   <result column="GENDER" jdbcType="Integer" javaType="java.lang.Integer" property="gender" /> 
   <result column="DATE_OF_BIRTH" jdbcType="date" javaType="java.util.Date" property="dateOfBirth"/> 
   <result column="CREATED_DATE" jdbcType="datetime" javaType="java.util.Date" property="createdDate" /> 
   <result column="IMAGE_ID" jdbcType="Integer" javaType="java.lang.Integer" property="imageId"/> 
 </resultMap> 

SQL:

[html] 
<update id="updateUserinfoById" parameterClass="UserTO " > 
    update USER 
    <dynamic prepend="set"> 
      <isNotNull prepend="," property="password">PASSWORD = #password: VARCHAR#</isNotNull> 
      <isNotNull prepend="," property="gender">GENDER = #gender: INTEGER#</isNotNull>  
      <isNotNull prepend="," property="dateOfBirth">DATE_OF_BIRTH = #dateOfBirth: TIMESTAMP#</isNotNull>  
      <isNotNull prepend="," property="imageId">IMAGE_ID = #imageId: INTEGER#</isNotNull> 
      <isNotNull prepend="," property="status">STATUS = #status: INTEGER#</isNotNull>  
    </dynamic>  
    where ID=#id: INTEGER# 
  </update> 

TO:
[html] 
public class UserTO implements Constant { 
 
    private Integer id; 
 
    private String username; 
 
    private String password; 
 
    private Integer gender; 
 
    private Integer imageId; 
 
    private Date dateOfBirth; 
 
    private Date createdDate; 

如果可以,可以做两套TO,一个作为参数,另一个TO作为返回值。这里就不举例了。

补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,