通过上边两篇文章分别分析了执行过程,过程中使用到的对象及一个小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的开发方式,
再后面分析下对应的源码