mybatis常见问题

来源:互联网 发布:淘宝刷到单被骗咋追回 编辑:程序博客网 时间:2024/06/06 12:40

parameterType与parameterMap有什么区别? resultTyperesultMap有什么区别?

resultType:可以把结果自动映射到相应的JAVA类中,但无法指定输出字段的类型,会对性能产生轻微的影响。

resultMap:可以预先定义resultMap元素,可以控制数据如何从结果集中取出,以及哪个属性匹配哪个字段。

parameterType属性值是JAVA类的全限定名,目的是限制输入参数的类型为指定的JAVA类,如果不指定,任何带有合适属性(get/set方法)的JAVA BEAN都可以作为输入参数。

parameterMap:预先定义parameterMap的属性值,用于有次序的参数匹配JDBC符号。

<resultMap type="com.csii.ibs.common.ECif" id="loadCifInfoResult">          <result property="id" column="CIFNO" />          <result property="cifSeq" column="CIFSEQ" />          <result property="name" column="CIFNAME" />          <result property="status" column="CIFSTATE" />          <result property="bankSeq" column="BANKSEQ" />      </resultMap>    <select id="loadCifInfo"  resultMap="loadCifInfoResult" parameterType="java.util.HashMap">      select              a.CIFNO,              a.CIFSEQ,              a.CIFSTATE,              a.BANKSEQ,              a.BRANCHSEQ,                       from EBANKCIF a      </select>

<resultMap type="java.util.HashMap" id="loadUserInfoResult">      <result property="CifSeq" column="CIFSEQ" />      <result property="UserSeq" column="USERSEQ" />      <result property="UserId" column="USERID" />  </resultMap>  <select id="loadUserInfo"  resultMap="loadUserInfoResult" parameterType="java.util.HashMap">      select  a.CIFSEQ,                a.USERSEQ,                a.USERID                 from EUSER a  </select>  

自增主键:

<insert id="insert" parameterType="riskmCatalogDO" >      INSERT INTO riskm_catalog( id, title)  VALUES ( #id#, #title#)      <selectKey keyProperty="id" resultType="java.lang.Integer" order="AFTER">           <!--oracle-->           SELECT key_sequence.nextval() from dual           <!--mysql-->           SELECT last_insert_id() from dual      </selectKey></insert>

#和$区别:

1.   $中间的变量就是直接替换成值的,#会根据变量的类型来进行替换
       比如articleTitle的类型是string, 值是"标题"的时候
       $articleTitle$ = 标题
       #articleTitle# = '标题'
2.  $ 的作用实际上是字符串拼接 #用于变量替换
3.  对于一条简单的sql语句,例如:Select * from user where id=#id#,
    Ibatis会把sql预编译为select * from user where id=?
    $符号会把参数原样嵌入sql语句中而不进行预编译,这就使得有可能出现sql注入攻击。



0 0
原创粉丝点击