参数为HashMap形式的增删改查命名SQL

来源:互联网 发布:it服务外包 编辑:程序博客网 时间:2024/06/01 10:49

表单的各字段,都是string类型提交到服务器的。所以可以直接用##加入数据库中,其中要注意的是日期birthday”2017-07-12”也是字符串类型,如果该表单字段未输入内容,则提交到服务器时用null取代而不是空字符串形式。所以在命名sql编写时,最好使用parameterMap形式,这样可以自动转换数据格式,而排出应表单输入为空,而自动填入null形式而报sql语法错误。
转为数据库中date格式时直接 to_Date(#birthday#,’yyyy-MM-dd’)。


delete

<sqlMap>     <delete id="delete" parameterClass="commonj.sdo.DataObject">        <![CDATA[delete from O_OPERATOR where OPERATOR_ID = #operatorId#]]>     </delete></sqlMap>

select

<sqlMap>    <select id="selectUser" parameterClass="commonj.sdo.DataObject" resultClass="commonj.sdo.DataObject">        <![CDATA[select OPERATOR_ID "operatorId",                        USER_ID "userId",                        USER_NAME "userName",                        BIRTHDAY "birthday",                        GENDER "gender",                        POSTCODE "postcode",                        ADDRESS "address",                        PHONE "phone",                        EMAIL "email",                        MEMO "memo"         from O_OPERATOR where 1=1]]>        <isNotNull  property="userName">             and USER_NAME = '$userName$'        </isNotNull>    </select></sqlMap>

update

<sqlMap>    <update id="updateUser" parameterClass="java.util.HashMap">    <![CDATA[update O_OPERATOR set USER_ID=#userId#,                                    USER_NAME=#userName#,                                    BIRTHDAY=to_Date(#birthday#,'yyyy-MM-dd'),                                    GENDER=#gender#,                                    POSTCODE=#postcode#,                                    ADDRESS=#address#,                                    PHONE=#phone#]]>                                   <isNotNull  property="email">                表单提交时,若该字段提交时为空,则                                    ,EMAIL='$email$'                      email属性为null,用sql更新语句时,会报错                                    </isNotNull>                            这里用<isnotnull>来实现为空则不插入该字段                                   <isNotNull  property="memo">             或者用下面的方式,通过<parameterMap>方式                                    ,MEMO='$memo$'                       若字段为null,则自动不传入值。                                    </isNotNull>              where OPERATOR_ID=#operatorId#    </update></sqlMap><sqlMap>    <parameterMap class="java.util.HashMap" id="parameterMap">       <parameter javaType="string" jdbcType="VARCHAR" property="userId"/>       <parameter javaType="string" jdbcType="VARCHAR" property="userName"/>       <parameter javaType="string" jdbcType="VARCHAR" property="birthday"/>       <parameter javaType="string" jdbcType="VARCHAR" property="gender"/>       <parameter javaType="string" jdbcType="VARCHAR" property="postcode"/>       <parameter javaType="string" jdbcType="VARCHAR" property="address"/>       <parameter javaType="string" jdbcType="VARCHAR" property="phone"/>       <parameter javaType="string" jdbcType="VARCHAR" property="email"/>       <parameter javaType="string" jdbcType="VARCHAR" property="memo"/>       <parameter javaType="string" jdbcType="VARCHAR" property="operatorId"/>    </parameterMap>    <update id="updateUser" parameterMap="parameterMap">    <![CDATA[update O_OPERATOR set USER_ID=?,                                    USER_NAME=?,                                    BIRTHDAY=to_Date(?,'yyyy-MM-dd'),                                    GENDER=?,                                    POSTCODE=?,                                    ADDRESS=?,                                    PHONE=?,                                    EMAIL=?,                                    MEMO=?              where OPERATOR_ID=?]]>    </update></sqlMap>

insert

<sqlMap>    <insert id="insertUser" parameterClass="commonj.sdo.DataObject">    <![CDATA[insert into O_OPERATOR (            OPERATOR_ID,USER_ID,USER_NAME,BIRTHDAY,GENDER,POSTCODE,ADDRESS,PHONE,EMAIL,MEMO)             values (#operatorId#,#userId#,#userName#,to_Date(#birthday#,'yyyy-MM-dd'),            #gender#,#postcode#,#address#,#phone#,#email#,#memo#)]]>    </insert></sqlMap><sqlMap>    <parameterMap class="java.util.HashMap" id="parameterMap">       <parameter javaType="string" jdbcType="INTEGER" property="operatorId"/>       <parameter javaType="string" jdbcType="INTEGER" property="userId"/>       <parameter javaType="string" jdbcType="VARCHAR" property="userName"/>       <parameter javaType="string" jdbcType="VARCHAR" property="birthday"/>       <parameter javaType="string" jdbcType="VARCHAR" property="gender"/>       <parameter javaType="string" jdbcType="VARCHAR" property="postcode"/>       <parameter javaType="string" jdbcType="VARCHAR" property="address"/>       <parameter javaType="string" jdbcType="VARCHAR" property="phone"/>       <parameter javaType="string" jdbcType="VARCHAR" property="email"/>       <parameter javaType="string" jdbcType="VARCHAR" property="memo"/>    </parameterMap>    <insert id="insertUser" parameterMap="parameterMap">    <![CDATA[insert into O_OPERATOR (            OPERATOR_ID,USER_ID,USER_NAME,BIRTHDAY,GENDER,POSTCODE,ADDRESS,PHONE,EMAIL,MEMO)             values (?,?,?,?,?,?,?,?,?,?)]]>    </insert></sqlMap>