表单的各字段,都是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>
本文介绍如何处理表单数据并将其正确地映射到SQL语句中,重点讲解了如何处理空值及日期类型的转换。通过使用parameterMap,能够自动处理字段的空值情况,并提供了一种避免SQL语法错误的方法。
7935

被折叠的 条评论
为什么被折叠?



