一.sqlmapper中#和$的区别
1.#是把传入的数据当作字符串,如#field传入的是id,则sql语句生成是这样,order by "id",这当然会报错..
2.$传入的数据直接生成在sql里,如#field传入的是id,则sql语句生成是这样,order by id, 这就对了.
$方式一般用于传入数据库对象.例如传入表名. 不加引号
#方式一般用于传入插入/更新的值或查询/删除的where条件 “”值
二.sqlmapper中的jdbcType类型
#{FLD_NUMBER,jdbcType=INTEGER},
#{FLD_VARCHAR,jdbcType=VARCHAR},
#{FLD_DATE,jdbcType=DATE},
#{FLD_INTEGER,jdbcType=INTEGER},
#{FLD_DOUBLE,jdbcType=DOUBLE},
#{FLD_LONG,jdbcType=INTEGER},
#{FLD_CHAR,jdbcType=CHAR},
#{FLD_BLOB,jdbcType=BLOB},
#{FLD_CLOB,jdbcType=CLOB},
#{FLD_FLOAT,jdbcType=FLOAT},
#{FLD_TIMESTAMP,jdbcType=TIMESTAMP}
例子比如:
① <insert id="addUserOrder" parameterType="hashmap">
insert into t_pub_user(user_id,USERNAME,password,USERDSPNAME,EMAIL,activity,create_user,CREATE_DATE) values(
#{id,jdbcType=INTEGER},#{username,jdbcType=VARCHAR},#{password,jdbcType=VARCHAR},
#{userdspname,jdbcType=VARCHAR},#{email,jdbcType=VARCHAR},1,1,
to_date(#{create_date,jdbcType=DATE},'yyyy-mm-dd hh24:mi:ss'))
</insert>
②<delete id="deleteWorkOrder" parameterType="hashmap">
DELETE FROM S_ORDERINFO WHERE ORDER_ID IN(${orderIds})
</delete>