【MyBatis-03】几个注意点

xiaoxiao2021-02-28  126

通过上边两篇文章分别分析了执行过程,过程中使用到的对象及一个小demo,下面是对这两天涉及到的技术做一个总结。

主要是涉及到mapper的内容。

一、关于#{}和${}

1.#{}表示占位符?,#{}接收简单类型的参数时,里面的名称可以任意。

2.${}表示拼接符,${}接收简单类型的参数时,里面的名称必须是value

3.${}里面的值会原样输出,不加解析,如果该参数值是字符串,有不会添加引号。

4.${}存在sql注入的风险,但是有些场景下必须使用,比如排序后面会动态传入排序的列名。

二、关于parameterType和resultType 1.parameterType指定输入参数的java类型,parameterType只有一个,也就是说入参只有一个,该入参可以是任意的JAVA类型,所以不需要担心为什么只有一个。 2.resultType指定输出结果的单条的JAVA类型。

三、关于返回主键值

当ID采用int并且自增长时,通常需要返回主键,因为不返回程序是不知道的,往往我们下一步需要使用这个主键。

1.在<insert></insert>标签中,可以增加selectKey标签,具体如下图

<insert id="insertClass" parameterType="com.jumore.mybatisdemo01.pojo.ClassInfo"> <selectKey keyProperty="classid" order="AFTER" resultType="int"> SELECT LAST_INSERT_ID() </selectKey> INSERT INTO class_info(classname,classlocation,memo) VALUES(#{classname},#{classlocation},#{memo}) </insert>

2.<selectKey>中的  keyProperty是指的要获取的字段名称,order是针对下面的insert语句,当前语句是在其之前执行还是在之后执行,如果是自增型int,则为after,若为UUID,则为before,resultType是指selectKey中的SQL查询到的结果类型。

今天先写到这里,下一节我们讲基于dao和基于mapper的开发方式,

再后面分析下对应的源码

转载请注明原文地址: https://www.6miu.com/read-34650.html

最新回复(0)